提交 3be2c266 编写于 作者: A alteredq

Simplified bumpmap shader for deferred normal pass.

上级 2fb5db39
......@@ -110,42 +110,7 @@ THREE.ShaderDeferred = {
"varying vec2 vUv;",
"varying vec3 vViewPosition;",
"uniform sampler2D bumpMap;",
"uniform float bumpScale;",
// Derivative maps - bump mapping unparametrized surfaces by Morten Mikkelsen
// http://mmikkelsen3d.blogspot.sk/2011/07/derivative-maps.html
// Evaluate the derivative of the height w.r.t. screen-space using forward differencing (listing 2)
"vec2 dHdxy_fwd() {",
"vec2 dSTdx = dFdx( vUv );",
"vec2 dSTdy = dFdy( vUv );",
"float Hll = bumpScale * texture2D( bumpMap, vUv ).x;",
"float dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;",
"float dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;",
"return vec2( dBx, dBy );",
"}",
"vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {",
"vec3 vSigmaX = dFdx( surf_pos );",
"vec3 vSigmaY = dFdy( surf_pos );",
"vec3 vN = surf_norm;", // normalized
"vec3 R1 = cross( vSigmaY, vN );",
"vec3 R2 = cross( vN, vSigmaX );",
"float fDet = dot( vSigmaX, R1 );",
"vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );",
"return normalize( abs( fDet ) * surf_norm - vGrad );",
"}",
THREE.ShaderChunk[ "bumpmap_pars_fragment" ],
"void main() {",
......
......@@ -388,7 +388,8 @@
uniforms: uniforms,
vertexShader: bumpShader.vertexShader,
fragmentShader: bumpShader.fragmentShader
fragmentShader: bumpShader.fragmentShader,
defines: { "USE_BUMPMAP": true }
} );
......
......@@ -378,7 +378,8 @@
uniforms: uniforms,
vertexShader: bumpShader.vertexShader,
fragmentShader: bumpShader.fragmentShader
fragmentShader: bumpShader.fragmentShader,
defines: { "USE_BUMPMAP": true }
} );
uniforms.bumpMap.value = node.material.bumpMap;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册