2013-08-04 87 views
0

我不是着色器專家,但我想將顏色值傳遞給可能與env貼圖顏色混合的着色器。Three.js:菲涅耳着色器 - 顏色變化或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。在fragmentShader後記添加一行:

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)); 

可以addjust折射顏色。