Skip to content

Commit fd1bddf

Browse files
WebGPURenderer: Remove inline functions in rendering methods. (#33108)
Co-authored-by: Michael Herzog <michael.herzog@human-interactive.org>
1 parent 8886ab6 commit fd1bddf

2 files changed

Lines changed: 162 additions & 147 deletions

File tree

src/renderers/webgl-fallback/WebGLBackend.js

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -982,6 +982,48 @@ class WebGLBackend extends Backend {
982982

983983
}
984984

985+
/**
986+
* Internal draw function.
987+
*
988+
* @private
989+
* @param {Object3D} object - The object to render.
990+
* @param {WebGLBufferRenderer} renderer - The internal renderer.
991+
* @param {number} firstVertex - The first vertex to render.
992+
* @param {number} vertexCount - The vertex count.
993+
* @param {number} instanceCount - The intance count.
994+
*/
995+
_draw( object, renderer, firstVertex, vertexCount, instanceCount ) {
996+
997+
if ( object.isBatchedMesh ) {
998+
999+
if ( object._multiDrawInstances !== null ) {
1000+
1001+
// @deprecated, r174
1002+
warnOnce( 'WebGLBackend: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' );
1003+
renderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );
1004+
1005+
} else if ( ! this.hasFeature( 'WEBGL_multi_draw' ) ) {
1006+
1007+
warnOnce( 'WebGLBackend: WEBGL_multi_draw not supported.' );
1008+
1009+
} else {
1010+
1011+
renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );
1012+
1013+
}
1014+
1015+
} else if ( instanceCount > 1 ) {
1016+
1017+
renderer.renderInstances( firstVertex, vertexCount, instanceCount );
1018+
1019+
} else {
1020+
1021+
renderer.render( firstVertex, vertexCount );
1022+
1023+
}
1024+
1025+
}
1026+
9851027
/**
9861028
* Executes a draw command for the given render object.
9871029
*
@@ -1119,38 +1161,6 @@ class WebGLBackend extends Backend {
11191161

11201162
}
11211163

1122-
const draw = () => {
1123-
1124-
if ( object.isBatchedMesh ) {
1125-
1126-
if ( object._multiDrawInstances !== null ) {
1127-
1128-
// @deprecated, r174
1129-
warnOnce( 'WebGLBackend: renderMultiDrawInstances has been deprecated and will be removed in r184. Append to renderMultiDraw arguments and use indirection.' );
1130-
renderer.renderMultiDrawInstances( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount, object._multiDrawInstances );
1131-
1132-
} else if ( ! this.hasFeature( 'WEBGL_multi_draw' ) ) {
1133-
1134-
warnOnce( 'WebGLBackend: WEBGL_multi_draw not supported.' );
1135-
1136-
} else {
1137-
1138-
renderer.renderMultiDraw( object._multiDrawStarts, object._multiDrawCounts, object._multiDrawCount );
1139-
1140-
}
1141-
1142-
} else if ( instanceCount > 1 ) {
1143-
1144-
renderer.renderInstances( firstVertex, vertexCount, instanceCount );
1145-
1146-
} else {
1147-
1148-
renderer.render( firstVertex, vertexCount );
1149-
1150-
}
1151-
1152-
};
1153-
11541164
if ( renderObject.camera.isArrayCamera === true && renderObject.camera.cameras.length > 0 && renderObject.camera.isMultiViewCamera === false ) {
11551165

11561166
const cameraData = this.get( renderObject.camera );
@@ -1250,7 +1260,7 @@ class WebGLBackend extends Backend {
12501260

12511261
state.bindBufferBase( gl.UNIFORM_BUFFER, cameraIndexData.index, cameraData.indexesGPU[ i ] );
12521262

1253-
draw();
1263+
this._draw( object, renderer, firstVertex, vertexCount, instanceCount );
12541264

12551265
}
12561266

@@ -1261,7 +1271,7 @@ class WebGLBackend extends Backend {
12611271

12621272
} else {
12631273

1264-
draw();
1274+
this._draw( object, renderer, firstVertex, vertexCount, instanceCount );
12651275

12661276
}
12671277

0 commit comments

Comments
 (0)