2
0
Эх сурвалжийг харах

WebGLRenderer: Transmission code clean up.

Mr.doob 4 жил өмнө
parent
commit
00147d9d6b

+ 4 - 2
src/renderers/WebGLRenderer.js

@@ -167,7 +167,6 @@ function WebGLRenderer( parameters ) {
 	// transmission
 
 	let _transmissionRenderTarget = null;
-	const _transmissionSamplerSize = new Vector2( 1024, 1024 ); // Should be configurable?
 
 	// camera matrices cache
 
@@ -1268,7 +1267,7 @@ function WebGLRenderer( parameters ) {
 
 		if ( _transmissionRenderTarget === null ) {
 
-			_transmissionRenderTarget = new WebGLRenderTarget( _transmissionSamplerSize.x, _transmissionSamplerSize.y, {
+			_transmissionRenderTarget = new WebGLRenderTarget( 1024, 1024, {
 				generateMipmaps: true,
 				minFilter: LinearMipmapLinearFilter,
 				magFilter: NearestFilter,
@@ -1281,8 +1280,11 @@ function WebGLRenderer( parameters ) {
 		const currentRenderTarget = _this.getRenderTarget();
 		_this.setRenderTarget( _transmissionRenderTarget );
 		_this.clear();
+
 		renderObjects( opaqueObjects, scene, camera );
+
 		textures.updateRenderTargetMipmap( _transmissionRenderTarget );
+
 		_this.setRenderTarget( currentRenderTarget );
 
 		renderObjects( transmissiveObjects, scene, camera );

+ 12 - 4
src/renderers/webgl/WebGLRenderLists.js

@@ -117,13 +117,17 @@ function WebGLRenderList( properties ) {
 
 		const renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
 
-		if ( material.transmission !== undefined && material.transmission > 0.0 ) {
+		if ( material.transmission > 0.0 ) {
 
 			transmissive.push( renderItem );
 
+		} else if ( material.transparent === true ) {
+
+			transparent.push( renderItem );
+
 		} else {
 
-			( material.transparent === true ? transparent : opaque ).push( renderItem );
+			opaque.push( renderItem );
 
 		}
 
@@ -133,13 +137,17 @@ function WebGLRenderList( properties ) {
 
 		const renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );
 
-		if ( material.transmission !== undefined && material.transmission > 0.0 ) {
+		if ( material.transmission > 0.0 ) {
 
 			transmissive.unshift( renderItem );
 
+		} else if ( material.transparent === true ) {
+
+			transparent.unshift( renderItem );
+
 		} else {
 
-			( material.transparent === true ? transparent : opaque ).unshift( renderItem );
+			opaque.unshift( renderItem );
 
 		}