123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577 |
- import { DiscardBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/discardBlock';
- import { BonesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/bonesBlock';
- import { InstancesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/instancesBlock';
- import { MorphTargetsBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/morphTargetsBlock';
- import { ImageProcessingBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/imageProcessingBlock';
- import { ColorMergerBlock } from 'babylonjs/Materials/Node/Blocks/colorMergerBlock';
- import { VectorMergerBlock } from 'babylonjs/Materials/Node/Blocks/vectorMergerBlock';
- import { ColorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/colorSplitterBlock';
- import { VectorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/vectorSplitterBlock';
- import { RemapBlock } from 'babylonjs/Materials/Node/Blocks/remapBlock';
- import { TextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/textureBlock';
- import { ReflectionTextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/reflectionTextureBlock';
- import { LightBlock } from 'babylonjs/Materials/Node/Blocks/Dual/lightBlock';
- import { FogBlock } from 'babylonjs/Materials/Node/Blocks/Dual/fogBlock';
- import { VertexOutputBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/vertexOutputBlock';
- import { FragmentOutputBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fragmentOutputBlock';
- import { NormalizeBlock } from 'babylonjs/Materials/Node/Blocks/normalizeBlock';
- import { AddBlock } from 'babylonjs/Materials/Node/Blocks/addBlock';
- import { ModBlock } from 'babylonjs/Materials/Node/Blocks/modBlock';
- import { ScaleBlock } from 'babylonjs/Materials/Node/Blocks/scaleBlock';
- import { TrigonometryBlock, TrigonometryBlockOperations } from 'babylonjs/Materials/Node/Blocks/trigonometryBlock';
- import { ClampBlock } from 'babylonjs/Materials/Node/Blocks/clampBlock';
- import { CrossBlock } from 'babylonjs/Materials/Node/Blocks/crossBlock';
- import { DotBlock } from 'babylonjs/Materials/Node/Blocks/dotBlock';
- import { MultiplyBlock } from 'babylonjs/Materials/Node/Blocks/multiplyBlock';
- import { TransformBlock } from 'babylonjs/Materials/Node/Blocks/transformBlock';
- import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/Enums/nodeMaterialBlockConnectionPointTypes';
- import { FresnelBlock } from 'babylonjs/Materials/Node/Blocks/fresnelBlock';
- import { LerpBlock } from 'babylonjs/Materials/Node/Blocks/lerpBlock';
- import { NLerpBlock } from 'babylonjs/Materials/Node/Blocks/nLerpBlock';
- import { DivideBlock } from 'babylonjs/Materials/Node/Blocks/divideBlock';
- import { SubtractBlock } from 'babylonjs/Materials/Node/Blocks/subtractBlock';
- import { StepBlock } from 'babylonjs/Materials/Node/Blocks/stepBlock';
- import { SmoothStepBlock } from 'babylonjs/Materials/Node/Blocks/smoothStepBlock';
- import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
- import { NodeMaterialSystemValues } from 'babylonjs/Materials/Node/Enums/nodeMaterialSystemValues';
- import { AnimatedInputBlockTypes } from 'babylonjs/Materials/Node/Blocks/Input/animatedInputBlockTypes';
- import { OneMinusBlock } from 'babylonjs/Materials/Node/Blocks/oneMinusBlock';
- import { ViewDirectionBlock } from 'babylonjs/Materials/Node/Blocks/viewDirectionBlock';
- import { LightInformationBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/lightInformationBlock';
- import { MaxBlock } from 'babylonjs/Materials/Node/Blocks/maxBlock';
- import { MinBlock } from 'babylonjs/Materials/Node/Blocks/minBlock';
- import { PerturbNormalBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/perturbNormalBlock';
- import { LengthBlock } from 'babylonjs/Materials/Node/Blocks/lengthBlock';
- import { DistanceBlock } from 'babylonjs/Materials/Node/Blocks/distanceBlock';
- import { FrontFacingBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/frontFacingBlock';
- import { NegateBlock } from 'babylonjs/Materials/Node/Blocks/negateBlock';
- import { PowBlock } from 'babylonjs/Materials/Node/Blocks/powBlock';
- import { Scene } from 'babylonjs/scene';
- import { RandomNumberBlock } from 'babylonjs/Materials/Node/Blocks/randomNumberBlock';
- import { ReplaceColorBlock } from 'babylonjs/Materials/Node/Blocks/replaceColorBlock';
- import { PosterizeBlock } from 'babylonjs/Materials/Node/Blocks/posterizeBlock';
- import { ArcTan2Block } from 'babylonjs/Materials/Node/Blocks/arcTan2Block';
- import { ReciprocalBlock } from 'babylonjs/Materials/Node/Blocks/reciprocalBlock';
- import { GradientBlock } from 'babylonjs/Materials/Node/Blocks/gradientBlock';
- import { WaveBlock, WaveBlockKind } from 'babylonjs/Materials/Node/Blocks/waveBlock';
- import { NodeMaterial } from 'babylonjs/Materials/Node/nodeMaterial';
- import { WorleyNoise3DBlock } from 'babylonjs/Materials/Node/Blocks/worleyNoise3DBlock';
- import { SimplexPerlin3DBlock } from 'babylonjs/Materials/Node/Blocks/simplexPerlin3DBlock';
- import { NormalBlendBlock } from 'babylonjs/Materials/Node/Blocks/normalBlendBlock';
- import { Rotate2dBlock } from 'babylonjs/Materials/Node/Blocks/rotate2dBlock';
- import { DerivativeBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/derivativeBlock';
- import { RefractBlock } from 'babylonjs/Materials/Node/Blocks/refractBlock';
- import { ReflectBlock } from 'babylonjs/Materials/Node/Blocks/reflectBlock';
- import { DesaturateBlock } from 'babylonjs/Materials/Node/Blocks/desaturateBlock';
- import { PBRMetallicRoughnessBlock } from 'babylonjs/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock';
- import { SheenBlock } from 'babylonjs/Materials/Node/Blocks/PBR/sheenBlock';
- import { AnisotropyBlock } from 'babylonjs/Materials/Node/Blocks/PBR/anisotropyBlock';
- import { ReflectionBlock } from 'babylonjs/Materials/Node/Blocks/PBR/reflectionBlock';
- import { ClearCoatBlock } from 'babylonjs/Materials/Node/Blocks/PBR/clearCoatBlock';
- import { RefractionBlock } from 'babylonjs/Materials/Node/Blocks/PBR/refractionBlock';
- import { SubSurfaceBlock } from 'babylonjs/Materials/Node/Blocks/PBR/subSurfaceBlock';
- import { CurrentScreenBlock } from 'babylonjs/Materials/Node/Blocks/Dual/currentScreenBlock';
- import { ParticleTextureBlock } from 'babylonjs/Materials/Node/Blocks/Particle/particleTextureBlock';
- import { ParticleRampGradientBlock } from 'babylonjs/Materials/Node/Blocks/Particle/particleRampGradientBlock';
- import { ParticleBlendMultiplyBlock } from 'babylonjs/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock';
- import { NodeMaterialModes } from 'babylonjs/Materials/Node/Enums/nodeMaterialModes';
- import { FragCoordBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fragCoordBlock';
- import { ScreenSizeBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/screenSizeBlock';
- export class BlockTools {
- public static GetBlockFromString(data: string, scene: Scene, nodeMaterial: NodeMaterial) {
- switch (data) {
- case "DesaturateBlock":
- return new DesaturateBlock("Desaturate");
- case "RefractBlock":
- return new RefractBlock("Refract");
- case "ReflectBlock":
- return new ReflectBlock("Reflect");
- case "DerivativeBlock":
- return new DerivativeBlock("Derivative");
- case "Rotate2dBlock":
- return new Rotate2dBlock("Rotate2d");
- case "NormalBlendBlock":
- return new NormalBlendBlock("NormalBlend");
- case "WorleyNoise3DBlock":
- return new WorleyNoise3DBlock("WorleyNoise3D");
- case "SimplexPerlin3DBlock":
- return new SimplexPerlin3DBlock("SimplexPerlin3D");
- case "BonesBlock":
- return new BonesBlock("Bones");
- case "InstancesBlock":
- return new InstancesBlock("Instances");
- case "MorphTargetsBlock":
- return new MorphTargetsBlock("MorphTargets");
- case "DiscardBlock":
- return new DiscardBlock("Discard");
- case "ImageProcessingBlock":
- return new ImageProcessingBlock("ImageProcessing");
- case "ColorMergerBlock":
- return new ColorMergerBlock("ColorMerger");
- case "VectorMergerBlock":
- return new VectorMergerBlock("VectorMerger");
- case "ColorSplitterBlock":
- return new ColorSplitterBlock("ColorSplitter");
- case "VectorSplitterBlock":
- return new VectorSplitterBlock("VectorSplitter");
- case "TextureBlock":
- return new TextureBlock("Texture", nodeMaterial.mode === NodeMaterialModes.Particle);
- case "ReflectionTextureBlock":
- return new ReflectionTextureBlock("Reflection texture");
- case "LightBlock":
- return new LightBlock("Lights");
- case "FogBlock":
- return new FogBlock("Fog");
- case "VertexOutputBlock":
- return new VertexOutputBlock("VertexOutput");
- case "FragmentOutputBlock":
- return new FragmentOutputBlock("FragmentOutput");
- case "AddBlock":
- return new AddBlock("Add");
- case "ClampBlock":
- return new ClampBlock("Clamp");
- case "ScaleBlock":
- return new ScaleBlock("Scale");
- case "CrossBlock":
- return new CrossBlock("Cross");
- case "DotBlock":
- return new DotBlock("Dot");
- case "PowBlock":
- return new PowBlock("Pow");
- case "MultiplyBlock":
- return new MultiplyBlock("Multiply");
- case "TransformBlock":
- return new TransformBlock("Transform");
- case "TrigonometryBlock":
- return new TrigonometryBlock("Trigonometry");
- case "RemapBlock":
- return new RemapBlock("Remap");
- case "NormalizeBlock":
- return new NormalizeBlock("Normalize");
- case "FresnelBlock":
- return new FresnelBlock("Fresnel");
- case "LerpBlock":
- return new LerpBlock("Lerp");
- case "NLerpBlock":
- return new NLerpBlock("NLerp");
- case "DivideBlock":
- return new DivideBlock("Divide");
- case "SubtractBlock":
- return new SubtractBlock("Subtract");
- case "ModBlock":
- return new ModBlock("Mod");
- case "StepBlock":
- return new StepBlock("Step");
- case "SmoothStepBlock":
- return new SmoothStepBlock("Smooth step");
- case "OneMinusBlock":
- return new OneMinusBlock("One minus");
- case "ReciprocalBlock":
- return new ReciprocalBlock("Reciprocal");
- case "ViewDirectionBlock":
- return new ViewDirectionBlock("View direction");
- case "LightInformationBlock":
- let lightInformationBlock = new LightInformationBlock("Light information");
- lightInformationBlock.light = scene.lights.length ? scene.lights[0] : null;
- return lightInformationBlock;
- case "MaxBlock":
- return new MaxBlock("Max");
- case "MinBlock":
- return new MinBlock("Min");
- case "LengthBlock":
- return new LengthBlock("Length");
- case "DistanceBlock":
- return new DistanceBlock("Distance");
- 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");
- case "CosBlock": {
- let cosBlock = new TrigonometryBlock("Cos");
- cosBlock.operation = TrigonometryBlockOperations.Cos;
- return cosBlock;
- }
- case "SinBlock": {
- let sinBlock = new TrigonometryBlock("Sin");
- sinBlock.operation = TrigonometryBlockOperations.Sin;
- return sinBlock;
- }
- case "AbsBlock": {
- let absBlock = new TrigonometryBlock("Abs");
- absBlock.operation = TrigonometryBlockOperations.Abs;
- return absBlock;
- }
- case "SqrtBlock": {
- let sqrtBlock = new TrigonometryBlock("Sqrt");
- sqrtBlock.operation = TrigonometryBlockOperations.Sqrt;
- return sqrtBlock;
- }
- case "ArcCosBlock": {
- let acosBlock = new TrigonometryBlock("ArcCos");
- acosBlock.operation = TrigonometryBlockOperations.ArcCos;
- return acosBlock;
- }
- case "ArcSinBlock": {
- let asinBlock = new TrigonometryBlock("ArcSin");
- asinBlock.operation = TrigonometryBlockOperations.ArcSin;
- return asinBlock;
- }
- case "TanBlock": {
- let tanBlock = new TrigonometryBlock("Tan");
- tanBlock.operation = TrigonometryBlockOperations.Tan;
- return tanBlock;
- }
- case "ArcTanBlock": {
- let atanBlock = new TrigonometryBlock("ArcTan");
- atanBlock.operation = TrigonometryBlockOperations.ArcTan;
- return atanBlock;
- }
- case "FractBlock": {
- let fractBlock = new TrigonometryBlock("Fract");
- fractBlock.operation = TrigonometryBlockOperations.Fract;
- return fractBlock;
- }
- case "SignBlock": {
- let signBlock = new TrigonometryBlock("Sign");
- signBlock.operation = TrigonometryBlockOperations.Sign;
- return signBlock;
- }
- case "LogBlock": {
- let logBlock = new TrigonometryBlock("Log");
- logBlock.operation = TrigonometryBlockOperations.Log;
- return logBlock;
- }
- case "ExpBlock": {
- let expBlock = new TrigonometryBlock("Exp");
- expBlock.operation = TrigonometryBlockOperations.Exp;
- return expBlock;
- }
- case "Exp2Block": {
- let exp2Block = new TrigonometryBlock("Exp2");
- exp2Block.operation = TrigonometryBlockOperations.Exp2;
- return exp2Block;
- }
- case "DegreesToRadiansBlock": {
- let degreesToRadiansBlock = new TrigonometryBlock("Degrees to radians");
- degreesToRadiansBlock.operation = TrigonometryBlockOperations.Radians;
- return degreesToRadiansBlock;
- }
- case "RadiansToDegreesBlock": {
- let radiansToDegreesBlock = new TrigonometryBlock("Radians to degrees");
- radiansToDegreesBlock.operation = TrigonometryBlockOperations.Degrees;
- return radiansToDegreesBlock;
- }
- case "RoundBlock": {
- let roundBlock = new TrigonometryBlock("Round");
- roundBlock.operation = TrigonometryBlockOperations.Round;
- return roundBlock;
- }
- case "CeilingBlock": {
- let ceilingBlock = new TrigonometryBlock("Ceiling");
- ceilingBlock.operation = TrigonometryBlockOperations.Ceiling;
- return ceilingBlock;
- }
- case "FloorBlock": {
- let floorBlock = new TrigonometryBlock("Floor");
- floorBlock.operation = TrigonometryBlockOperations.Floor;
- return floorBlock;
- }
- case "SawToothWaveBlock": {
- let sawToothWaveBlock = new WaveBlock("SawTooth wave");
- sawToothWaveBlock.kind = WaveBlockKind.SawTooth;
- return sawToothWaveBlock;
- }
- case "SquareWaveBlock": {
- let squareWaveBlock = new WaveBlock("Square wave");
- squareWaveBlock.kind = WaveBlockKind.Square;
- return squareWaveBlock;
- }
- case "TriangleWaveBlock": {
- let triangleWaveBlock = new WaveBlock("Triangle wave");
- triangleWaveBlock.kind = WaveBlockKind.Triangle;
- return triangleWaveBlock;
- }
- case "WorldMatrixBlock": {
- let worldMatrixBlock = new InputBlock("World");
- worldMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.World);
- return worldMatrixBlock;
- }
- case "WorldViewMatrixBlock": {
- let worldViewMatrixBlock = new InputBlock("World x View");
- worldViewMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.WorldView);
- return worldViewMatrixBlock;
- }
- case "WorldViewProjectionMatrixBlock": {
- let worldViewProjectionMatrixBlock = new InputBlock("World x View x Projection");
- worldViewProjectionMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.WorldViewProjection);
- return worldViewProjectionMatrixBlock;
- }
- case "ViewMatrixBlock": {
- let viewMatrixBlock = new InputBlock("View");
- viewMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.View);
- return viewMatrixBlock;
- }
- case "ViewProjectionMatrixBlock": {
- let viewProjectionMatrixBlock = new InputBlock("View x Projection");
- viewProjectionMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.ViewProjection);
- return viewProjectionMatrixBlock;
- }
- case "ProjectionMatrixBlock": {
- let projectionMatrixBlock = new InputBlock("Projection");
- projectionMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.Projection);
- return projectionMatrixBlock;
- }
- case "CameraPositionBlock": {
- let cameraPosition = new InputBlock("Camera position");
- cameraPosition.setAsSystemValue(NodeMaterialSystemValues.CameraPosition);
- return cameraPosition;
- }
- case "FogColorBlock": {
- let FogColor = new InputBlock("Fog color");
- FogColor.setAsSystemValue(NodeMaterialSystemValues.FogColor);
- return FogColor;
- }
- case "PositionBlock": {
- let meshPosition = new InputBlock("position");
- meshPosition.setAsAttribute("position");
- return meshPosition;
- }
- case "ScreenPositionBlock": {
- let meshPosition = new InputBlock("position");
- meshPosition.setAsAttribute("position2d");
- return meshPosition;
- }
- case "UVBlock": {
- let meshUV = new InputBlock("uv");
- meshUV.setAsAttribute("uv");
- return meshUV;
- }
- case "ColorBlock": {
- let meshColor = new InputBlock("color");
- meshColor.setAsAttribute("color");
- return meshColor;
- }
- case "NormalBlock": {
- let meshNormal = new InputBlock("normal");
- meshNormal.setAsAttribute("normal");
- return meshNormal;
- }
- case "TangentBlock": {
- let meshTangent = new InputBlock("tangent");
- meshTangent.setAsAttribute("tangent");
- return meshTangent;
- }
- case "MatrixIndicesBlock": {
- let meshMatrixIndices = new InputBlock("matricesIndices");
- meshMatrixIndices.setAsAttribute("matricesIndices");
- return meshMatrixIndices;
- }
- case "MatrixWeightsBlock": {
- let meshMatrixWeights = new InputBlock("matricesWeights");
- meshMatrixWeights.setAsAttribute("matricesWeights");
- return meshMatrixWeights;
- }
- case "TimeBlock": {
- let timeBlock = new InputBlock("Time", undefined, NodeMaterialBlockConnectionPointTypes.Float);
- timeBlock.animationType = AnimatedInputBlockTypes.Time;
- return timeBlock;
- }
- case "DeltaTimeBlock": {
- let deltaTimeBlock = new InputBlock("Delta time");
- deltaTimeBlock.setAsSystemValue(NodeMaterialSystemValues.DeltaTime);
- return deltaTimeBlock;
- }
- case "WorldPositionBlock": {
- let worldPositionBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isAttribute && b.name === "position");
- if (!worldPositionBlock) {
- worldPositionBlock = new InputBlock("position");
- worldPositionBlock.setAsAttribute("position");
- }
- let worldMatrixBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isSystemValue && b.systemValue === NodeMaterialSystemValues.World);
- if (!worldMatrixBlock) {
- worldMatrixBlock = new InputBlock("World");
- worldMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.World);
- }
- let transformBlock = new TransformBlock("World position");
- worldPositionBlock.connectTo(transformBlock);
- worldMatrixBlock.connectTo(transformBlock);
- return transformBlock;
- }
- case "WorldNormalBlock": {
- let worldNormalBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isAttribute && b.name === "normal");
- if (!worldNormalBlock) {
- worldNormalBlock = new InputBlock("normal");
- worldNormalBlock.setAsAttribute("normal");
- }
- let worldMatrixBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isSystemValue && b.systemValue === NodeMaterialSystemValues.World);
- if (!worldMatrixBlock) {
- worldMatrixBlock = new InputBlock("World");
- worldMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.World);
- }
- let transformBlock = new TransformBlock("World normal");
- worldNormalBlock.connectTo(transformBlock);
- worldMatrixBlock.connectTo(transformBlock);
- return transformBlock;
- }
- case "WorldTangentBlock": {
- let worldTangentBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isAttribute && b.name === "tangent");
- if (!worldTangentBlock) {
- worldTangentBlock = new InputBlock("tangent");
- worldTangentBlock.setAsAttribute("tangent");
- }
- let worldMatrixBlock = nodeMaterial.getInputBlockByPredicate((b) => b.isSystemValue && b.systemValue === NodeMaterialSystemValues.World);
- if (!worldMatrixBlock) {
- worldMatrixBlock = new InputBlock("World");
- worldMatrixBlock.setAsSystemValue(NodeMaterialSystemValues.World);
- }
- let transformBlock = new TransformBlock("World tangent");
- worldTangentBlock.connectTo(transformBlock);
- worldMatrixBlock.connectTo(transformBlock);
- return transformBlock;
- }
- case "PBRMetallicRoughnessBlock":
- return new PBRMetallicRoughnessBlock("PBRMetallicRoughness");
- case "SheenBlock":
- return new SheenBlock("Sheen");
- case "AnisotropyBlock":
- return new AnisotropyBlock("Anisotropy");
- case "ReflectionBlock":
- return new ReflectionBlock("Reflection");
- case "ClearCoatBlock":
- return new ClearCoatBlock("ClearCoat");
- case "RefractionBlock":
- return new RefractionBlock("Refraction");
- case "SubSurfaceBlock":
- return new SubSurfaceBlock("SubSurface");
- case "CurrentScreenBlock":
- return new CurrentScreenBlock("CurrentScreen");
- case "ParticleUVBlock": {
- let uv = new InputBlock("uv");
- uv.setAsAttribute("particle_uv");
- return uv;
- }
- case "ParticleTextureBlock":
- return new ParticleTextureBlock("ParticleTexture");
- case "ParticleColorBlock": {
- let color = new InputBlock("Color");
- color.setAsAttribute("particle_color");
- return color;
- }
- case "ParticleTextureMaskBlock": {
- let u = new InputBlock("TextureMask");
- u.setAsAttribute("particle_texturemask");
- return u;
- }
- case "ParticlePositionWorldBlock": {
- let pos = new InputBlock("PositionWorld");
- pos.setAsAttribute("particle_positionw");
- return pos;
- }
- case "ParticleRampGradientBlock":
- return new ParticleRampGradientBlock("ParticleRampGradient");
- case "ParticleBlendMultiplyBlock":
- return new ParticleBlendMultiplyBlock("ParticleBlendMultiply");
- case "FragCoordBlock":
- return new FragCoordBlock("FragCoord");
- case "ScreenSizeBlock":
- return new ScreenSizeBlock("ScreenSize");
- }
- return null;
- }
- public static GetColorFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes) {
- let color = "#880000";
- switch (type) {
- case NodeMaterialBlockConnectionPointTypes.Float:
- color = "#cb9e27";
- break;
- case NodeMaterialBlockConnectionPointTypes.Vector2:
- color = "#16bcb1";
- break;
- case NodeMaterialBlockConnectionPointTypes.Vector3:
- case NodeMaterialBlockConnectionPointTypes.Color3:
- color = "#b786cb";
- break;
- case NodeMaterialBlockConnectionPointTypes.Vector4:
- case NodeMaterialBlockConnectionPointTypes.Color4:
- color = "#be5126";
- break;
- case NodeMaterialBlockConnectionPointTypes.Matrix:
- color = "#591990";
- break;
- case NodeMaterialBlockConnectionPointTypes.Object:
- color = "#6174FA";
- break;
- }
- return color;
- }
- public static GetConnectionNodeTypeFromString(type: string) {
- switch (type) {
- case "Float":
- return NodeMaterialBlockConnectionPointTypes.Float;
- case "Vector2":
- return NodeMaterialBlockConnectionPointTypes.Vector2;
- case "Vector3":
- return NodeMaterialBlockConnectionPointTypes.Vector3;
- case "Vector4":
- return NodeMaterialBlockConnectionPointTypes.Vector4;
- case "Matrix":
- return NodeMaterialBlockConnectionPointTypes.Matrix;
- case "Color3":
- return NodeMaterialBlockConnectionPointTypes.Color3;
- case "Color4":
- return NodeMaterialBlockConnectionPointTypes.Color4;
- }
- return NodeMaterialBlockConnectionPointTypes.AutoDetect;
- }
- public static GetStringFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes) {
- switch (type){
- case NodeMaterialBlockConnectionPointTypes.Float:
- return "Float";
- case NodeMaterialBlockConnectionPointTypes.Vector2:
- return "Vector2";
- case NodeMaterialBlockConnectionPointTypes.Vector3:
- return "Vector3";
- case NodeMaterialBlockConnectionPointTypes.Vector4:
- return "Vector4";
- case NodeMaterialBlockConnectionPointTypes.Color3:
- return "Color3";
- case NodeMaterialBlockConnectionPointTypes.Color4:
- return "Color4";
- case NodeMaterialBlockConnectionPointTypes.Matrix:
- return "Matrix";
- }
- return "";
- }
- }
|