|
@@ -110,6 +110,7 @@ THREE.ShaderSkin = {
|
|
|
|
|
|
"varying vec3 vViewPosition;",
|
|
"varying vec3 vViewPosition;",
|
|
|
|
|
|
|
|
+ THREE.ShaderChunk[ "common" ],
|
|
THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
|
|
THREE.ShaderChunk[ "shadowmap_pars_fragment" ],
|
|
THREE.ShaderChunk[ "fog_pars_fragment" ],
|
|
THREE.ShaderChunk[ "fog_pars_fragment" ],
|
|
THREE.ShaderChunk[ "bumpmap_pars_fragment" ],
|
|
THREE.ShaderChunk[ "bumpmap_pars_fragment" ],
|
|
@@ -230,9 +231,7 @@ THREE.ShaderSkin = {
|
|
|
|
|
|
"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {",
|
|
"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {",
|
|
|
|
|
|
- "vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );",
|
|
|
|
-
|
|
|
|
- "vec3 dirVector = normalize( lDirection.xyz );",
|
|
|
|
|
|
+ "vec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );",
|
|
|
|
|
|
"float dirDiffuseWeightFull = max( dot( normal, dirVector ), 0.0 );",
|
|
"float dirDiffuseWeightFull = max( dot( normal, dirVector ), 0.0 );",
|
|
"float dirDiffuseWeightHalf = max( 0.5 * dot( normal, dirVector ) + 0.5, 0.0 );",
|
|
"float dirDiffuseWeightHalf = max( 0.5 * dot( normal, dirVector ) + 0.5, 0.0 );",
|
|
@@ -255,8 +254,7 @@ THREE.ShaderSkin = {
|
|
|
|
|
|
"for ( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {",
|
|
"for ( int i = 0; i < MAX_HEMI_LIGHTS; i ++ ) {",
|
|
|
|
|
|
- "vec4 lDirection = viewMatrix * vec4( hemisphereLightDirection[ i ], 0.0 );",
|
|
|
|
- "vec3 lVector = normalize( lDirection.xyz );",
|
|
|
|
|
|
+ "vec3 lVector = transformDirection( hemisphereLightDirection[ i ], viewMatrix );",
|
|
|
|
|
|
"float dotProduct = dot( normal, lVector );",
|
|
"float dotProduct = dot( normal, lVector );",
|
|
"float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;",
|
|
"float hemiDiffuseWeight = 0.5 * dotProduct + 0.5;",
|
|
@@ -430,6 +428,7 @@ THREE.ShaderSkin = {
|
|
|
|
|
|
"varying vec3 vViewPosition;",
|
|
"varying vec3 vViewPosition;",
|
|
|
|
|
|
|
|
+ THREE.ShaderChunk[ "common" ],
|
|
THREE.ShaderChunk[ "fog_pars_fragment" ],
|
|
THREE.ShaderChunk[ "fog_pars_fragment" ],
|
|
|
|
|
|
"float fresnelReflectance( vec3 H, vec3 V, float F0 ) {",
|
|
"float fresnelReflectance( vec3 H, vec3 V, float F0 ) {",
|
|
@@ -526,9 +525,7 @@ THREE.ShaderSkin = {
|
|
|
|
|
|
"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {",
|
|
"for( int i = 0; i < MAX_DIR_LIGHTS; i++ ) {",
|
|
|
|
|
|
- "vec4 lDirection = viewMatrix * vec4( directionalLightDirection[ i ], 0.0 );",
|
|
|
|
-
|
|
|
|
- "vec3 dirVector = normalize( lDirection.xyz );",
|
|
|
|
|
|
+ "vec3 dirVector = transformDirection( directionalLightDirection[ i ], viewMatrix );",
|
|
|
|
|
|
"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );",
|
|
"float dirDiffuseWeight = max( dot( normal, dirVector ), 0.0 );",
|
|
|
|
|