Przeglądaj źródła

WebGPURenderer: Fix `getShaderAsync()` render context retrieval (#33733)

sunag 1 tydzień temu
rodzic
commit
168fb81537

+ 4 - 0
examples/webgpu_tsl_editor.html

@@ -184,6 +184,8 @@ output = vec4( finalColor, opacity );
 
 							compiling = true;
 
+							mesh.visible = false;
+
 							if ( options.output === 'WGSL' ) {
 
 								rawShader = await renderer.debug.getShaderAsync( scene, camera, mesh );
@@ -195,6 +197,8 @@ output = vec4( finalColor, opacity );
 
 							}
 
+							mesh.visible = true;
+
 							compiling = false;
 
 							showCode();

+ 5 - 2
src/renderers/common/Renderer.js

@@ -737,10 +737,13 @@ class Renderer {
 			onShaderError: null,
 			getShaderAsync: async ( scene, camera, object ) => {
 
-				await this.compileAsync( scene, camera );
+				await this.compileAsync( object, camera, scene );
+
+				const useFrameBufferTarget = this.needsFrameBufferTarget && this._renderTarget === null;
+				const renderTarget = useFrameBufferTarget ? this._getFrameBufferTarget() : ( this._renderTarget || this._outputRenderTarget );
 
 				const renderList = this._renderLists.get( scene, camera );
-				const renderContext = this._renderContexts.get( this._renderTarget, this._mrt );
+				const renderContext = this._renderContexts.get( renderTarget, this._mrt );
 
 				const material = scene.overrideMaterial || object.material;
 

粤ICP备19079148号