OSDN Git Service

three.jsをThirdPartyに追加
[webglgame/webgl_framework.git] / webglFramework / Thirdparty / three.js-master / src / renderers / shaders / ShaderChunk / normalmap_pars_fragment.glsl
1 #ifdef USE_NORMALMAP
2
3         uniform sampler2D normalMap;
4         uniform vec2 normalScale;
5
6         // Per-Pixel Tangent Space Normal Mapping
7         // http://hacksoflife.blogspot.ch/2009/11/per-pixel-tangent-space-normal-mapping.html
8
9         vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {
10
11                 // Workaround for Adreno 3XX dFd*( vec3 ) bug. See #9988
12
13                 vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );
14                 vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );
15                 vec2 st0 = dFdx( vUv.st );
16                 vec2 st1 = dFdy( vUv.st );
17
18                 vec3 S = normalize( q0 * st1.t - q1 * st0.t );
19                 vec3 T = normalize( -q0 * st1.s + q1 * st0.s );
20                 vec3 N = normalize( surf_norm );
21
22                 vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;
23                 mapN.xy = normalScale * mapN.xy;
24                 mat3 tsn = mat3( S, T, N );
25                 return normalize( tsn * mapN );
26
27         }
28
29 #endif