Skip to content

Commit 014653f

Browse files
committed
GLTFLoader: Corrections to normalscale.
1 parent af020fd commit 014653f

File tree

2 files changed

+8
-12
lines changed

2 files changed

+8
-12
lines changed

examples/js/loaders/GLTFLoader.js

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2204,11 +2204,13 @@ THREE.GLTFLoader = ( function () {
22042204

22052205
pending.push( parser.assignTexture( material, 'normal', materialDef.normalTexture.index ) );
22062206

2207-
material.normalScale = new THREE.FloatNode( 1.0 );
2207+
// Normal map textures use OpenGL conventions:
2208+
// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materialnormaltexture
2209+
material.normalScale = new THREE.Vector2Node( 1.0, -1.0 );
22082210

22092211
if ( materialDef.normalTexture.scale !== undefined ) {
22102212

2211-
material.normalScale.value = materialDef.normalTexture.scale;
2213+
material.normalScale.value.multiplyScalar( materialDef.normalTexture.scale );
22122214

22132215
}
22142216

@@ -2246,14 +2248,6 @@ THREE.GLTFLoader = ( function () {
22462248

22472249
if ( materialDef.name !== undefined ) material.name = materialDef.name;
22482250

2249-
// Normal map textures use OpenGL conventions:
2250-
// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materialnormaltexture
2251-
// if ( material.normalScale ) {
2252-
2253-
// material.normalScale.y = - material.normalScale.y;
2254-
2255-
// }
2256-
22572251
if ( materialDef.extras ) material.userData = materialDef.extras;
22582252

22592253
if ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );

examples/js/nodes/NodeLib.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,10 @@ THREE.NodeLib.add( new THREE.FunctionNode( [
141141
" vec3 q1 = dFdy( eye_pos );",
142142
" vec2 st0 = dFdx( mUv.st );",
143143
" vec2 st1 = dFdy( mUv.st );",
144-
" vec3 S = normalize( q0 * st1.t - q1 * st0.t );",
145-
" vec3 T = normalize( -q0 * st1.s + q1 * st0.s );",
144+
" float factor = sign( st1.t * st0.s - st0.t * st1.s );",
145+
" factor *= float( gl_FrontFacing ) * 2.0 - 1.0;",
146+
" vec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * factor );",
147+
" vec3 T = normalize( ( -q0 * st1.s + q1 * st0.s ) * factor );",
146148
" vec3 N = normalize( surf_norm );",
147149
" vec3 mapN = map * 2.0 - 1.0;",
148150
" mapN.xy = scale * mapN.xy;",

0 commit comments

Comments
 (0)