Преглед на файлове

WebGPURenderer: Fix render pipeline selection. (#24373)

Michael Herzog преди 3 години
родител
ревизия
b15c181d33

+ 2 - 11
examples/jsm/renderers/webgpu/WebGPURenderPipeline.js

@@ -1,4 +1,4 @@
-import { GPUPrimitiveTopology, GPUIndexFormat, GPUCompareFunction, GPUFrontFace, GPUCullMode, GPUVertexFormat, GPUBlendFactor, GPUBlendOperation, BlendColorFactor, OneMinusBlendColorFactor, GPUColorWriteFlags, GPUStencilOperation, GPUInputStepMode } from './constants.js';
+import { GPUIndexFormat, GPUCompareFunction, GPUFrontFace, GPUCullMode, GPUVertexFormat, GPUBlendFactor, GPUBlendOperation, BlendColorFactor, OneMinusBlendColorFactor, GPUColorWriteFlags, GPUStencilOperation, GPUInputStepMode } from './constants.js';
 import {
 import {
 	FrontSide, BackSide, DoubleSide,
 	FrontSide, BackSide, DoubleSide,
 	NeverDepth, AlwaysDepth, LessDepth, LessEqualDepth, EqualDepth, GreaterEqualDepth, GreaterDepth, NotEqualDepth,
 	NeverDepth, AlwaysDepth, LessDepth, LessEqualDepth, EqualDepth, GreaterEqualDepth, GreaterDepth, NotEqualDepth,
@@ -430,7 +430,7 @@ class WebGPURenderPipeline {
 
 
 		const descriptor = {};
 		const descriptor = {};
 
 
-		descriptor.topology = this._getPrimitiveTopology( object );
+		descriptor.topology = this._renderer.getPrimitiveTopology( object );
 
 
 		if ( object.isLine === true && object.isLineSegments !== true ) {
 		if ( object.isLine === true && object.isLineSegments !== true ) {
 
 
@@ -467,15 +467,6 @@ class WebGPURenderPipeline {
 
 
 	}
 	}
 
 
-	_getPrimitiveTopology( object ) {
-
-		if ( object.isMesh ) return GPUPrimitiveTopology.TriangleList;
-		else if ( object.isPoints ) return GPUPrimitiveTopology.PointList;
-		else if ( object.isLineSegments ) return GPUPrimitiveTopology.LineList;
-		else if ( object.isLine ) return GPUPrimitiveTopology.LineStrip;
-
-	}
-
 	_getStencilCompare( material ) {
 	_getStencilCompare( material ) {
 
 
 		let stencilCompare;
 		let stencilCompare;

+ 2 - 1
examples/jsm/renderers/webgpu/WebGPURenderPipelines.js

@@ -153,7 +153,8 @@ class WebGPURenderPipelines {
 			material.stencilFuncMask, material.stencilWriteMask,
 			material.stencilFuncMask, material.stencilWriteMask,
 			material.side,
 			material.side,
 			this.sampleCount,
 			this.sampleCount,
-			renderer.getCurrentEncoding(), renderer.getCurrentColorFormat(), renderer.getCurrentDepthStencilFormat()
+			renderer.getCurrentEncoding(), renderer.getCurrentColorFormat(), renderer.getCurrentDepthStencilFormat(),
+			renderer.getPrimitiveTopology( object )
 		];
 		];
 
 
 		return parameters.join();
 		return parameters.join();

+ 10 - 1
examples/jsm/renderers/webgpu/WebGPURenderer.js

@@ -1,4 +1,4 @@
-import { GPUIndexFormat, GPUTextureFormat, GPUStoreOp } from './constants.js';
+import { GPUIndexFormat, GPUTextureFormat, GPUStoreOp, GPUPrimitiveTopology } from './constants.js';
 import WebGPUObjects from './WebGPUObjects.js';
 import WebGPUObjects from './WebGPUObjects.js';
 import WebGPUAttributes from './WebGPUAttributes.js';
 import WebGPUAttributes from './WebGPUAttributes.js';
 import WebGPUGeometries from './WebGPUGeometries.js';
 import WebGPUGeometries from './WebGPUGeometries.js';
@@ -531,6 +531,15 @@ class WebGPURenderer {
 
 
 	}
 	}
 
 
+	getPrimitiveTopology( object ) {
+
+		if ( object.isMesh ) return GPUPrimitiveTopology.TriangleList;
+		else if ( object.isPoints ) return GPUPrimitiveTopology.PointList;
+		else if ( object.isLineSegments ) return GPUPrimitiveTopology.LineList;
+		else if ( object.isLine ) return GPUPrimitiveTopology.LineStrip;
+
+	}
+
 	getClearColor( target ) {
 	getClearColor( target ) {
 
 
 		return target.copy( this._clearColor );
 		return target.copy( this._clearColor );