소스 검색

DenoiseNode: Retain unprocessed input values. (#28882)

Michael Herzog 1 년 전
부모
커밋
e002b70c3d
1개의 변경된 파일20개의 추가작업 그리고 5개의 파일을 삭제
  1. 20 5
      src/nodes/display/DenoiseNode.js

+ 20 - 5
src/nodes/display/DenoiseNode.js

@@ -84,15 +84,19 @@ class DenoiseNode extends TempNode {
 
 		} );
 
-		const denoise = tslFn( () => {
+		const denoise = tslFn( ( [ uvNode ] ) => {
 
 			const depth = sampleDepth( uvNode );
 			const viewNormal = sampleNormal( uvNode ).rgb.normalize();
 
-			depth.greaterThanEqual( 1.0 ).discard();
-			dot( viewNormal, viewNormal ).equal( 0.0 ).discard();
-
 			const texel = sampleTexture( uvNode );
+
+			If( depth.greaterThanEqual( 1.0 ).or( dot( viewNormal, viewNormal ).equal( 0.0 ) ), () => {
+
+				return texel;
+
+			} );
+
 			const center = vec3( texel.rgb );
 
 			const viewPosition = getViewPosition( uvNode, depth );
@@ -132,10 +136,21 @@ class DenoiseNode extends TempNode {
 
 			return vec4( denoised, 1.0 );
 
+		} ).setLayout( {
+			name: 'denoise',
+			type: 'vec4',
+			inputs: [
+				{ name: 'uv', type: 'vec2' }
+			]
+		} );
+
+		const output = tslFn( () => {
+
+			return denoise( uvNode );
 
 		} );
 
-		const outputNode = denoise();
+		const outputNode = output();
 
 		return outputNode;