Procházet zdrojové kódy

TSL: Refactor `positionViewDirection` to handle orthographic camera cases (#32088)

* WebGPU: Refactor positionViewDirection to handle orthographic camera cases

* Update WebGPU screenshots after positionViewDirection fix

* Review comment: https://github.com/mrdoob/three.js/pull/32088#discussion_r2445229182
Kirill Osipov před 2 měsíci
rodič
revize
89b6cd1f86
1 změnil soubory, kde provedl 18 přidání a 1 odebrání
  1. 18 1
      src/nodes/accessors/Position.js

+ 18 - 1
src/nodes/accessors/Position.js

@@ -1,5 +1,6 @@
 import { attribute } from '../core/AttributeNode.js';
 import { Fn } from '../tsl/TSLCore.js';
+import { vec3 } from '../tsl/TSLBase.js';
 import { modelWorldMatrix } from './ModelNode.js';
 
 /**
@@ -71,4 +72,20 @@ export const positionView = /*@__PURE__*/ ( Fn( ( builder ) => {
  * @tsl
  * @type {VaryingNode<vec3>}
  */
-export const positionViewDirection = /*@__PURE__*/ positionView.negate().toVarying( 'v_positionViewDirection' ).normalize().toVar( 'positionViewDirection' );
+export const positionViewDirection = /*@__PURE__*/ ( Fn( ( builder ) => {
+
+	let output;
+
+	if ( builder.camera.isOrthographicCamera ) {
+
+		output = vec3( 0, 0, 1 );
+
+	} else {
+
+		output = positionView.negate().toVarying( 'v_positionViewDirection' ).normalize();
+
+	}
+
+	return output.toVar( 'positionViewDirection' );
+
+}, 'vec3' ).once( [ 'POSITION' ] ) )();

粤ICP备19079148号