Просмотр исходного кода

`WebGPURenderer`: Fix normal didn't consider `faceDirection` (#27774)

susiwen8 1 год назад
Родитель
Сommit
2ab2277a71
1 измененных файлов с 3 добавлено и 2 удалено
  1. 3 2
      examples/jsm/nodes/materials/NodeMaterial.js

+ 3 - 2
examples/jsm/nodes/materials/NodeMaterial.js

@@ -20,6 +20,7 @@ import EnvironmentNode from '../lighting/EnvironmentNode.js';
 import { depthPixel } from '../display/ViewportDepthNode.js';
 import { cameraLogDepth } from '../accessors/CameraNode.js';
 import { clipping, clippingAlpha } from '../accessors/ClippingNode.js';
+import { faceDirection } from '../display/FrontFacingNode.js';
 
 const NodeMaterials = new Map();
 
@@ -266,13 +267,13 @@ class NodeMaterial extends ShaderMaterial {
 
 			const normalNode = positionView.dFdx().cross( positionView.dFdy() ).normalize();
 
-			transformedNormalView.assign( normalNode );
+			transformedNormalView.assign( normalNode.mul( faceDirection ) );
 
 		} else {
 
 			const normalNode = this.normalNode ? vec3( this.normalNode ) : materialNormal;
 
-			transformedNormalView.assign( normalNode );
+			transformedNormalView.assign( normalNode.mul( faceDirection ) );
 
 		}