Kaynağa Gözat

WebGPURenderer: Fix VSM shadow artifacts. (#32327)

mrdoob 6 ay önce
ebeveyn
işleme
e3be204eb5
1 değiştirilmiş dosya ile 2 ekleme ve 2 silme
  1. 2 2
      src/nodes/lighting/ShadowNode.js

+ 2 - 2
src/nodes/lighting/ShadowNode.js

@@ -123,7 +123,7 @@ const VSMPassVertical = /*@__PURE__*/ Fn( ( { samples, radius, size, shadowPass,
 	mean.divAssign( samples );
 	mean.divAssign( samples );
 	squaredMean.divAssign( samples );
 	squaredMean.divAssign( samples );
 
 
-	const std_dev = sqrt( squaredMean.sub( mean.mul( mean ) ) );
+	const std_dev = sqrt( squaredMean.sub( mean.mul( mean ) ).max( 0 ) );
 	return vec2( mean, std_dev );
 	return vec2( mean, std_dev );
 
 
 } );
 } );
@@ -168,7 +168,7 @@ const VSMPassHorizontal = /*@__PURE__*/ Fn( ( { samples, radius, size, shadowPas
 	mean.divAssign( samples );
 	mean.divAssign( samples );
 	squaredMean.divAssign( samples );
 	squaredMean.divAssign( samples );
 
 
-	const std_dev = sqrt( squaredMean.sub( mean.mul( mean ) ) );
+	const std_dev = sqrt( squaredMean.sub( mean.mul( mean ) ).max( 0 ) );
 	return vec2( mean, std_dev );
 	return vec2( mean, std_dev );
 
 
 } );
 } );

粤ICP备19079148号