Skip to content

Commit e4b8f3d

Browse files
authored
WebGLRenderer: Add support for uv3 and uv4. (#25788)
* WebGLRenderer: Add support for uv3 and uv4. * GLTFLoader: Add support for TEXCOORD_2 and TEXCOORD_3.
1 parent 8be4325 commit e4b8f3d

File tree

4 files changed

+35
-6
lines changed

4 files changed

+35
-6
lines changed

examples/jsm/loaders/GLTFLoader.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2032,6 +2032,8 @@ const ATTRIBUTES = {
20322032
TANGENT: 'tangent',
20332033
TEXCOORD_0: 'uv',
20342034
TEXCOORD_1: 'uv2',
2035+
TEXCOORD_2: 'uv3',
2036+
TEXCOORD_3: 'uv4',
20352037
COLOR_0: 'color',
20362038
WEIGHTS_0: 'skinWeight',
20372039
JOINTS_0: 'skinIndex',

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,6 @@ export default /* glsl */`
33
44
varying vec2 vUv;
55
6-
#endif
7-
#ifdef USE_UV2
8-
9-
attribute vec2 uv2;
10-
116
#endif
127
#ifdef USE_MAP
138

src/renderers/webgl/WebGLProgram.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
528528
parameters.vertexColors ? '#define USE_COLOR' : '',
529529
parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
530530
parameters.vertexUvs2 ? '#define USE_UV2' : '',
531+
parameters.vertexUvs3 ? '#define USE_UV3' : '',
532+
parameters.vertexUvs4 ? '#define USE_UV4' : '',
531533

532534
parameters.pointsUvs ? '#define USE_POINTS_UV' : '',
533535

@@ -576,6 +578,24 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
576578
'attribute vec3 normal;',
577579
'attribute vec2 uv;',
578580

581+
'#ifdef USE_UV2',
582+
583+
' attribute vec2 uv2;',
584+
585+
'#endif',
586+
587+
'#ifdef USE_UV3',
588+
589+
' attribute vec2 uv3;',
590+
591+
'#endif',
592+
593+
'#ifdef USE_UV4',
594+
595+
' attribute vec2 uv4;',
596+
597+
'#endif',
598+
579599
'#ifdef USE_TANGENT',
580600

581601
' attribute vec4 tangent;',
@@ -689,6 +709,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
689709
parameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',
690710
parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
691711
parameters.vertexUvs2 ? '#define USE_UV2' : '',
712+
parameters.vertexUvs3 ? '#define USE_UV3' : '',
713+
parameters.vertexUvs4 ? '#define USE_UV4' : '',
692714

693715
parameters.pointsUvs ? '#define USE_POINTS_UV' : '',
694716

src/renderers/webgl/WebGLPrograms.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
3838
function getChannel( value ) {
3939

4040
if ( value === 1 ) return 'uv2';
41+
if ( value === 2 ) return 'uv3';
42+
if ( value === 3 ) return 'uv4';
4143

4244
return 'uv';
4345

@@ -152,6 +154,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
152154
const HAS_EXTENSIONS = !! material.extensions;
153155

154156
const HAS_ATTRIBUTE_UV2 = !! geometry.attributes.uv2;
157+
const HAS_ATTRIBUTE_UV3 = !! geometry.attributes.uv3;
158+
const HAS_ATTRIBUTE_UV4 = !! geometry.attributes.uv4;
155159

156160
const parameters = {
157161

@@ -264,6 +268,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
264268
vertexColors: material.vertexColors,
265269
vertexAlphas: material.vertexColors === true && !! geometry.attributes.color && geometry.attributes.color.itemSize === 4,
266270
vertexUvs2: HAS_ATTRIBUTE_UV2,
271+
vertexUvs3: HAS_ATTRIBUTE_UV3,
272+
vertexUvs4: HAS_ATTRIBUTE_UV4,
267273

268274
pointsUvs: object.isPoints === true && !! geometry.attributes.uv && ( HAS_MAP || HAS_ALPHAMAP ),
269275

@@ -457,8 +463,12 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
457463
_programLayers.enable( 12 );
458464
if ( parameters.vertexUvs2 )
459465
_programLayers.enable( 13 );
460-
if ( parameters.vertexTangents )
466+
if ( parameters.vertexUvs3 )
461467
_programLayers.enable( 14 );
468+
if ( parameters.vertexUvs4 )
469+
_programLayers.enable( 15 );
470+
if ( parameters.vertexTangents )
471+
_programLayers.enable( 16 );
462472

463473
array.push( _programLayers.mask );
464474
_programLayers.disableAll();

0 commit comments

Comments
 (0)