You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

31 lines
738 B

2 years ago
import Node from '../core/Node.js';
import CameraNode from '../accessors/CameraNode.js';
import ModelNode from '../accessors/ModelNode.js';
import OperatorNode from '../math/OperatorNode.js';
import PositionNode from '../accessors/PositionNode.js';
class ModelViewProjectionNode extends Node {
constructor( position = new PositionNode() ) {
super( 'vec4' );
this.position = position;
}
generate( builder ) {
const position = this.position;
const mvpMatrix = new OperatorNode( '*', new CameraNode( CameraNode.PROJECTION_MATRIX ), new ModelNode( ModelNode.VIEW_MATRIX ) );
const mvpNode = new OperatorNode( '*', mvpMatrix, position );
return mvpNode.build( builder );
}
}
export default ModelViewProjectionNode;