Three.js: Fresnel Shader - изменение цвета или смешивание карт env

Я не специалист по шейдерам, но я бы хотел передать значение цвета шейдеру, который можно смешать с цветом карты env.

    var shader = THREE.FresnelShader;
// Thank you WestLangley for that trick
    var uniforms = THREE.UniformsUtils.merge( [

        THREE.UniformsLib[ "lights" ],
        shader.uniforms

    ] );

    uniforms[ "tCube" ].value = textureCube;

    var parameters = { fragmentShader: shader.fragmentShader, vertexShader: shader.vertexShader, uniforms: uniforms, lights : true };
    shaderMaterial = new THREE.ShaderMaterial( parameters );
    shaderMaterial.envMap = textureCube;

Я невежественен. Спасибо за любые предложения.

1 ответ

Для фьючерсов;) Вам нужно сначала изменить FresnelShader, передав цвет шейдеру. Послесловие во фрагменте Shader добавить строку:

vec4 color = vec4( colorR, colorG, colorB, 1); // colorR,G,B those are floats passed to the shader

и изменив эту строку:

gl_FragColor = mix( color, reflectedColor, clamp( vReflectionFactor, 0.0, 1.0 ) );

Вы можете отрегулировать преломленный цвет.

Другие вопросы по тегам