Explorar el Código

GPUComputationRenderer: update to work correctly with webXR (#24554)

* update to work correctly tone mapping and webXR

* adding semicolons

* disable shadow and outputEncoding during render
Pigloo hace 2 años
padre
commit
aacc489e62
Se han modificado 1 ficheros con 17 adiciones y 0 borrados
  1. 17 0
      examples/jsm/misc/GPUComputationRenderer.js

+ 17 - 0
examples/jsm/misc/GPUComputationRenderer.js

@@ -3,8 +3,10 @@ import {
 	ClampToEdgeWrapping,
 	ClampToEdgeWrapping,
 	DataTexture,
 	DataTexture,
 	FloatType,
 	FloatType,
+	LinearEncoding,
 	Mesh,
 	Mesh,
 	NearestFilter,
 	NearestFilter,
+	NoToneMapping,
 	PlaneGeometry,
 	PlaneGeometry,
 	RGBAFormat,
 	RGBAFormat,
 	Scene,
 	Scene,
@@ -395,11 +397,26 @@ class GPUComputationRenderer {
 
 
 			const currentRenderTarget = renderer.getRenderTarget();
 			const currentRenderTarget = renderer.getRenderTarget();
 
 
+			const currentXrEnabled = renderer.xr.enabled;
+			const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
+			const currentOutputEncoding = renderer.outputEncoding;
+			const currentToneMapping = renderer.toneMapping;
+
+			renderer.xr.enabled = false; // Avoid camera modification
+			renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows
+			renderer.outputEncoding = LinearEncoding;
+			renderer.toneMapping = NoToneMapping;
+
 			mesh.material = material;
 			mesh.material = material;
 			renderer.setRenderTarget( output );
 			renderer.setRenderTarget( output );
 			renderer.render( scene, camera );
 			renderer.render( scene, camera );
 			mesh.material = passThruShader;
 			mesh.material = passThruShader;
 
 
+			renderer.xr.enabled = currentXrEnabled;
+			renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
+			renderer.outputEncoding = currentOutputEncoding;
+			renderer.toneMapping = currentToneMapping;
+
 			renderer.setRenderTarget( currentRenderTarget );
 			renderer.setRenderTarget( currentRenderTarget );
 
 
 		};
 		};