Skip to content

Commit 94ad822

Browse files
authored
TSL: Vertex shader revision 2 (#30147)
* sprite revision * cleanup
1 parent e060f3a commit 94ad822

File tree

3 files changed

+18
-9
lines changed

3 files changed

+18
-9
lines changed

src/materials/nodes/NodeMaterial.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import AONode from '../../nodes/lighting/AONode.js';
1919
import { lightingContext } from '../../nodes/lighting/LightingContextNode.js';
2020
import IrradianceNode from '../../nodes/lighting/IrradianceNode.js';
2121
import { depth, viewZToLogarithmicDepth, viewZToOrthographicDepth } from '../../nodes/display/ViewportDepthNode.js';
22-
import { cameraFar, cameraNear } from '../../nodes/accessors/Camera.js';
22+
import { cameraFar, cameraNear, cameraProjectionMatrix } from '../../nodes/accessors/Camera.js';
2323
import { clipping, clippingAlpha, hardwareClipping } from '../../nodes/accessors/ClippingNode.js';
2424
import NodeMaterialObserver from './manager/NodeMaterialObserver.js';
2525
import getAlphaHashThreshold from '../../nodes/functions/material/getAlphaHashThreshold.js';
@@ -102,6 +102,7 @@ class NodeMaterial extends Material {
102102

103103
builder.context.setupNormal = () => this.setupNormal( builder );
104104
builder.context.setupPositionView = () => this.setupPositionView( builder );
105+
builder.context.setupModelViewProjection = () => this.setupModelViewProjection( builder );
105106

106107
const renderer = builder.renderer;
107108
const renderTarget = renderer.getRenderTarget();
@@ -317,6 +318,12 @@ class NodeMaterial extends Material {
317318

318319
}
319320

321+
setupModelViewProjection() {
322+
323+
return cameraProjectionMatrix.mul( positionView );
324+
325+
}
326+
320327
setupVertex( builder ) {
321328

322329
builder.addStack();

src/materials/nodes/SpriteNodeMaterial.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { materialRotation } from '../../nodes/accessors/MaterialNode.js';
44
import { modelViewMatrix, modelWorldMatrix } from '../../nodes/accessors/ModelNode.js';
55
import { positionGeometry } from '../../nodes/accessors/Position.js';
66
import { rotate } from '../../nodes/utils/RotateNode.js';
7-
import { float, vec2, vec4 } from '../../nodes/tsl/TSLBase.js';
7+
import { float, vec2, vec3, vec4 } from '../../nodes/tsl/TSLBase.js';
88

99
import { SpriteMaterial } from '../SpriteMaterial.js';
1010
import { reference } from '../../nodes/accessors/ReferenceBaseNode.js';
@@ -46,9 +46,9 @@ class SpriteNodeMaterial extends NodeMaterial {
4646

4747
// < VERTEX STAGE >
4848

49-
const { rotationNode, scaleNode } = this;
49+
const { positionNode, rotationNode, scaleNode } = this;
5050

51-
const mvPosition = modelViewMatrix.mul( positionLocal );
51+
const mvPosition = modelViewMatrix.mul( vec3( positionNode || 0 ) );
5252

5353
let scale = vec2( modelWorldMatrix[ 0 ].xyz.length(), modelWorldMatrix[ 1 ].xyz.length() );
5454

@@ -58,7 +58,6 @@ class SpriteNodeMaterial extends NodeMaterial {
5858

5959
}
6060

61-
6261
if ( ! sizeAttenuation ) {
6362

6463
if ( camera.isPerspectiveCamera ) {
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
import { cameraProjectionMatrix } from './Camera.js';
2-
import { positionView } from './Position.js';
1+
import { Fn } from '../tsl/TSLCore.js';
32

43
/** @module ModelViewProjectionNode **/
54

65
/**
76
* TSL object that represents the position in clip space after the model-view-projection transform of the current rendered object.
87
*
9-
* @type {VaryingNode<vec3>}
8+
* @type {VaryingNode<vec4>}
109
*/
11-
export const modelViewProjection = /*@__PURE__*/ cameraProjectionMatrix.mul( positionView ).varying( 'v_modelViewProjection' );
10+
export const modelViewProjection = /*@__PURE__*/ ( Fn( ( builder ) => {
11+
12+
return builder.context.setupModelViewProjection();
13+
14+
}, 'vec4' ).once() )().varying( 'v_modelViewProjection' );

0 commit comments

Comments
 (0)