ModelViewProjectionNode.js 790 B

123456789101112131415161718192021222324252627282930
  1. import Node from '../core/Node.js';
  2. import CameraNode from '../accessors/CameraNode.js';
  3. import ModelNode from '../accessors/ModelNode.js';
  4. import OperatorNode from '../math/OperatorNode.js';
  5. import PositionNode from '../accessors/PositionNode.js';
  6. class ModelViewProjectionNode extends Node {
  7. constructor( position = new PositionNode() ) {
  8. super( 'vec4' );
  9. this.position = position;
  10. this._mvpMatrix = new OperatorNode( '*', new CameraNode( CameraNode.PROJECTION_MATRIX ), new ModelNode( ModelNode.VIEW_MATRIX ) );
  11. }
  12. generate( builder ) {
  13. const mvpSnipped = this._mvpMatrix.build( builder );
  14. const positionSnipped = this.position.build( builder, 'vec3' );
  15. return `( ${mvpSnipped} * vec4( ${positionSnipped}, 1.0 ) )`;
  16. }
  17. }
  18. export default ModelViewProjectionNode;