Skip to content

Commit 6daf300

Browse files
vegarringdalMugen87VegarRingdalAibel
authored
WebGLRenderer: option to enable multi_draw / gl_DrawID in vertex shader (#27630)
* feat: multi_draw / enable gl_DrawID * chore: remove space * chore: rename extensionMultidraw to extensionMultiDraw * chore: rename variable in extension * Update WebGLPrograms.js Clean up. * chore: update docs --------- Co-authored-by: Michael Herzog <[email protected]> Co-authored-by: Vegar Ringdal <[email protected]>
1 parent 6050a4c commit 6daf300

File tree

4 files changed

+7
-3
lines changed

4 files changed

+7
-3
lines changed

docs/api/en/materials/ShaderMaterial.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,7 @@ <h3>[property:Object extensions]</h3>
347347
drawBuffers: false, // set to use draw buffers
348348
shaderTextureLOD: false, // set to use shader texture LOD
349349
clipCullDistance: false // set to use vertex shader clipping
350+
multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
350351
};
351352
</code>
352353
</p>

src/materials/ShaderMaterial.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ class ShaderMaterial extends Material {
3737
fragDepth: false, // set to use fragment depth values
3838
drawBuffers: false, // set to use draw buffers
3939
shaderTextureLOD: false, // set to use shader texture LOD
40-
clipCullDistance: false // set to use vertex shader clipping
40+
clipCullDistance: false, // set to use vertex shader clipping
41+
multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
4142
};
4243

4344
// When rendered geometry doesn't include these attributes but the material does,

src/renderers/webgl/WebGLProgram.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,8 @@ function generateExtensions( parameters ) {
154154
function generateVertexExtensions( parameters ) {
155155

156156
const chunks = [
157-
parameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : ''
157+
parameters.extensionClipCullDistance ? '#extension GL_ANGLE_clip_cull_distance : require' : '',
158+
parameters.extensionMultiDraw ? '#extension GL_ANGLE_multi_draw : require' : '',
158159
];
159160

160161
return chunks.filter( filterEmptyLine ).join( '\n' );

src/renderers/webgl/WebGLPrograms.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
353353
extensionFragDepth: HAS_EXTENSIONS && material.extensions.fragDepth === true,
354354
extensionDrawBuffers: HAS_EXTENSIONS && material.extensions.drawBuffers === true,
355355
extensionShaderTextureLOD: HAS_EXTENSIONS && material.extensions.shaderTextureLOD === true,
356-
extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance && extensions.has( 'WEBGL_clip_cull_distance' ),
356+
extensionClipCullDistance: HAS_EXTENSIONS && material.extensions.clipCullDistance === true && extensions.has( 'WEBGL_clip_cull_distance' ),
357+
extensionMultiDraw: HAS_EXTENSIONS && material.extensions.multiDraw === true && extensions.has( 'WEBGL_multi_draw' ),
357358

358359
rendererExtensionFragDepth: IS_WEBGL2 || extensions.has( 'EXT_frag_depth' ),
359360
rendererExtensionDrawBuffers: IS_WEBGL2 || extensions.has( 'WEBGL_draw_buffers' ),

0 commit comments

Comments
 (0)