Вопросы

435
1
Я попросту не могу понять шейдеры. Если у вас есть доступные гайды по подгрузке шейдеров - скиньте(если не трудно).
 
2,955
12
Майновские шейдеры != обычные. Если знаешь C или C++,  писать шейдеры на GLSL будет не сложно. А подключать их тоже просто, куча примеров. Правда на C++, но переписать будет не сложно.
 
503
3
Код:
#version 120

uniform sampler2D DiffuseSampler;

varying vec2 texCoord;
varying vec2 oneTexel;

void main(){
    vec4 c  = texture2D (DiffuseSampler, texCoord);
    vec4 u1 = texture2D (DiffuseSampler, texCoord + vec2 (              0.0, -oneTexel.y      ));
    vec4 u2 = texture2D (DiffuseSampler, texCoord + vec2 (              0.0, -oneTexel.y * 2.0));
    vec4 d1 = texture2D (DiffuseSampler, texCoord + vec2 (              0.0,  oneTexel.y      ));
    vec4 d2 = texture2D (DiffuseSampler, texCoord + vec2 (              0.0,  oneTexel.y * 2.0));
    vec4 l1 = texture2D (DiffuseSampler, texCoord + vec2 (-oneTexel.x,                     0.0));
    vec4 l2 = texture2D (DiffuseSampler, texCoord + vec2 (-oneTexel.x * 2.0,               0.0));
    vec4 r1 = texture2D (DiffuseSampler, texCoord + vec2 ( oneTexel.x,                     0.0));
    vec4 r2 = texture2D (DiffuseSampler, texCoord + vec2 ( oneTexel.x * 2.0,               0.0));
    
    vec4 v1 = mix (c, mix (l1, l2, 0.667), 0.75);
    vec4 v2 = mix (c, mix (r1, r2, 0.667), 0.75);
    vec4 v3 = mix (c, mix (u1, u2, 0.667), 0.75);
    vec4 v4 = mix (c, mix (d1, d2, 0.667), 0.75);

    vec4 v5 = mix (v1, v2, 0.5);
    vec4 v6 = mix (v3, v4, 0.5);

    vec4 color = mix (v5, v6, 0.5);
    gl_FragColor = vec4(color.rgb, c.a);
}

Код:
{
    "blend": {
        "func": "add",
        "srcrgb": "one",
        "dstrgb": "zero"
    },
    "vertex": "blobs",
    "fragment": "antialias",
    "attributes": [ "Position" ],
    "samplers": [
        { "name": "DiffuseSampler" }
    ],
    "uniforms": [
        { "name": "ProjMat",   "type": "matrix4x4", "count": 16, "values": [ 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0 ] },
        { "name": "InSize",    "type": "float",     "count": 2,  "values": [ 1.0, 1.0 ] },
        { "name": "OutSize",   "type": "float",     "count": 2,  "values": [ 1.0, 1.0 ] }
    ]
}

Кроме JSON ничего специального не вижу
 
808
3
124
JSON тут никоим боком не часть шейдера, лул. По нему генерируется код, который передает параметры в шейдер. Не вижу никакой необходимости в использовании подобных ухищрений. Да и шейдер, мягко говоря, странный, лучше бы дал пару из вершинного + фрагментного шейдера для отрисовки текстурированных полигонов с диффузным светом, было бы полезнее и понятнее.
 
Сверху