瀏覽代碼

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;