Skip to content

Commit 740dd76

Browse files
authored
WebGLRenderer: Implement normal bias fallback. (#33391)
1 parent f3fa844 commit 740dd76

4 files changed

Lines changed: 16 additions & 2 deletions

File tree

-137 Bytes
Loading

src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,18 @@ export default /* glsl */`
22
33
#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )
44
5-
// Offsetting the position used for querying occlusion along the world normal can be used to reduce shadow acne.
6-
vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
5+
#ifdef HAS_NORMAL
6+
7+
// Offsetting the position used for querying occlusion along the world normal can be used to reduce shadow acne.
8+
9+
vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
10+
11+
#else
12+
13+
vec3 shadowWorldNormal = vec3( 0.0 ); // fallback, see #21483
14+
15+
#endif
16+
717
vec4 shadowWorldPosition;
818
919
#endif

src/renderers/webgl/WebGLProgram.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
563563
//
564564

565565
parameters.vertexTangents && parameters.flatShading === false ? '#define USE_TANGENT' : '',
566+
parameters.vertexNormals ? '#define HAS_NORMAL' : '',
566567
parameters.vertexColors ? '#define USE_COLOR' : '',
567568
parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
568569
parameters.vertexUv1s ? '#define USE_UV1' : '',

src/renderers/webgl/WebGLPrograms.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,7 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
301301
//
302302

303303
vertexTangents: !! geometry.attributes.tangent && ( HAS_NORMALMAP || HAS_ANISOTROPY ),
304+
vertexNormals: !! geometry.attributes.normal,
304305
vertexColors: material.vertexColors,
305306
vertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,
306307

@@ -530,6 +531,8 @@ function WebGLPrograms( renderer, environments, extensions, capabilities, bindin
530531
_programLayers.enable( 21 );
531532
if ( parameters.packedNormalMap )
532533
_programLayers.enable( 22 );
534+
if ( parameters.vertexNormals )
535+
_programLayers.enable( 23 );
533536

534537
array.push( _programLayers.mask );
535538
_programLayers.disableAll();

0 commit comments

Comments
 (0)