|
@@ -64,20 +64,21 @@ import { ReflectBlock } from 'babylonjs/Materials/Node/Blocks/reflectBlock';
|
|
import { DesaturateBlock } from 'babylonjs/Materials/Node/Blocks/desaturateBlock';
|
|
import { DesaturateBlock } from 'babylonjs/Materials/Node/Blocks/desaturateBlock';
|
|
import { PBRMetallicRoughnessBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/pbrMetallicRoughnessBlock';
|
|
import { PBRMetallicRoughnessBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/pbrMetallicRoughnessBlock';
|
|
import { SheenBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/sheenBlock';
|
|
import { SheenBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/sheenBlock';
|
|
|
|
+import { AmbientOcclusionBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/ambientOcclusionBlock';
|
|
|
|
|
|
export class BlockTools {
|
|
export class BlockTools {
|
|
public static GetBlockFromString(data: string, scene: Scene, nodeMaterial: NodeMaterial) {
|
|
public static GetBlockFromString(data: string, scene: Scene, nodeMaterial: NodeMaterial) {
|
|
switch (data) {
|
|
switch (data) {
|
|
case "DesaturateBlock":
|
|
case "DesaturateBlock":
|
|
- return new DesaturateBlock("Desaturate");
|
|
|
|
|
|
+ return new DesaturateBlock("Desaturate");
|
|
case "RefractBlock":
|
|
case "RefractBlock":
|
|
- return new RefractBlock("Refract");
|
|
|
|
|
|
+ return new RefractBlock("Refract");
|
|
case "ReflectBlock":
|
|
case "ReflectBlock":
|
|
- return new ReflectBlock("Reflect");
|
|
|
|
|
|
+ return new ReflectBlock("Reflect");
|
|
case "DerivativeBlock":
|
|
case "DerivativeBlock":
|
|
- return new DerivativeBlock("Derivative");
|
|
|
|
|
|
+ return new DerivativeBlock("Derivative");
|
|
case "Rotate2dBlock":
|
|
case "Rotate2dBlock":
|
|
- return new Rotate2dBlock("Rotate2d");
|
|
|
|
|
|
+ return new Rotate2dBlock("Rotate2d");
|
|
case "NormalBlendBlock":
|
|
case "NormalBlendBlock":
|
|
return new NormalBlendBlock("NormalBlend");
|
|
return new NormalBlendBlock("NormalBlend");
|
|
case "WorleyNoise3DBlock":
|
|
case "WorleyNoise3DBlock":
|
|
@@ -97,7 +98,7 @@ export class BlockTools {
|
|
case "ColorMergerBlock":
|
|
case "ColorMergerBlock":
|
|
return new ColorMergerBlock("ColorMerger");
|
|
return new ColorMergerBlock("ColorMerger");
|
|
case "VectorMergerBlock":
|
|
case "VectorMergerBlock":
|
|
- return new VectorMergerBlock("VectorMerger");
|
|
|
|
|
|
+ return new VectorMergerBlock("VectorMerger");
|
|
case "ColorSplitterBlock":
|
|
case "ColorSplitterBlock":
|
|
return new ColorSplitterBlock("ColorSplitter");
|
|
return new ColorSplitterBlock("ColorSplitter");
|
|
case "VectorSplitterBlock":
|
|
case "VectorSplitterBlock":
|
|
@@ -105,7 +106,7 @@ export class BlockTools {
|
|
case "TextureBlock":
|
|
case "TextureBlock":
|
|
return new TextureBlock("Texture");
|
|
return new TextureBlock("Texture");
|
|
case "ReflectionTextureBlock":
|
|
case "ReflectionTextureBlock":
|
|
- return new ReflectionTextureBlock("Reflection texture");
|
|
|
|
|
|
+ return new ReflectionTextureBlock("Reflection texture");
|
|
case "LightBlock":
|
|
case "LightBlock":
|
|
return new LightBlock("Lights");
|
|
return new LightBlock("Lights");
|
|
case "FogBlock":
|
|
case "FogBlock":
|
|
@@ -145,45 +146,45 @@ export class BlockTools {
|
|
case "DivideBlock":
|
|
case "DivideBlock":
|
|
return new DivideBlock("Divide");
|
|
return new DivideBlock("Divide");
|
|
case "SubtractBlock":
|
|
case "SubtractBlock":
|
|
- return new SubtractBlock("Subtract");
|
|
|
|
|
|
+ return new SubtractBlock("Subtract");
|
|
case "StepBlock":
|
|
case "StepBlock":
|
|
- return new StepBlock("Step");
|
|
|
|
|
|
+ return new StepBlock("Step");
|
|
case "SmoothStepBlock":
|
|
case "SmoothStepBlock":
|
|
- return new SmoothStepBlock("Smooth step");
|
|
|
|
|
|
+ return new SmoothStepBlock("Smooth step");
|
|
case "OneMinusBlock":
|
|
case "OneMinusBlock":
|
|
- return new OneMinusBlock("One minus");
|
|
|
|
|
|
+ return new OneMinusBlock("One minus");
|
|
case "ReciprocalBlock":
|
|
case "ReciprocalBlock":
|
|
- return new ReciprocalBlock("Reciprocal");
|
|
|
|
|
|
+ return new ReciprocalBlock("Reciprocal");
|
|
case "ViewDirectionBlock":
|
|
case "ViewDirectionBlock":
|
|
- return new ViewDirectionBlock("View direction");
|
|
|
|
|
|
+ return new ViewDirectionBlock("View direction");
|
|
case "LightInformationBlock":
|
|
case "LightInformationBlock":
|
|
let lightInformationBlock = new LightInformationBlock("Light information");
|
|
let lightInformationBlock = new LightInformationBlock("Light information");
|
|
lightInformationBlock.light = scene.lights.length ? scene.lights[0] : null;
|
|
lightInformationBlock.light = scene.lights.length ? scene.lights[0] : null;
|
|
return lightInformationBlock;
|
|
return lightInformationBlock;
|
|
case "MaxBlock":
|
|
case "MaxBlock":
|
|
- return new MaxBlock("Max");
|
|
|
|
|
|
+ return new MaxBlock("Max");
|
|
case "MinBlock":
|
|
case "MinBlock":
|
|
- return new MinBlock("Min");
|
|
|
|
|
|
+ return new MinBlock("Min");
|
|
case "LengthBlock":
|
|
case "LengthBlock":
|
|
- return new LengthBlock("Length");
|
|
|
|
|
|
+ return new LengthBlock("Length");
|
|
case "DistanceBlock":
|
|
case "DistanceBlock":
|
|
- return new DistanceBlock("Distance");
|
|
|
|
|
|
+ return new DistanceBlock("Distance");
|
|
case "NegateBlock":
|
|
case "NegateBlock":
|
|
- return new NegateBlock("Negate");
|
|
|
|
- case "PerturbNormalBlock":
|
|
|
|
- return new PerturbNormalBlock("Perturb normal");
|
|
|
|
- case "RandomNumberBlock":
|
|
|
|
- return new RandomNumberBlock("Random number");
|
|
|
|
- case "ReplaceColorBlock":
|
|
|
|
- return new ReplaceColorBlock("Replace color");
|
|
|
|
- case "PosterizeBlock":
|
|
|
|
- return new PosterizeBlock("Posterize");
|
|
|
|
- case "ArcTan2Block":
|
|
|
|
- return new ArcTan2Block("ArcTan2");
|
|
|
|
- case "GradientBlock":
|
|
|
|
- return new GradientBlock("Gradient");
|
|
|
|
- case "FrontFacingBlock":
|
|
|
|
- return new FrontFacingBlock("Front facing");
|
|
|
|
|
|
+ return new NegateBlock("Negate");
|
|
|
|
+ case "PerturbNormalBlock":
|
|
|
|
+ return new PerturbNormalBlock("Perturb normal");
|
|
|
|
+ case "RandomNumberBlock":
|
|
|
|
+ return new RandomNumberBlock("Random number");
|
|
|
|
+ case "ReplaceColorBlock":
|
|
|
|
+ return new ReplaceColorBlock("Replace color");
|
|
|
|
+ case "PosterizeBlock":
|
|
|
|
+ return new PosterizeBlock("Posterize");
|
|
|
|
+ case "ArcTan2Block":
|
|
|
|
+ return new ArcTan2Block("ArcTan2");
|
|
|
|
+ case "GradientBlock":
|
|
|
|
+ return new GradientBlock("Gradient");
|
|
|
|
+ case "FrontFacingBlock":
|
|
|
|
+ return new FrontFacingBlock("Front facing");
|
|
case "CosBlock": {
|
|
case "CosBlock": {
|
|
let cosBlock = new TrigonometryBlock("Cos");
|
|
let cosBlock = new TrigonometryBlock("Cos");
|
|
cosBlock.operation = TrigonometryBlockOperations.Cos;
|
|
cosBlock.operation = TrigonometryBlockOperations.Cos;
|
|
@@ -198,7 +199,7 @@ export class BlockTools {
|
|
let absBlock = new TrigonometryBlock("Abs");
|
|
let absBlock = new TrigonometryBlock("Abs");
|
|
absBlock.operation = TrigonometryBlockOperations.Abs;
|
|
absBlock.operation = TrigonometryBlockOperations.Abs;
|
|
return absBlock;
|
|
return absBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "SqrtBlock": {
|
|
case "SqrtBlock": {
|
|
let sqrtBlock = new TrigonometryBlock("Sqrt");
|
|
let sqrtBlock = new TrigonometryBlock("Sqrt");
|
|
sqrtBlock.operation = TrigonometryBlockOperations.Sqrt;
|
|
sqrtBlock.operation = TrigonometryBlockOperations.Sqrt;
|
|
@@ -233,12 +234,12 @@ export class BlockTools {
|
|
let signBlock = new TrigonometryBlock("Sign");
|
|
let signBlock = new TrigonometryBlock("Sign");
|
|
signBlock.operation = TrigonometryBlockOperations.Sign;
|
|
signBlock.operation = TrigonometryBlockOperations.Sign;
|
|
return signBlock;
|
|
return signBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "LogBlock": {
|
|
case "LogBlock": {
|
|
let logBlock = new TrigonometryBlock("Log");
|
|
let logBlock = new TrigonometryBlock("Log");
|
|
logBlock.operation = TrigonometryBlockOperations.Log;
|
|
logBlock.operation = TrigonometryBlockOperations.Log;
|
|
return logBlock;
|
|
return logBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "ExpBlock": {
|
|
case "ExpBlock": {
|
|
let expBlock = new TrigonometryBlock("Exp");
|
|
let expBlock = new TrigonometryBlock("Exp");
|
|
expBlock.operation = TrigonometryBlockOperations.Exp;
|
|
expBlock.operation = TrigonometryBlockOperations.Exp;
|
|
@@ -258,7 +259,7 @@ export class BlockTools {
|
|
let radiansToDegreesBlock = new TrigonometryBlock("Radians to degrees");
|
|
let radiansToDegreesBlock = new TrigonometryBlock("Radians to degrees");
|
|
radiansToDegreesBlock.operation = TrigonometryBlockOperations.Degrees;
|
|
radiansToDegreesBlock.operation = TrigonometryBlockOperations.Degrees;
|
|
return radiansToDegreesBlock;
|
|
return radiansToDegreesBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "RoundBlock": {
|
|
case "RoundBlock": {
|
|
let roundBlock = new TrigonometryBlock("Round");
|
|
let roundBlock = new TrigonometryBlock("Round");
|
|
roundBlock.operation = TrigonometryBlockOperations.Round;
|
|
roundBlock.operation = TrigonometryBlockOperations.Round;
|
|
@@ -268,22 +269,22 @@ export class BlockTools {
|
|
let ceilingBlock = new TrigonometryBlock("Ceiling");
|
|
let ceilingBlock = new TrigonometryBlock("Ceiling");
|
|
ceilingBlock.operation = TrigonometryBlockOperations.Ceiling;
|
|
ceilingBlock.operation = TrigonometryBlockOperations.Ceiling;
|
|
return ceilingBlock;
|
|
return ceilingBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "FloorBlock": {
|
|
case "FloorBlock": {
|
|
let floorBlock = new TrigonometryBlock("Floor");
|
|
let floorBlock = new TrigonometryBlock("Floor");
|
|
floorBlock.operation = TrigonometryBlockOperations.Floor;
|
|
floorBlock.operation = TrigonometryBlockOperations.Floor;
|
|
return floorBlock;
|
|
return floorBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "SawToothWaveBlock": {
|
|
case "SawToothWaveBlock": {
|
|
let sawToothWaveBlock = new WaveBlock("SawTooth wave");
|
|
let sawToothWaveBlock = new WaveBlock("SawTooth wave");
|
|
sawToothWaveBlock.kind = WaveBlockKind.SawTooth;
|
|
sawToothWaveBlock.kind = WaveBlockKind.SawTooth;
|
|
return sawToothWaveBlock;
|
|
return sawToothWaveBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "SquareWaveBlock": {
|
|
case "SquareWaveBlock": {
|
|
let squareWaveBlock = new WaveBlock("Square wave");
|
|
let squareWaveBlock = new WaveBlock("Square wave");
|
|
squareWaveBlock.kind = WaveBlockKind.Square;
|
|
squareWaveBlock.kind = WaveBlockKind.Square;
|
|
return squareWaveBlock;
|
|
return squareWaveBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "TriangleWaveBlock": {
|
|
case "TriangleWaveBlock": {
|
|
let triangleWaveBlock = new WaveBlock("Triangle wave");
|
|
let triangleWaveBlock = new WaveBlock("Triangle wave");
|
|
triangleWaveBlock.kind = WaveBlockKind.Triangle;
|
|
triangleWaveBlock.kind = WaveBlockKind.Triangle;
|
|
@@ -293,95 +294,95 @@ export class BlockTools {
|
|
let worldMatrixBlock = new InputBlock("World");
|
|
let worldMatrixBlock = new InputBlock("World");
|
|
worldMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.World);
|
|
worldMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.World);
|
|
return worldMatrixBlock;
|
|
return worldMatrixBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "WorldViewMatrixBlock": {
|
|
case "WorldViewMatrixBlock": {
|
|
let worldViewMatrixBlock = new InputBlock("World x View");
|
|
let worldViewMatrixBlock = new InputBlock("World x View");
|
|
worldViewMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.WorldView);
|
|
worldViewMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.WorldView);
|
|
return worldViewMatrixBlock;
|
|
return worldViewMatrixBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "WorldViewProjectionMatrixBlock": {
|
|
case "WorldViewProjectionMatrixBlock": {
|
|
let worldViewProjectionMatrixBlock = new InputBlock("World x View x Projection");
|
|
let worldViewProjectionMatrixBlock = new InputBlock("World x View x Projection");
|
|
worldViewProjectionMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.WorldViewProjection);
|
|
worldViewProjectionMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.WorldViewProjection);
|
|
return worldViewProjectionMatrixBlock;
|
|
return worldViewProjectionMatrixBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "ViewMatrixBlock": {
|
|
case "ViewMatrixBlock": {
|
|
let viewMatrixBlock = new InputBlock("View");
|
|
let viewMatrixBlock = new InputBlock("View");
|
|
viewMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.View);
|
|
viewMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.View);
|
|
return viewMatrixBlock;
|
|
return viewMatrixBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "ViewProjectionMatrixBlock": {
|
|
case "ViewProjectionMatrixBlock": {
|
|
let viewProjectionMatrixBlock = new InputBlock("View x Projection");
|
|
let viewProjectionMatrixBlock = new InputBlock("View x Projection");
|
|
viewProjectionMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.ViewProjection);
|
|
viewProjectionMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.ViewProjection);
|
|
return viewProjectionMatrixBlock;
|
|
return viewProjectionMatrixBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "ProjectionMatrixBlock": {
|
|
case "ProjectionMatrixBlock": {
|
|
let projectionMatrixBlock = new InputBlock("Projection");
|
|
let projectionMatrixBlock = new InputBlock("Projection");
|
|
projectionMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.Projection);
|
|
projectionMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.Projection);
|
|
return projectionMatrixBlock;
|
|
return projectionMatrixBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "CameraPositionBlock": {
|
|
case "CameraPositionBlock": {
|
|
let cameraPosition = new InputBlock("Camera position");
|
|
let cameraPosition = new InputBlock("Camera position");
|
|
cameraPosition.setAsSystemValue(NodeMaterialSystemValues.CameraPosition);
|
|
cameraPosition.setAsSystemValue(NodeMaterialSystemValues.CameraPosition);
|
|
return cameraPosition;
|
|
return cameraPosition;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "FogColorBlock": {
|
|
case "FogColorBlock": {
|
|
let FogColor = new InputBlock("Fog color");
|
|
let FogColor = new InputBlock("Fog color");
|
|
FogColor.setAsSystemValue(NodeMaterialSystemValues.FogColor);
|
|
FogColor.setAsSystemValue(NodeMaterialSystemValues.FogColor);
|
|
return FogColor;
|
|
return FogColor;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "PositionBlock": {
|
|
case "PositionBlock": {
|
|
let meshPosition = new InputBlock("position");
|
|
let meshPosition = new InputBlock("position");
|
|
meshPosition.setAsAttribute("position");
|
|
meshPosition.setAsAttribute("position");
|
|
return meshPosition;
|
|
return meshPosition;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "UVBlock": {
|
|
case "UVBlock": {
|
|
let meshUV = new InputBlock("uv");
|
|
let meshUV = new InputBlock("uv");
|
|
meshUV.setAsAttribute("uv");
|
|
meshUV.setAsAttribute("uv");
|
|
return meshUV;
|
|
return meshUV;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "ColorBlock": {
|
|
case "ColorBlock": {
|
|
let meshColor = new InputBlock("color");
|
|
let meshColor = new InputBlock("color");
|
|
meshColor.setAsAttribute("color");
|
|
meshColor.setAsAttribute("color");
|
|
return meshColor;
|
|
return meshColor;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "NormalBlock": {
|
|
case "NormalBlock": {
|
|
let meshNormal = new InputBlock("normal");
|
|
let meshNormal = new InputBlock("normal");
|
|
meshNormal.setAsAttribute("normal");
|
|
meshNormal.setAsAttribute("normal");
|
|
return meshNormal;
|
|
return meshNormal;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "TangentBlock": {
|
|
case "TangentBlock": {
|
|
let meshTangent = new InputBlock("tangent");
|
|
let meshTangent = new InputBlock("tangent");
|
|
meshTangent.setAsAttribute("tangent");
|
|
meshTangent.setAsAttribute("tangent");
|
|
return meshTangent;
|
|
return meshTangent;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "MatrixIndicesBlock": {
|
|
case "MatrixIndicesBlock": {
|
|
let meshMatrixIndices = new InputBlock("matricesIndices");
|
|
let meshMatrixIndices = new InputBlock("matricesIndices");
|
|
meshMatrixIndices.setAsAttribute("matricesIndices");
|
|
meshMatrixIndices.setAsAttribute("matricesIndices");
|
|
return meshMatrixIndices;
|
|
return meshMatrixIndices;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "MatrixWeightsBlock": {
|
|
case "MatrixWeightsBlock": {
|
|
let meshMatrixWeights = new InputBlock("matricesWeights");
|
|
let meshMatrixWeights = new InputBlock("matricesWeights");
|
|
meshMatrixWeights.setAsAttribute("matricesWeights");
|
|
meshMatrixWeights.setAsAttribute("matricesWeights");
|
|
return meshMatrixWeights;
|
|
return meshMatrixWeights;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "TimeBlock": {
|
|
case "TimeBlock": {
|
|
let timeBlock = new InputBlock("Time", undefined, NodeMaterialBlockConnectionPointTypes.Float);
|
|
let timeBlock = new InputBlock("Time", undefined, NodeMaterialBlockConnectionPointTypes.Float);
|
|
timeBlock.animationType = AnimatedInputBlockTypes.Time;
|
|
timeBlock.animationType = AnimatedInputBlockTypes.Time;
|
|
return timeBlock;
|
|
return timeBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "DeltaTimeBlock": {
|
|
case "DeltaTimeBlock": {
|
|
- let deltaTimeBlock = new InputBlock("Delta time");
|
|
|
|
|
|
+ let deltaTimeBlock = new InputBlock("Delta time");
|
|
deltaTimeBlock.setAsSystemValue(NodeMaterialSystemValues.DeltaTime);
|
|
deltaTimeBlock.setAsSystemValue(NodeMaterialSystemValues.DeltaTime);
|
|
return deltaTimeBlock;
|
|
return deltaTimeBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "WorldPositionBlock": {
|
|
case "WorldPositionBlock": {
|
|
- let worldPositionBlock = nodeMaterial.getInputBlockByPredicate(b => b.isAttribute && b.name === "position");
|
|
|
|
|
|
+ let worldPositionBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isAttribute && b.name === "position");
|
|
if (!worldPositionBlock) {
|
|
if (!worldPositionBlock) {
|
|
worldPositionBlock = new InputBlock("position");
|
|
worldPositionBlock = new InputBlock("position");
|
|
worldPositionBlock.setAsAttribute("position");
|
|
worldPositionBlock.setAsAttribute("position");
|
|
}
|
|
}
|
|
|
|
|
|
- let worldMatrixBlock = nodeMaterial.getInputBlockByPredicate(b => b.isSystemValue && b.systemValue === NodeMaterialSystemValues.World);
|
|
|
|
|
|
+ let worldMatrixBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isSystemValue && b.systemValue === NodeMaterialSystemValues.World);
|
|
|
|
|
|
if (!worldMatrixBlock) {
|
|
if (!worldMatrixBlock) {
|
|
worldMatrixBlock = new InputBlock("World");
|
|
worldMatrixBlock = new InputBlock("World");
|
|
@@ -393,15 +394,15 @@ export class BlockTools {
|
|
worldMatrixBlock.connectTo(transformBlock);
|
|
worldMatrixBlock.connectTo(transformBlock);
|
|
|
|
|
|
return transformBlock;
|
|
return transformBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "WorldNormalBlock": {
|
|
case "WorldNormalBlock": {
|
|
- let worldNormalBlock = nodeMaterial.getInputBlockByPredicate(b => b.isAttribute && b.name === "normal");
|
|
|
|
|
|
+ let worldNormalBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isAttribute && b.name === "normal");
|
|
if (!worldNormalBlock) {
|
|
if (!worldNormalBlock) {
|
|
worldNormalBlock = new InputBlock("normal");
|
|
worldNormalBlock = new InputBlock("normal");
|
|
worldNormalBlock.setAsAttribute("normal");
|
|
worldNormalBlock.setAsAttribute("normal");
|
|
}
|
|
}
|
|
|
|
|
|
- let worldMatrixBlock = nodeMaterial.getInputBlockByPredicate(b => b.isSystemValue && b.systemValue === NodeMaterialSystemValues.World);
|
|
|
|
|
|
+ let worldMatrixBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isSystemValue && b.systemValue === NodeMaterialSystemValues.World);
|
|
|
|
|
|
if (!worldMatrixBlock) {
|
|
if (!worldMatrixBlock) {
|
|
worldMatrixBlock = new InputBlock("World");
|
|
worldMatrixBlock = new InputBlock("World");
|
|
@@ -413,15 +414,15 @@ export class BlockTools {
|
|
worldMatrixBlock.connectTo(transformBlock);
|
|
worldMatrixBlock.connectTo(transformBlock);
|
|
|
|
|
|
return transformBlock;
|
|
return transformBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "WorldTangentBlock": {
|
|
case "WorldTangentBlock": {
|
|
- let worldTangentBlock = nodeMaterial.getInputBlockByPredicate(b => b.isAttribute && b.name === "tangent");
|
|
|
|
|
|
+ let worldTangentBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isAttribute && b.name === "tangent");
|
|
if (!worldTangentBlock) {
|
|
if (!worldTangentBlock) {
|
|
worldTangentBlock = new InputBlock("tangent");
|
|
worldTangentBlock = new InputBlock("tangent");
|
|
worldTangentBlock.setAsAttribute("tangent");
|
|
worldTangentBlock.setAsAttribute("tangent");
|
|
}
|
|
}
|
|
|
|
|
|
- let worldMatrixBlock = nodeMaterial.getInputBlockByPredicate(b => b.isSystemValue && b.systemValue === NodeMaterialSystemValues.World);
|
|
|
|
|
|
+ let worldMatrixBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isSystemValue && b.systemValue === NodeMaterialSystemValues.World);
|
|
|
|
|
|
if (!worldMatrixBlock) {
|
|
if (!worldMatrixBlock) {
|
|
worldMatrixBlock = new InputBlock("World");
|
|
worldMatrixBlock = new InputBlock("World");
|
|
@@ -433,12 +434,14 @@ export class BlockTools {
|
|
worldMatrixBlock.connectTo(transformBlock);
|
|
worldMatrixBlock.connectTo(transformBlock);
|
|
|
|
|
|
return transformBlock;
|
|
return transformBlock;
|
|
- }
|
|
|
|
|
|
+ }
|
|
case "PBRMetallicRoughnessBlock":
|
|
case "PBRMetallicRoughnessBlock":
|
|
return new PBRMetallicRoughnessBlock("PBRMetallicRoughness");
|
|
return new PBRMetallicRoughnessBlock("PBRMetallicRoughness");
|
|
case "SheenBlock":
|
|
case "SheenBlock":
|
|
return new SheenBlock("Sheen");
|
|
return new SheenBlock("Sheen");
|
|
- }
|
|
|
|
|
|
+ case "AmbientOcclusionBlock":
|
|
|
|
+ return new AmbientOcclusionBlock("AmbientOcclusion");
|
|
|
|
+ }
|
|
|
|
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
@@ -447,21 +450,21 @@ export class BlockTools {
|
|
let color = "#880000";
|
|
let color = "#880000";
|
|
switch (type) {
|
|
switch (type) {
|
|
case NodeMaterialBlockConnectionPointTypes.Float:
|
|
case NodeMaterialBlockConnectionPointTypes.Float:
|
|
- color = "#cb9e27";
|
|
|
|
|
|
+ color = "#cb9e27";
|
|
break;
|
|
break;
|
|
- case NodeMaterialBlockConnectionPointTypes.Vector2:
|
|
|
|
- color = "#16bcb1";
|
|
|
|
|
|
+ case NodeMaterialBlockConnectionPointTypes.Vector2:
|
|
|
|
+ color = "#16bcb1";
|
|
break;
|
|
break;
|
|
- case NodeMaterialBlockConnectionPointTypes.Vector3:
|
|
|
|
- case NodeMaterialBlockConnectionPointTypes.Color3:
|
|
|
|
|
|
+ case NodeMaterialBlockConnectionPointTypes.Vector3:
|
|
|
|
+ case NodeMaterialBlockConnectionPointTypes.Color3:
|
|
color = "#b786cb";
|
|
color = "#b786cb";
|
|
break;
|
|
break;
|
|
- case NodeMaterialBlockConnectionPointTypes.Vector4:
|
|
|
|
- case NodeMaterialBlockConnectionPointTypes.Color4:
|
|
|
|
- color = "#be5126";
|
|
|
|
|
|
+ case NodeMaterialBlockConnectionPointTypes.Vector4:
|
|
|
|
+ case NodeMaterialBlockConnectionPointTypes.Color4:
|
|
|
|
+ color = "#be5126";
|
|
break;
|
|
break;
|
|
- case NodeMaterialBlockConnectionPointTypes.Matrix:
|
|
|
|
- color = "#591990";
|
|
|
|
|
|
+ case NodeMaterialBlockConnectionPointTypes.Matrix:
|
|
|
|
+ color = "#591990";
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|