rgbMergerBlock.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { NodeMaterialBlock, NodeMaterialBlockTargets } from '../../nodeMaterialBlock';
  2. import { NodeMaterialBlockConnectionPointTypes } from '../../nodeMaterialBlockConnectionPointTypes';
  3. import { NodeMaterialCompilationState } from '../../nodeMaterialCompilationState';
  4. /**
  5. * Block used to create a Color3 out of 3 inputs (one for each component)
  6. */
  7. export class RGBMergerBlock extends NodeMaterialBlock {
  8. /**
  9. * Create a new RGBMergerBlock
  10. * @param name defines the block name
  11. */
  12. public constructor(name: string) {
  13. super(name, NodeMaterialBlockTargets.Fragment);
  14. this.registerInput("r", NodeMaterialBlockConnectionPointTypes.Float);
  15. this.registerInput("g", NodeMaterialBlockConnectionPointTypes.Float);
  16. this.registerInput("b", NodeMaterialBlockConnectionPointTypes.Float);
  17. this.registerOutput("output", NodeMaterialBlockConnectionPointTypes.Color3);
  18. }
  19. protected _buildBlock(state: NodeMaterialCompilationState) {
  20. super._buildBlock(state);
  21. let rInput = this._inputs[0];
  22. let gInput = this._inputs[1];
  23. let bInput = this._inputs[2];
  24. let output = this._outputs[0];
  25. state.compilationString += this._declareOutput(output, state) + ` = vec3(${rInput.associatedVariableName}, ${gInput.associatedVariableName}, ${bInput.associatedVariableName});\r\n`;
  26. return this;
  27. }
  28. }