Przeglądaj źródła

Lensflare: Better RTT support. (#26886)

Michael Herzog 1 rok temu
rodzic
commit
c00b168487
1 zmienionych plików z 17 dodań i 0 usunięć
  1. 17 0
      examples/jsm/objects/Lensflare.js

+ 17 - 0
examples/jsm/objects/Lensflare.js

@@ -9,6 +9,7 @@ import {
 	Mesh,
 	Mesh,
 	MeshBasicMaterial,
 	MeshBasicMaterial,
 	RawShaderMaterial,
 	RawShaderMaterial,
+	UnsignedByteType,
 	Vector2,
 	Vector2,
 	Vector3,
 	Vector3,
 	Vector4
 	Vector4
@@ -36,6 +37,8 @@ class Lensflare extends Mesh {
 		const tempMap = new FramebufferTexture( 16, 16 );
 		const tempMap = new FramebufferTexture( 16, 16 );
 		const occlusionMap = new FramebufferTexture( 16, 16 );
 		const occlusionMap = new FramebufferTexture( 16, 16 );
 
 
+		let currentType = UnsignedByteType;
+
 		// material
 		// material
 
 
 		const geometry = Lensflare.Geometry;
 		const geometry = Lensflare.Geometry;
@@ -162,6 +165,20 @@ class Lensflare extends Mesh {
 
 
 			renderer.getCurrentViewport( viewport );
 			renderer.getCurrentViewport( viewport );
 
 
+			const renderTarget = renderer.getRenderTarget();
+			const type = ( renderTarget !== null ) ? renderTarget.texture.type : UnsignedByteType;
+
+			if ( currentType !== type ) {
+
+				tempMap.dispose();
+				occlusionMap.dispose();
+
+				tempMap.type = occlusionMap.type = type;
+
+				currentType = type;
+
+			}
+
 			const invAspect = viewport.w / viewport.z;
 			const invAspect = viewport.w / viewport.z;
 			const halfViewportWidth = viewport.z / 2.0;
 			const halfViewportWidth = viewport.z / 2.0;
 			const halfViewportHeight = viewport.w / 2.0;
 			const halfViewportHeight = viewport.w / 2.0;