ThreeJS Shader Динамическая текстура - PullRequest
0 голосов
/ 10 октября 2018

У меня есть этот код шейдера ниже.Я хочу добавить новую униформу для другой текстуры и сделать так, чтобы она применялась к вершинам, которые делятся на 4.

uniform vec3 color;
uniform sampler2D texture;

varying vec4 vColor;

void main() {

    vec4 outColor = texture2D( texture, gl_PointCoord );

    if ( outColor.a < 0.5 ) discard;

    gl_FragColor = outColor * vec4( color * vColor.xyz, 0.5 );

    float depth = gl_FragCoord.z / gl_FragCoord.w;
    const vec3 fogColor = vec3( 0.0 );

    float fogFactor = smoothstep( 200.0, 600.0, depth );
    gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );
}

Я хочу добавить условие что-то вроде index % 4 === 0 ? firstTexture : secondTexture, но я делаюНе знаю, как получить индекс вершины и выполнить оператор по модулю на языке шейдеров.

1 Ответ

0 голосов
/ 10 октября 2018

WebGL GLSL не предоставляет индекс вершины, поэтому вам придется предоставлять эти данные вручную.Для получения дополнительной информации см. этот вопрос .

Оператор модуля в GLSL представляет собой функцию с именем mod () .

...