├── .editor.js ├── .gitignore ├── README.md ├── dist ├── browser.js ├── index.css ├── panel │ ├── components │ │ └── manager.js │ ├── index.js │ └── operation │ │ ├── base.js │ │ ├── image.js │ │ ├── nodes │ │ ├── artistic │ │ │ └── adjustment │ │ │ │ └── InvertColorsNode.js │ │ ├── channel │ │ │ ├── CombineNode.js │ │ │ └── SplitNode.js │ │ ├── index.js │ │ ├── input │ │ │ ├── InputNode.js │ │ │ ├── PropertyNode.js │ │ │ ├── basic │ │ │ │ ├── BooleanNode.js │ │ │ │ ├── ColorNode.js │ │ │ │ ├── SliderNode.js │ │ │ │ ├── TimeNode.js │ │ │ │ ├── Vector1Node.js │ │ │ │ ├── Vector2Node.js │ │ │ │ ├── Vector3Node.js │ │ │ │ └── Vector4Node.js │ │ │ ├── geometry │ │ │ │ ├── NormalVectorNode.js │ │ │ │ ├── PositionNode.js │ │ │ │ ├── UVNode.js │ │ │ │ └── ViewDirectionNode.js │ │ │ └── texture │ │ │ │ ├── CubemapAssetNode.js │ │ │ │ ├── SampleCubemapNode.js │ │ │ │ ├── SampleTexture2DNode.js │ │ │ │ ├── Texture2DAssetNode.js │ │ │ │ └── TextureAssetNode.js │ │ ├── master │ │ │ ├── MasterNode.js │ │ │ ├── PBRMasterNode.js │ │ │ └── UnlitMasterNode.js │ │ ├── math │ │ │ ├── advanced │ │ │ │ ├── AbsoluteNode.js │ │ │ │ ├── ExponentialNode.js │ │ │ │ ├── LengthNode.js │ │ │ │ ├── LogNode.js │ │ │ │ ├── ModuloNode.js │ │ │ │ ├── NegateNode.js │ │ │ │ ├── NormalizeNode.js │ │ │ │ ├── PosterizeNode.js │ │ │ │ └── ReciprocalNode.js │ │ │ ├── basic │ │ │ │ ├── AddNode.js │ │ │ │ ├── DivideNode.js │ │ │ │ ├── MultiplyNode.js │ │ │ │ ├── PowerNode.js │ │ │ │ ├── SquareRootNode.js │ │ │ │ └── SubtractNode.js │ │ │ ├── derivative │ │ │ │ ├── DDXNode.js │ │ │ │ ├── DDXYNode.js │ │ │ │ └── DDYNode.js │ │ │ ├── interpolation │ │ │ │ ├── InverseLerpNode.js │ │ │ │ ├── LerpNode.js │ │ │ │ └── SmoothstepNode.js │ │ │ ├── range │ │ │ │ ├── ClampNode.js │ │ │ │ ├── FractionNode.js │ │ │ │ ├── MaximumNode.js │ │ │ │ ├── MinimumNode.js │ │ │ │ ├── OneMinusNode.js │ │ │ │ ├── RandomRangeNode.js │ │ │ │ ├── RemapNode.js │ │ │ │ └── SaturateNode.js │ │ │ ├── round │ │ │ │ ├── CeilingNode.js │ │ │ │ ├── FloorNode.js │ │ │ │ ├── RoundNode.js │ │ │ │ ├── SignNode.js │ │ │ │ ├── StepNode.js │ │ │ │ └── TruncateNode.js │ │ │ ├── trigonometry │ │ │ │ ├── ArccosineNode.js │ │ │ │ ├── ArcsineNode.js │ │ │ │ ├── Arctangent2Node.js │ │ │ │ ├── ArctangentNode.js │ │ │ │ ├── CosineNode.js │ │ │ │ ├── DegreesToRadiansNode.js │ │ │ │ ├── HyperbolicCosineNode.js │ │ │ │ ├── HyperbolicSineNode.js │ │ │ │ ├── HyperbolicTangentNode.js │ │ │ │ ├── RadiansToDegreesNode.js │ │ │ │ ├── SineNode.js │ │ │ │ └── TangentNode.js │ │ │ ├── vector │ │ │ │ ├── CrossProductNode.js │ │ │ │ ├── DistanceNode.js │ │ │ │ ├── DotProductNode.js │ │ │ │ ├── FresnelNode.js │ │ │ │ ├── ProjectionNode.js │ │ │ │ ├── ReflectionNode.js │ │ │ │ ├── RejectionNode.js │ │ │ │ └── SphereMaskNode.js │ │ │ └── wave │ │ │ │ └── TriangleWaveNode.js │ │ ├── procedural │ │ │ ├── noise │ │ │ │ ├── GradientNoiseNode.js │ │ │ │ └── NoiseNode.js │ │ │ └── shape │ │ │ │ ├── EllipseNode.js │ │ │ │ ├── RectangleNode.js │ │ │ │ ├── RoundedRectangleNode.js │ │ │ │ └── ShapeNode.js │ │ ├── subgraph │ │ │ ├── SubGraphNode.js │ │ │ └── SubGraphOutputNode.js │ │ ├── utility │ │ │ └── PreviewNode.js │ │ └── uv │ │ │ ├── PolarCoordinatesNode.js │ │ │ ├── RotateNode.js │ │ │ └── TilingAndOffsetNode.js │ │ ├── shadergraph.js │ │ ├── type.js │ │ └── utils.js └── utils │ └── editor-exports.js ├── i18n ├── en.js └── zh.js ├── package-lock.json ├── package.json ├── source ├── browser.ts ├── panel │ ├── components │ │ └── manager.ts │ ├── index.ts │ └── operation │ │ ├── base.ts │ │ ├── nodes │ │ ├── artistic │ │ │ └── adjustment │ │ │ │ └── InvertColorsNode.ts │ │ ├── channel │ │ │ ├── CombineNode.ts │ │ │ └── SplitNode.ts │ │ ├── index.ts │ │ ├── input │ │ │ ├── InputNode.ts │ │ │ ├── PropertyNode.ts │ │ │ ├── basic │ │ │ │ ├── BooleanNode.ts │ │ │ │ ├── ColorNode.ts │ │ │ │ ├── SliderNode.ts │ │ │ │ ├── TimeNode.ts │ │ │ │ ├── Vector1Node.ts │ │ │ │ ├── Vector2Node.ts │ │ │ │ ├── Vector3Node.ts │ │ │ │ └── Vector4Node.ts │ │ │ ├── geometry │ │ │ │ ├── NormalVectorNode.ts │ │ │ │ ├── PositionNode.ts │ │ │ │ ├── UVNode.ts │ │ │ │ └── ViewDirectionNode.ts │ │ │ └── texture │ │ │ │ ├── CubemapAssetNode.ts │ │ │ │ ├── SampleCubemapNode.ts │ │ │ │ ├── SampleTexture2DNode.ts │ │ │ │ ├── Texture2DAssetNode.ts │ │ │ │ └── TextureAssetNode.ts │ │ ├── master │ │ │ ├── MasterNode.ts │ │ │ ├── PBRMasterNode.ts │ │ │ └── UnlitMasterNode.ts │ │ ├── math │ │ │ ├── advanced │ │ │ │ ├── AbsoluteNode.ts │ │ │ │ ├── ExponentialNode.ts │ │ │ │ ├── LengthNode.ts │ │ │ │ ├── LogNode.ts │ │ │ │ ├── ModuloNode.ts │ │ │ │ ├── NegateNode.ts │ │ │ │ ├── NormalizeNode.ts │ │ │ │ ├── PosterizeNode.ts │ │ │ │ └── ReciprocalNode.ts │ │ │ ├── basic │ │ │ │ ├── AddNode.ts │ │ │ │ ├── DivideNode.ts │ │ │ │ ├── MultiplyNode.ts │ │ │ │ ├── PowerNode.ts │ │ │ │ ├── SquareRootNode.ts │ │ │ │ └── SubtractNode.ts │ │ │ ├── derivative │ │ │ │ ├── DDXNode.ts │ │ │ │ ├── DDXYNode.ts │ │ │ │ └── DDYNode.ts │ │ │ ├── interpolation │ │ │ │ ├── InverseLerpNode.ts │ │ │ │ ├── LerpNode.ts │ │ │ │ └── SmoothstepNode.ts │ │ │ ├── range │ │ │ │ ├── ClampNode.ts │ │ │ │ ├── FractionNode.ts │ │ │ │ ├── MaximumNode.ts │ │ │ │ ├── MinimumNode.ts │ │ │ │ ├── OneMinusNode.ts │ │ │ │ ├── RandomRangeNode.ts │ │ │ │ ├── RemapNode.ts │ │ │ │ └── SaturateNode.ts │ │ │ ├── round │ │ │ │ ├── CeilingNode.ts │ │ │ │ ├── FloorNode.ts │ │ │ │ ├── RoundNode.ts │ │ │ │ ├── SignNode.ts │ │ │ │ ├── StepNode.ts │ │ │ │ └── TruncateNode.ts │ │ │ ├── trigonometry │ │ │ │ ├── ArccosineNode.ts │ │ │ │ ├── ArcsineNode.ts │ │ │ │ ├── Arctangent2Node.ts │ │ │ │ ├── ArctangentNode.ts │ │ │ │ ├── CosineNode.ts │ │ │ │ ├── DegreesToRadiansNode.ts │ │ │ │ ├── HyperbolicCosineNode.ts │ │ │ │ ├── HyperbolicSineNode.ts │ │ │ │ ├── HyperbolicTangentNode.ts │ │ │ │ ├── RadiansToDegreesNode.ts │ │ │ │ ├── SineNode.ts │ │ │ │ └── TangentNode.ts │ │ │ ├── vector │ │ │ │ ├── CrossProductNode.ts │ │ │ │ ├── DistanceNode.ts │ │ │ │ ├── DotProductNode.ts │ │ │ │ ├── FresnelNode.ts │ │ │ │ ├── ProjectionNode.ts │ │ │ │ ├── ReflectionNode.ts │ │ │ │ ├── RejectionNode.ts │ │ │ │ └── SphereMaskNode.ts │ │ │ └── wave │ │ │ │ └── TriangleWaveNode.ts │ │ ├── procedural │ │ │ ├── noise │ │ │ │ ├── GradientNoiseNode.ts │ │ │ │ └── NoiseNode.ts │ │ │ └── shape │ │ │ │ ├── EllipseNode.ts │ │ │ │ ├── RectangleNode.ts │ │ │ │ ├── RoundedRectangleNode.ts │ │ │ │ └── ShapeNode.ts │ │ ├── subgraph │ │ │ ├── SubGraphNode.ts │ │ │ └── SubGraphOutputNode.ts │ │ ├── utility │ │ │ └── PreviewNode.ts │ │ └── uv │ │ │ ├── PolarCoordinatesNode.ts │ │ │ ├── RotateNode.ts │ │ │ └── TilingAndOffsetNode.ts │ │ ├── shadergraph.ts │ │ ├── type.ts │ │ └── utils.ts └── utils │ └── editor-exports.ts ├── static ├── icon.png ├── shader-templates │ ├── chunks │ │ ├── common.chunk │ │ ├── noise.chunk │ │ ├── shape.chunk │ │ └── uv.chunk │ └── master │ │ ├── PBRMasterNode.effect │ │ └── UnlitMasterNode.effect ├── style │ └── index.less └── template │ └── index.html └── tsconfig.json /.editor.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | /** 4 | * 需要编译的 ts 文件夹 5 | */ 6 | exports.js = function() { 7 | return ['./']; 8 | } 9 | 10 | /** 11 | * 需要编译的 less 文件夹 12 | */ 13 | exports.css = function() { 14 | return [ 15 | { 16 | source: './static/style/index.less', 17 | dist: './dist/index.css', 18 | }, 19 | ]; 20 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | #////////////////////////// 2 | # NPM 3 | #////////////////////////// 4 | node_modules/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # **Shader Graph Tool** 2 | 3 | **Shader Graph Tool** (Based on Cocos Creator 3D v3.4) can import **Unity Shader Graph** files as Cocos Creator Effect files. 4 | 5 | **Note** : **Unity Shader Graph** has more than 200 Shader Nodes, we had implemented about 100 Shader Nodes of them. Still working hard on it. 6 | 7 | # Install 8 | 9 | 1. Clone to the `extensions` folder 10 | 11 | `cd extensions` 12 | 13 | `git clone git@github.com:2youyou2/shader-graph.git` 14 | 15 | 2. `cd shader-graph` 16 | 4. `npm install` 17 | 18 | # Usage 19 | 20 | 1. Click the **shader-graph** menu on the top bar. 21 | 22 | ![image](https://user-images.githubusercontent.com/1862402/90206720-fb00c580-de16-11ea-8f20-40989e3d6196.png) 23 | 24 | 2. Add the src folder and dst folder to configuration. 25 | - The src folder should contains the *.ShaderGraph files and the relative *.ShaderSubGraph files. 26 | - Shader Graph will generate the effect files to the dst folder. 27 | 28 | 3. Click **generate** button 29 | 30 | 31 | # Screenshots 32 | 33 | ![image](https://user-images.githubusercontent.com/1862402/90206312-f1c32900-de15-11ea-9db6-2cbb5df9df36.png) 34 | 35 | ![image](https://user-images.githubusercontent.com/1862402/90207181-2fc14c80-de18-11ea-88a5-6c16c45fd331.png) 36 | 37 | ![image](https://user-images.githubusercontent.com/1862402/90206362-09021680-de16-11ea-93e5-8890e0b9ce4d.png) 38 | 39 | ![image](https://user-images.githubusercontent.com/1862402/90206424-26cf7b80-de16-11ea-95f2-dbb1993ff9d8.png) 40 | -------------------------------------------------------------------------------- /dist/index.css: -------------------------------------------------------------------------------- 1 | .shadergraph { 2 | height: 100%; 3 | flex-direction: column; 4 | } 5 | .shadergraph .directory { 6 | display: flex; 7 | flex-direction: row; 8 | width: 100%; 9 | } 10 | .shadergraph .directory-item { 11 | padding: 10px; 12 | display: flex; 13 | flex-direction: column; 14 | flex: 1; 15 | width: 100%; 16 | } 17 | .shadergraph .directory-item-sub { 18 | display: flex; 19 | flex-direction: row; 20 | } 21 | .shadergraph .directory-item-sub .name { 22 | width: 30px; 23 | } 24 | .shadergraph ui-file { 25 | flex: 1; 26 | } 27 | .shadergraph .add { 28 | width: 100%; 29 | padding: 10px; 30 | margin-top: 20px; 31 | } 32 | .shadergraph .generate { 33 | width: 100%; 34 | padding: 10px; 35 | margin-top: 20px; 36 | } 37 | .shadergraph .button { 38 | display: flex; 39 | justify-content: center; 40 | align-items: center; 41 | justify-items: center; 42 | flex-direction: column; 43 | } 44 | -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/InputNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../base"); 4 | const type_1 = require("../../type"); 5 | class InputNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | } 10 | } 11 | exports.default = InputNode; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW5wdXROb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9pbnB1dC9JbnB1dE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBd0M7QUFDeEMscUNBQW1EO0FBRW5ELE1BQXFCLFNBQVUsU0FBUSxpQkFBVTtJQUFqRDs7UUFDSSwwQkFBcUIsR0FBRyw0QkFBcUIsQ0FBQyxLQUFLLENBQUM7SUFDeEQsQ0FBQztDQUFBO0FBRkQsNEJBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIElucHV0Tm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLkZpeGVkO1xyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/PropertyNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../base"); 4 | const type_1 = require("../../type"); 5 | class PropertyNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | this.property = null; 10 | this.isPropertyNode = true; 11 | // generateCode () { 12 | // return `${this.getOutputVarDefine(0)} = ${this.property?.name};`; 13 | // } 14 | } 15 | searchProperties(properties) { 16 | this.property = properties.find(p => { 17 | return p.data.m_Guid.m_GuidSerialized === this.data.m_PropertyGuidSerialized; 18 | }); 19 | if (this.property) { 20 | this.property.node = this; 21 | } 22 | } 23 | } 24 | exports.default = PropertyNode; 25 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvcGVydHlOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9pbnB1dC9Qcm9wZXJ0eU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBdUQ7QUFDdkQscUNBQW1EO0FBRW5ELE1BQXFCLFlBQWEsU0FBUSxpQkFBVTtJQUFwRDs7UUFDSSwwQkFBcUIsR0FBRyw0QkFBcUIsQ0FBQyxLQUFLLENBQUM7UUFDcEQsYUFBUSxHQUF5QixJQUFJLENBQUM7UUFFdEMsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFZdEIsb0JBQW9CO1FBQ3BCLHdFQUF3RTtRQUN4RSxJQUFJO0lBQ1IsQ0FBQztJQWJHLGdCQUFnQixDQUFFLFVBQVU7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUNqRixDQUFDLENBQUMsQ0FBQTtRQUVGLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUM3QjtJQUNMLENBQUM7Q0FLSjtBQW5CRCwrQkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlLCBTaGFkZXJQcm9wZXJ5IH0gZnJvbSBcIi4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFByb3BlcnR5Tm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLkZpeGVkO1xyXG4gICAgcHJvcGVydHk6IFNoYWRlclByb3BlcnkgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICBpc1Byb3BlcnR5Tm9kZSA9IHRydWU7XHJcblxyXG4gICAgc2VhcmNoUHJvcGVydGllcyAocHJvcGVydGllcykge1xyXG4gICAgICAgIHRoaXMucHJvcGVydHkgPSBwcm9wZXJ0aWVzLmZpbmQocCA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBwLmRhdGEubV9HdWlkLm1fR3VpZFNlcmlhbGl6ZWQgPT09IHRoaXMuZGF0YS5tX1Byb3BlcnR5R3VpZFNlcmlhbGl6ZWQ7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHkpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9wZXJ0eS5ub2RlID0gdGhpcztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgIC8vICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gJHt0aGlzLnByb3BlcnR5Py5uYW1lfTtgO1xyXG4gICAgLy8gfVxyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/basic/BooleanNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const InputNode_1 = __importDefault(require("../InputNode")); 7 | class BooleanNode extends InputNode_1.default { 8 | generateCode() { 9 | return `bool ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; 10 | } 11 | } 12 | exports.default = BooleanNode; 13 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9vbGVhbk5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL2lucHV0L2Jhc2ljL0Jvb2xlYW5Ob2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkRBQXFDO0FBRXJDLE1BQXFCLFdBQVksU0FBUSxtQkFBUztJQUM5QyxZQUFZO1FBQ1IsT0FBTyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDMUUsQ0FBQztDQUNKO0FBSkQsOEJBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSW5wdXROb2RlIGZyb20gXCIuLi9JbnB1dE5vZGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvb2xlYW5Ob2RlIGV4dGVuZHMgSW5wdXROb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGBib29sICR7dGhpcy5nZXRPdXRwdXRWYXJOYW1lKDApfSA9ICR7dGhpcy5nZXRJbnB1dFZhbHVlKDApfTtgO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/basic/SliderNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const InputNode_1 = __importDefault(require("../InputNode")); 7 | const utils_1 = require("../../../utils"); 8 | class SliderNode extends InputNode_1.default { 9 | constructor() { 10 | super(...arguments); 11 | this.fixedConcretePrecision = 1; 12 | } 13 | generateCode() { 14 | let slot = this.slots[0]; 15 | let value = utils_1.getFloatString(this.data.m_Value.x); 16 | return `${slot.varDefine} = ${value};`; 17 | } 18 | } 19 | exports.default = SliderNode; 20 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xpZGVyTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvaW5wdXQvYmFzaWMvU2xpZGVyTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZEQUFxQztBQUVyQywwQ0FBZ0Q7QUFFaEQsTUFBcUIsVUFBVyxTQUFRLG1CQUFTO0lBQWpEOztRQUNJLDJCQUFzQixHQUFHLENBQUMsQ0FBQztJQU8vQixDQUFDO0lBTEcsWUFBWTtRQUNSLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxLQUFLLEdBQUcsc0JBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoRCxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsTUFBTSxLQUFLLEdBQUcsQ0FBQztJQUMzQyxDQUFDO0NBQ0o7QUFSRCw2QkFRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBJbnB1dE5vZGUgZnJvbSBcIi4uL0lucHV0Tm9kZVwiO1xyXG5pbXBvcnQgeyBDb25jcmV0ZVByZWNpc2lvblR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZVwiO1xyXG5pbXBvcnQgeyBnZXRGbG9hdFN0cmluZyB9IGZyb20gXCIuLi8uLi8uLi91dGlsc1wiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2xpZGVyTm9kZSBleHRlbmRzIElucHV0Tm9kZSB7XHJcbiAgICBmaXhlZENvbmNyZXRlUHJlY2lzaW9uID0gMTtcclxuXHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBzbG90ID0gdGhpcy5zbG90c1swXTtcclxuICAgICAgICBsZXQgdmFsdWUgPSBnZXRGbG9hdFN0cmluZyh0aGlzLmRhdGEubV9WYWx1ZS54KTtcclxuICAgICAgICByZXR1cm4gYCR7c2xvdC52YXJEZWZpbmV9ID0gJHt2YWx1ZX07YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/basic/Vector1Node.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const InputNode_1 = __importDefault(require("../InputNode")); 7 | class Vector1Node extends InputNode_1.default { 8 | generateCode() { 9 | return `float ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; 10 | } 11 | } 12 | exports.default = Vector1Node; 13 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yMU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL2lucHV0L2Jhc2ljL1ZlY3RvcjFOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkRBQXFDO0FBRXJDLE1BQXFCLFdBQVksU0FBUSxtQkFBUztJQUM5QyxZQUFZO1FBQ1IsT0FBTyxTQUFTLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDM0UsQ0FBQztDQUNKO0FBSkQsOEJBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSW5wdXROb2RlIGZyb20gXCIuLi9JbnB1dE5vZGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFZlY3RvcjFOb2RlIGV4dGVuZHMgSW5wdXROb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGBmbG9hdCAke3RoaXMuZ2V0T3V0cHV0VmFyTmFtZSgwKX0gPSAke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX07YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/basic/Vector2Node.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const InputNode_1 = __importDefault(require("../InputNode")); 7 | class Vector2Node extends InputNode_1.default { 8 | generateCode() { 9 | let x = this.getInputValue(0); 10 | let y = this.getInputValue(1); 11 | return `vec2 ${this.getOutputVarName(0)} = vec2(${x}, ${y});`; 12 | } 13 | } 14 | exports.default = Vector2Node; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yMk5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL2lucHV0L2Jhc2ljL1ZlY3RvcjJOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkRBQXFDO0FBRXJDLE1BQXFCLFdBQVksU0FBUSxtQkFBUztJQUM5QyxZQUFZO1FBQ1IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sUUFBUSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQU5ELDhCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IElucHV0Tm9kZSBmcm9tIFwiLi4vSW5wdXROb2RlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWN0b3IyTm9kZSBleHRlbmRzIElucHV0Tm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCB4ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCB5ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIHJldHVybiBgdmVjMiAke3RoaXMuZ2V0T3V0cHV0VmFyTmFtZSgwKX0gPSB2ZWMyKCR7eH0sICR7eX0pO2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/basic/Vector3Node.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const InputNode_1 = __importDefault(require("../InputNode")); 7 | class Vector3Node extends InputNode_1.default { 8 | generateCode() { 9 | let x = this.getInputValue(0); 10 | let y = this.getInputValue(1); 11 | let z = this.getInputValue(2); 12 | return `vec3 ${this.getOutputVarName(0)} = vec3(${x}, ${y}, ${z});`; 13 | } 14 | } 15 | exports.default = Vector3Node; 16 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yM05vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL2lucHV0L2Jhc2ljL1ZlY3RvcjNOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkRBQXFDO0FBRXJDLE1BQXFCLFdBQVksU0FBUSxtQkFBUztJQUM5QyxZQUFZO1FBQ1IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3hFLENBQUM7Q0FDSjtBQVBELDhCQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IElucHV0Tm9kZSBmcm9tIFwiLi4vSW5wdXROb2RlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWN0b3IzTm9kZSBleHRlbmRzIElucHV0Tm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCB4ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCB5ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIGxldCB6ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDIpO1xyXG4gICAgICAgIHJldHVybiBgdmVjMyAke3RoaXMuZ2V0T3V0cHV0VmFyTmFtZSgwKX0gPSB2ZWMzKCR7eH0sICR7eX0sICR7en0pO2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/basic/Vector4Node.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const InputNode_1 = __importDefault(require("../InputNode")); 7 | class Vector4Node extends InputNode_1.default { 8 | generateCode() { 9 | let x = this.getInputValue(0); 10 | let y = this.getInputValue(1); 11 | let z = this.getInputValue(2); 12 | let w = this.getInputValue(3); 13 | return `vec4 ${this.getOutputVarName(0)} = vec4(${x}, ${y}, ${z}, ${w});`; 14 | } 15 | } 16 | exports.default = Vector4Node; 17 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmVjdG9yNE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL2lucHV0L2Jhc2ljL1ZlY3RvcjROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkRBQXFDO0FBRXJDLE1BQXFCLFdBQVksU0FBUSxtQkFBUztJQUM5QyxZQUFZO1FBQ1IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixPQUFPLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQzlFLENBQUM7Q0FDSjtBQVJELDhCQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IElucHV0Tm9kZSBmcm9tIFwiLi4vSW5wdXROb2RlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBWZWN0b3I0Tm9kZSBleHRlbmRzIElucHV0Tm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCB4ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCB5ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIGxldCB6ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDIpO1xyXG4gICAgICAgIGxldCB3ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDMpO1xyXG4gICAgICAgIHJldHVybiBgdmVjNCAke3RoaXMuZ2V0T3V0cHV0VmFyTmFtZSgwKX0gPSB2ZWM0KCR7eH0sICR7eX0sICR7en0sICR7d30pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/geometry/UVNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class UVNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | } 10 | calcConcretePrecision() { 11 | this.slots.forEach(slot => { 12 | slot._concretePrecision = 2; 13 | }); 14 | } 15 | generateCode() { 16 | let uvName = 'v_uv'; 17 | if (this.data.m_OutputChannel) { 18 | uvName = `v_uv${this.data.m_OutputChannel}`; 19 | } 20 | return `${this.getOutputVarDefine(0)} = ${uvName};`; 21 | } 22 | } 23 | exports.default = UVNode; 24 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVVZOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9pbnB1dC9nZW9tZXRyeS9VVk5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFDM0Msd0NBQXNEO0FBRXRELE1BQXFCLE1BQU8sU0FBUSxpQkFBVTtJQUE5Qzs7UUFDSSwwQkFBcUIsR0FBRyw0QkFBcUIsQ0FBQyxLQUFLLENBQUM7SUFleEQsQ0FBQztJQWJHLHFCQUFxQjtRQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFlBQVk7UUFDUixJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUMzQixNQUFNLEdBQUcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQy9DO1FBQ0QsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxNQUFNLEdBQUcsQ0FBQztJQUN4RCxDQUFDO0NBQ0o7QUFoQkQseUJBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcbmltcG9ydCB7IENvbmNyZXRlUHJlY2lzaW9uVHlwZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBVVk5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGNvbmNyZXRlUHJlY2lzaW9uVHlwZSA9IENvbmNyZXRlUHJlY2lzaW9uVHlwZS5GaXhlZDtcclxuXHJcbiAgICBjYWxjQ29uY3JldGVQcmVjaXNpb24gKCkge1xyXG4gICAgICAgIHRoaXMuc2xvdHMuZm9yRWFjaChzbG90ID0+IHtcclxuICAgICAgICAgICAgc2xvdC5fY29uY3JldGVQcmVjaXNpb24gPSAyO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgdXZOYW1lID0gJ3ZfdXYnO1xyXG4gICAgICAgIGlmICh0aGlzLmRhdGEubV9PdXRwdXRDaGFubmVsKSB7XHJcbiAgICAgICAgICAgIHV2TmFtZSA9IGB2X3V2JHt0aGlzLmRhdGEubV9PdXRwdXRDaGFubmVsfWA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSAke3V2TmFtZX07YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/texture/CubemapAssetNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const TextureAssetNode_1 = __importDefault(require("./TextureAssetNode")); 7 | class CubemapAssetNode extends TextureAssetNode_1.default { 8 | generateCode() { 9 | return `samplerCube ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; 10 | } 11 | } 12 | exports.default = CubemapAssetNode; 13 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3ViZW1hcEFzc2V0Tm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvaW5wdXQvdGV4dHVyZS9DdWJlbWFwQXNzZXROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsMEVBQWtEO0FBRWxELE1BQXFCLGdCQUFpQixTQUFRLDBCQUFnQjtJQUMxRCxZQUFZO1FBQ1IsT0FBTyxlQUFlLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDakYsQ0FBQztDQUNKO0FBSkQsbUNBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVGV4dHVyZUFzc2V0Tm9kZSBmcm9tIFwiLi9UZXh0dXJlQXNzZXROb2RlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDdWJlbWFwQXNzZXROb2RlIGV4dGVuZHMgVGV4dHVyZUFzc2V0Tm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIHJldHVybiBgc2FtcGxlckN1YmUgJHt0aGlzLmdldE91dHB1dFZhck5hbWUoMCl9ID0gJHt0aGlzLmdldElucHV0VmFsdWUoMCl9O2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/texture/Texture2DAssetNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const TextureAssetNode_1 = __importDefault(require("./TextureAssetNode")); 7 | class Texture2DAssetNode extends TextureAssetNode_1.default { 8 | generateCode() { 9 | return `sampler2D ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; 10 | } 11 | } 12 | exports.default = Texture2DAssetNode; 13 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dHVyZTJEQXNzZXROb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9pbnB1dC90ZXh0dXJlL1RleHR1cmUyREFzc2V0Tm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDBFQUFrRDtBQUVsRCxNQUFxQixrQkFBbUIsU0FBUSwwQkFBZ0I7SUFDNUQsWUFBWTtRQUNSLE9BQU8sYUFBYSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBQy9FLENBQUM7Q0FDSjtBQUpELHFDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFRleHR1cmVBc3NldE5vZGUgZnJvbSBcIi4vVGV4dHVyZUFzc2V0Tm9kZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGV4dHVyZTJEQXNzZXROb2RlIGV4dGVuZHMgVGV4dHVyZUFzc2V0Tm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIHJldHVybiBgc2FtcGxlcjJEICR7dGhpcy5nZXRPdXRwdXRWYXJOYW1lKDApfSA9ICR7dGhpcy5nZXRJbnB1dFZhbHVlKDApfTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/input/texture/TextureAssetNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class TextureAssetNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Texture; 9 | } 10 | } 11 | exports.default = TextureAssetNode; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dHVyZUFzc2V0Tm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvaW5wdXQvdGV4dHVyZS9UZXh0dXJlQXNzZXROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBQzNDLHdDQUFzRDtBQUV0RCxNQUFxQixnQkFBaUIsU0FBUSxpQkFBVTtJQUF4RDs7UUFDSSwwQkFBcUIsR0FBRyw0QkFBcUIsQ0FBQyxPQUFPLENBQUM7SUFDMUQsQ0FBQztDQUFBO0FBRkQsbUNBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRleHR1cmVBc3NldE5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGNvbmNyZXRlUHJlY2lzaW9uVHlwZSA9IENvbmNyZXRlUHJlY2lzaW9uVHlwZS5UZXh0dXJlO1xyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/master/PBRMasterNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const path_1 = __importDefault(require("path")); 7 | const MasterNode_1 = __importDefault(require("./MasterNode")); 8 | const utils_1 = require("../../utils"); 9 | const type_1 = require("../../type"); 10 | class PBRMasterNode extends MasterNode_1.default { 11 | constructor(data) { 12 | super(data); 13 | this.vsSlotIndices = ['Vertex Position', 'Vertex Normal', 'Vertex Tangent']; 14 | this.fsSlotIndices = ['Albedo', 'Normal', 'Emission', 'Metallic', 'Smoothness', 'Occlusion', 'Alpha', 'AlphaClipThreshold']; 15 | this.templatePath = path_1.default.join(utils_1.shaderTemplatesDir, 'master/PBRMasterNode.effect'); 16 | this.depVarings = [type_1.PositionSpace.World, type_1.NormalSpace.World]; 17 | } 18 | } 19 | exports.default = PBRMasterNode; 20 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUEJSTWFzdGVyTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWFzdGVyL1BCUk1hc3Rlck5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxnREFBd0I7QUFDeEIsOERBQXNDO0FBQ3RDLHVDQUFpRDtBQUNqRCxxQ0FBd0Q7QUFFeEQsTUFBcUIsYUFBYyxTQUFRLG9CQUFVO0lBUWpELFlBQWEsSUFBSTtRQUNiLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQVJmLGtCQUFhLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN2RSxrQkFBYSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFFdkgsaUJBQVksR0FBRyxjQUFJLENBQUMsSUFBSSxDQUFDLDBCQUFrQixFQUFFLDZCQUE2QixDQUFDLENBQUM7UUFFNUUsZUFBVSxHQUFHLENBQUMsb0JBQWEsQ0FBQyxLQUFLLEVBQUUsa0JBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUlyRCxDQUFDO0NBQ0o7QUFYRCxnQ0FXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgTWFzdGVyTm9kZSBmcm9tIFwiLi9NYXN0ZXJOb2RlXCI7XHJcbmltcG9ydCB7IHNoYWRlclRlbXBsYXRlc0RpciB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuaW1wb3J0IHsgTm9ybWFsU3BhY2UsIFBvc2l0aW9uU3BhY2UgfSBmcm9tICcuLi8uLi90eXBlJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBCUk1hc3Rlck5vZGUgZXh0ZW5kcyBNYXN0ZXJOb2RlIHtcclxuICAgIHZzU2xvdEluZGljZXMgPSBbJ1ZlcnRleCBQb3NpdGlvbicsICdWZXJ0ZXggTm9ybWFsJywgJ1ZlcnRleCBUYW5nZW50J107XHJcbiAgICBmc1Nsb3RJbmRpY2VzID0gWydBbGJlZG8nLCAnTm9ybWFsJywgJ0VtaXNzaW9uJywgJ01ldGFsbGljJywgJ1Ntb290aG5lc3MnLCAnT2NjbHVzaW9uJywgJ0FscGhhJywgJ0FscGhhQ2xpcFRocmVzaG9sZCddO1xyXG5cclxuICAgIHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbihzaGFkZXJUZW1wbGF0ZXNEaXIsICdtYXN0ZXIvUEJSTWFzdGVyTm9kZS5lZmZlY3QnKTtcclxuXHJcbiAgICBkZXBWYXJpbmdzID0gW1Bvc2l0aW9uU3BhY2UuV29ybGQsIE5vcm1hbFNwYWNlLldvcmxkXVxyXG5cclxuICAgIGNvbnN0cnVjdG9yIChkYXRhKSB7XHJcbiAgICAgICAgc3VwZXIoZGF0YSlcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/master/UnlitMasterNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const path_1 = __importDefault(require("path")); 7 | const MasterNode_1 = __importDefault(require("./MasterNode")); 8 | const utils_1 = require("../../utils"); 9 | class UnlitMasterNode extends MasterNode_1.default { 10 | constructor() { 11 | super(...arguments); 12 | this.vsSlotIndices = ['Vertex Position', 'Vertex Normal', 'Vertex Tangent']; 13 | this.fsSlotIndices = ['Color', 'Alpha', 'AlphaClipThreshold']; 14 | this.templatePath = path_1.default.join(utils_1.shaderTemplatesDir, 'master/UnlitMasterNode.effect'); 15 | } 16 | } 17 | exports.default = UnlitMasterNode; 18 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVW5saXRNYXN0ZXJOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXN0ZXIvVW5saXRNYXN0ZXJOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsZ0RBQXdCO0FBQ3hCLDhEQUFzQztBQUN0Qyx1Q0FBaUQ7QUFFakQsTUFBcUIsZUFBZ0IsU0FBUSxvQkFBVTtJQUF2RDs7UUFDSSxrQkFBYSxHQUFHLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdkUsa0JBQWEsR0FBRyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUV6RCxpQkFBWSxHQUFHLGNBQUksQ0FBQyxJQUFJLENBQUMsMEJBQWtCLEVBQUUsK0JBQStCLENBQUMsQ0FBQTtJQUNqRixDQUFDO0NBQUE7QUFMRCxrQ0FLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgTWFzdGVyTm9kZSBmcm9tIFwiLi9NYXN0ZXJOb2RlXCI7XHJcbmltcG9ydCB7IHNoYWRlclRlbXBsYXRlc0RpciB9IGZyb20gJy4uLy4uL3V0aWxzJztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVubGl0TWFzdGVyTm9kZSBleHRlbmRzIE1hc3Rlck5vZGUge1xyXG4gICAgdnNTbG90SW5kaWNlcyA9IFsnVmVydGV4IFBvc2l0aW9uJywgJ1ZlcnRleCBOb3JtYWwnLCAnVmVydGV4IFRhbmdlbnQnXTtcclxuICAgIGZzU2xvdEluZGljZXMgPSBbJ0NvbG9yJywgJ0FscGhhJywgJ0FscGhhQ2xpcFRocmVzaG9sZCddO1xyXG5cclxuICAgIHRlbXBsYXRlUGF0aCA9IHBhdGguam9pbihzaGFkZXJUZW1wbGF0ZXNEaXIsICdtYXN0ZXIvVW5saXRNYXN0ZXJOb2RlLmVmZmVjdCcpXHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/advanced/AbsoluteNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class AbsoluteNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = abs(${this.getInputValue(0)});`; 7 | } 8 | } 9 | exports.default = AbsoluteNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzb2x1dGVOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL2FkdmFuY2VkL0Fic29sdXRlTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUF1RDtBQUV2RCxNQUFxQixZQUFhLFNBQVEsaUJBQVU7SUFDaEQsWUFBWTtRQUNSLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVFLENBQUM7Q0FDSjtBQUpELCtCQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSwgU2hhZGVyU2xvdCB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBYnNvbHV0ZU5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGFicygke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/advanced/ExponentialNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class ExponentialNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = exp(${this.getInputValue(0)});`; 7 | } 8 | } 9 | exports.default = ExponentialNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwb25lbnRpYWxOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL2FkdmFuY2VkL0V4cG9uZW50aWFsTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixlQUFnQixTQUFRLGlCQUFVO0lBQ25ELFlBQVk7UUFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RSxDQUFDO0NBQ0o7QUFKRCxrQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXhwb25lbnRpYWxOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSBleHAoJHt0aGlzLmdldElucHV0VmFsdWUoMCl9KTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/advanced/LengthNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class LengthNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | } 10 | generateCode() { 11 | return `${this.getOutputVarDefine(0)} = length(${this.getInputValue(0)});`; 12 | } 13 | } 14 | exports.default = LengthNode; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVuZ3RoTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9hZHZhbmNlZC9MZW5ndGhOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBQzNDLHdDQUFzRDtBQUV0RCxNQUFxQixVQUFXLFNBQVEsaUJBQVU7SUFBbEQ7O1FBQ0ksMEJBQXFCLEdBQUcsNEJBQXFCLENBQUMsS0FBSyxDQUFDO0lBS3hELENBQUM7SUFIRyxZQUFZO1FBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDL0UsQ0FBQztDQUNKO0FBTkQsNkJBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIExlbmd0aE5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGNvbmNyZXRlUHJlY2lzaW9uVHlwZSA9IENvbmNyZXRlUHJlY2lzaW9uVHlwZS5GaXhlZDtcclxuXHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSBsZW5ndGgoJHt0aGlzLmdldElucHV0VmFsdWUoMCl9KTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/advanced/LogNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class ExponentialNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = log(${this.getInputValue(0)});`; 7 | } 8 | } 9 | exports.default = ExponentialNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9hZHZhbmNlZC9Mb2dOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLGVBQWdCLFNBQVEsaUJBQVU7SUFDbkQsWUFBWTtRQUNSLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVFLENBQUM7Q0FDSjtBQUpELGtDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFeHBvbmVudGlhbE5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGxvZygke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/advanced/ModuloNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class ModuloNode extends base_1.ShaderNode { 5 | calcConcretePrecision() { 6 | super.calcConcretePrecision(); 7 | } 8 | generateCode() { 9 | let A = this.getInputValue(0); 10 | let B = this.getInputValue(1); 11 | return `${this.getOutputVarDefine(0)} = mod(${A}, ${B});`; 12 | } 13 | } 14 | exports.default = ModuloNode; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxvTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9hZHZhbmNlZC9Nb2R1bG9Ob2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLFVBQVcsU0FBUSxpQkFBVTtJQUM5QyxxQkFBcUI7UUFDakIsS0FBSyxDQUFDLHFCQUFxQixFQUFFLENBQUE7SUFDakMsQ0FBQztJQUNELFlBQVk7UUFDUixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDOUQsQ0FBQztDQUNKO0FBVEQsNkJBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZHVsb05vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGNhbGNDb25jcmV0ZVByZWNpc2lvbiAoKSB7XHJcbiAgICAgICAgc3VwZXIuY2FsY0NvbmNyZXRlUHJlY2lzaW9uKClcclxuICAgIH1cclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgbGV0IEEgPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgbGV0IEIgPSB0aGlzLmdldElucHV0VmFsdWUoMSk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IG1vZCgke0F9LCAke0J9KTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/advanced/NegateNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class NegateNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = -${this.getInputValue(0)};`; 7 | } 8 | } 9 | exports.default = NegateNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmVnYXRlTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9hZHZhbmNlZC9OZWdhdGVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLFVBQVcsU0FBUSxpQkFBVTtJQUM5QyxZQUFZO1FBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDeEUsQ0FBQztDQUNKO0FBSkQsNkJBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5lZ2F0ZU5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IC0ke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX07YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/advanced/NormalizeNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class NormalizeNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = normalize(${this.getInputValue(0)});`; 7 | } 8 | } 9 | exports.default = NormalizeNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9ybWFsaXplTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9hZHZhbmNlZC9Ob3JtYWxpemVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLGFBQWMsU0FBUSxpQkFBVTtJQUNqRCxZQUFZO1FBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNsRixDQUFDO0NBQ0o7QUFKRCxnQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTm9ybWFsaXplTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gbm9ybWFsaXplKCR7dGhpcy5nZXRJbnB1dFZhbHVlKDApfSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/advanced/PosterizeNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class PosterizeNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = floor(${this.getInputValue(0)} / (1. / ${this.getInputValue(1)})) * (1. / ${this.getInputValue(1)});`; 7 | } 8 | } 9 | exports.default = PosterizeNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9zdGVyaXplTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9hZHZhbmNlZC9Qb3N0ZXJpemVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLGFBQWMsU0FBUSxpQkFBVTtJQUNqRCxZQUFZO1FBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGNBQWMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xKLENBQUM7Q0FDSjtBQUpELGdDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQb3N0ZXJpemVOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSBmbG9vcigke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0gLyAoMS4gLyAke3RoaXMuZ2V0SW5wdXRWYWx1ZSgxKX0pKSAqICgxLiAvICR7dGhpcy5nZXRJbnB1dFZhbHVlKDEpfSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/advanced/ReciprocalNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class NormalizeNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = 1. / (${this.getInputValue(0)} * ${this.getInputValue(0)});`; 7 | } 8 | } 9 | exports.default = NormalizeNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjaXByb2NhbE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvYWR2YW5jZWQvUmVjaXByb2NhbE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsYUFBYyxTQUFRLGlCQUFVO0lBQ2pELFlBQVk7UUFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxZQUFZLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3pHLENBQUM7Q0FDSjtBQUpELGdDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb3JtYWxpemVOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSAxLiAvICgke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0gKiAke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/basic/AddNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class AddNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Max; 9 | } 10 | generateCode() { 11 | return `${this.getOutputVarDefine(0)} = ${this.getInputValue(0)} + ${this.getInputValue(1)};`; 12 | } 13 | } 14 | exports.default = AddNode; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRkTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9iYXNpYy9BZGROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBQzNDLHdDQUFzRDtBQUV0RCxNQUFxQixPQUFRLFNBQVEsaUJBQVU7SUFBL0M7O1FBQ0ksMEJBQXFCLEdBQUcsNEJBQXFCLENBQUMsR0FBRyxDQUFDO0lBS3RELENBQUM7SUFIRyxZQUFZO1FBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNsRyxDQUFDO0NBQ0o7QUFORCwwQkFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5pbXBvcnQgeyBDb25jcmV0ZVByZWNpc2lvblR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWRkTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLk1heDtcclxuXHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSAke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0gKyAke3RoaXMuZ2V0SW5wdXRWYWx1ZSgxKX07YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/basic/DivideNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class DivideNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Max; 9 | } 10 | generateCode() { 11 | return `${this.getOutputVarDefine(0)} = ${this.getInputValue(0)} / ${this.getInputValue(1)};`; 12 | } 13 | } 14 | exports.default = DivideNode; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGl2aWRlTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9iYXNpYy9EaXZpZGVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBQzNDLHdDQUFzRDtBQUV0RCxNQUFxQixVQUFXLFNBQVEsaUJBQVU7SUFBbEQ7O1FBQ0ksMEJBQXFCLEdBQUcsNEJBQXFCLENBQUMsR0FBRyxDQUFDO0lBSXRELENBQUM7SUFIRyxZQUFZO1FBQ1IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUNsRyxDQUFDO0NBQ0o7QUFMRCw2QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5pbXBvcnQgeyBDb25jcmV0ZVByZWNpc2lvblR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGl2aWRlTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLk1heDtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9ICR7dGhpcy5nZXRJbnB1dFZhbHVlKDApfSAvICR7dGhpcy5nZXRJbnB1dFZhbHVlKDEpfTtgO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/basic/MultiplyNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class MultiplyNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Max; 9 | } 10 | generateCode() { 11 | let a = this.getInputValue(0); 12 | let b = this.getInputValue(1); 13 | return `${this.getOutputVarDefine(0)} = ${a} * ${b};`; 14 | } 15 | } 16 | exports.default = MultiplyNode; 17 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTXVsdGlwbHlOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL2Jhc2ljL011bHRpcGx5Tm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUMzQyx3Q0FBc0Q7QUFFdEQsTUFBcUIsWUFBYSxTQUFRLGlCQUFVO0lBQXBEOztRQUNJLDBCQUFxQixHQUFHLDRCQUFxQixDQUFDLEdBQUcsQ0FBQztJQU90RCxDQUFDO0lBTEcsWUFBWTtRQUNSLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztJQUMxRCxDQUFDO0NBQ0o7QUFSRCwrQkFRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5pbXBvcnQgeyBDb25jcmV0ZVByZWNpc2lvblR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTXVsdGlwbHlOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBjb25jcmV0ZVByZWNpc2lvblR5cGUgPSBDb25jcmV0ZVByZWNpc2lvblR5cGUuTWF4O1xyXG4gICAgXHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBhID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCBiID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSAke2F9ICogJHtifTtgO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/basic/PowerNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class PowerNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | } 10 | generateCode() { 11 | return `${this.getOutputVarDefine(0)} = pow(${this.getInputValue(0)}, ${this.getInputValue(1)});`; 12 | } 13 | } 14 | exports.default = PowerNode; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG93ZXJOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL2Jhc2ljL1Bvd2VyTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUMzQyx3Q0FBc0Q7QUFFdEQsTUFBcUIsU0FBVSxTQUFRLGlCQUFVO0lBQWpEOztRQUNJLDBCQUFxQixHQUFHLDRCQUFxQixDQUFDLEtBQUssQ0FBQztJQUl4RCxDQUFDO0lBSEcsWUFBWTtRQUNSLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEcsQ0FBQztDQUNKO0FBTEQsNEJBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvd2VyTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLkZpeGVkO1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gcG93KCR7dGhpcy5nZXRJbnB1dFZhbHVlKDApfSwgJHt0aGlzLmdldElucHV0VmFsdWUoMSl9KTtgO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/basic/SquareRootNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class SquareRootNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = sqrt(${this.getInputValue(0)}, ${this.getInputValue(1)});`; 7 | } 8 | } 9 | exports.default = SquareRootNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3F1YXJlUm9vdE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvYmFzaWMvU3F1YXJlUm9vdE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsY0FBZSxTQUFRLGlCQUFVO0lBQ2xELFlBQVk7UUFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZHLENBQUM7Q0FDSjtBQUpELGlDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTcXVhcmVSb290Tm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gc3FydCgke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0sICR7dGhpcy5nZXRJbnB1dFZhbHVlKDEpfSk7YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/basic/SubtractNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class SubtractNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Max; 9 | } 10 | generateCode() { 11 | return `${this.getOutputVarDefine(0)} = ${this.getInputValue(0)} - ${this.getInputValue(1)};`; 12 | } 13 | } 14 | exports.default = SubtractNode; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3VidHJhY3ROb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL2Jhc2ljL1N1YnRyYWN0Tm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUMzQyx3Q0FBc0Q7QUFFdEQsTUFBcUIsWUFBYSxTQUFRLGlCQUFVO0lBQXBEOztRQUNJLDBCQUFxQixHQUFHLDRCQUFxQixDQUFDLEdBQUcsQ0FBQztJQUt0RCxDQUFDO0lBSEcsWUFBWTtRQUNSLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFDbEcsQ0FBQztDQUNKO0FBTkQsK0JBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN1YnRyYWN0Tm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLk1heDtcclxuXHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSAke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0gLSAke3RoaXMuZ2V0SW5wdXRWYWx1ZSgxKX07YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/derivative/DDXNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class DDXNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = dFdx(${this.getInputValue(0)});`; 7 | } 8 | } 9 | exports.default = DDXNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRERYTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9kZXJpdmF0aXZlL0REWE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsT0FBUSxTQUFRLGlCQUFVO0lBQzNDLFlBQVk7UUFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RSxDQUFDO0NBQ0o7QUFKRCwwQkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRERYTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gZEZkeCgke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/derivative/DDXYNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class DDXYNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = abs(dFdx(${this.getInputValue(0)})) + abs(dFdy(${this.getInputValue(0)}));`; 7 | } 8 | } 9 | exports.default = DDXYNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRERYWU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvZGVyaXZhdGl2ZS9ERFhZTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixRQUFTLFNBQVEsaUJBQVU7SUFDNUMsWUFBWTtRQUNSLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4SCxDQUFDO0NBQ0o7QUFKRCwyQkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRERYWU5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGFicyhkRmR4KCR7dGhpcy5nZXRJbnB1dFZhbHVlKDApfSkpICsgYWJzKGRGZHkoJHt0aGlzLmdldElucHV0VmFsdWUoMCl9KSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/derivative/DDYNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class DDYNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = dFdy(${this.getInputValue(0)});`; 7 | } 8 | } 9 | exports.default = DDYNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRERZTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC9kZXJpdmF0aXZlL0REWU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsT0FBUSxTQUFRLGlCQUFVO0lBQzNDLFlBQVk7UUFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3RSxDQUFDO0NBQ0o7QUFKRCwwQkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRERZTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gZEZkeSgke3RoaXMuZ2V0SW5wdXRWYWx1ZSgwKX0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/interpolation/InverseLerpNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class InverseLerpNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let A = this.getInputValue(0); 7 | let B = this.getInputValue(1); 8 | let T = this.getInputValue(2); 9 | return `${this.getOutputVarDefine(0)} = (${T} - ${A}}) / (${B} - ${A}});`; 10 | } 11 | } 12 | exports.default = InverseLerpNode; 13 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW52ZXJzZUxlcnBOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL2ludGVycG9sYXRpb24vSW52ZXJzZUxlcnBOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLGVBQWdCLFNBQVEsaUJBQVU7SUFDbkQsWUFBWTtRQUNSLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDOUUsQ0FBQztDQUNKO0FBUEQsa0NBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEludmVyc2VMZXJwTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgQSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgQiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICBsZXQgVCA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgyKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gKCR7VH0gLSAke0F9fSkgLyAoJHtCfSAtICR7QX19KTtgO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/interpolation/LerpNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class LerpNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Max; 9 | } 10 | generateCode() { 11 | let A = this.getInputValue(0); 12 | let B = this.getInputValue(1); 13 | let T = this.getInputValue(2); 14 | return `${this.getOutputVarDefine(0)} = mix(${A}, ${B}, ${T});`; 15 | } 16 | } 17 | exports.default = LerpNode; 18 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGVycE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvaW50ZXJwb2xhdGlvbi9MZXJwTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUMzQyx3Q0FBc0Q7QUFFdEQsTUFBcUIsUUFBUyxTQUFRLGlCQUFVO0lBQWhEOztRQUNJLDBCQUFxQixHQUFHLDRCQUFxQixDQUFDLEdBQUcsQ0FBQztJQU90RCxDQUFDO0lBTkcsWUFBWTtRQUNSLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztJQUNwRSxDQUFDO0NBQ0o7QUFSRCwyQkFRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5pbXBvcnQgeyBDb25jcmV0ZVByZWNpc2lvblR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGVycE5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGNvbmNyZXRlUHJlY2lzaW9uVHlwZSA9IENvbmNyZXRlUHJlY2lzaW9uVHlwZS5NYXg7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBBID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCBCID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIGxldCBUID0gdGhpcy5nZXRJbnB1dFZhbHVlKDIpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSBtaXgoJHtBfSwgJHtCfSwgJHtUfSk7YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/interpolation/SmoothstepNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class SmoothstepNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let Edge1 = this.getInputValue(0); 7 | let Edge2 = this.getInputValue(1); 8 | let In = this.getInputValue(2); 9 | return `${this.getOutputVarDefine(0)} = smoothstep(${Edge1}, ${Edge2}, ${In});`; 10 | } 11 | } 12 | exports.default = SmoothstepNode; 13 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU21vb3Roc3RlcE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvaW50ZXJwb2xhdGlvbi9TbW9vdGhzdGVwTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixjQUFlLFNBQVEsaUJBQVU7SUFDbEQsWUFBWTtRQUNSLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLEVBQUUsR0FBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixLQUFLLEtBQUssS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDO0lBQ3BGLENBQUM7Q0FDSjtBQVBELGlDQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTbW9vdGhzdGVwTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgRWRnZTEgPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgbGV0IEVkZ2UyID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIGxldCBJbiAgICA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgyKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gc21vb3Roc3RlcCgke0VkZ2UxfSwgJHtFZGdlMn0sICR7SW59KTtgO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/range/ClampNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class ClampNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | let min = this.getInputValue(1); 8 | let max = this.getInputValue(2); 9 | return `${this.getOutputVarDefine(0)} = clamp(${In}, ${min}, ${max});`; 10 | } 11 | } 12 | exports.default = ClampNode; 13 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhbXBOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3JhbmdlL0NsYW1wTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixTQUFVLFNBQVEsaUJBQVU7SUFDN0MsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQztJQUMzRSxDQUFDO0NBQ0o7QUFQRCw0QkFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2xhbXBOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgbWluID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIGxldCBtYXggPSB0aGlzLmdldElucHV0VmFsdWUoMik7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGNsYW1wKCR7SW59LCAke21pbn0sICR7bWF4fSk7YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/range/FractionNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class FractionNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = fract(${In});`; 8 | } 9 | } 10 | exports.default = FractionNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJhY3Rpb25Ob2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3JhbmdlL0ZyYWN0aW9uTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixZQUFhLFNBQVEsaUJBQVU7SUFDaEQsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztJQUMzRCxDQUFDO0NBQ0o7QUFMRCwrQkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJhY3Rpb25Ob2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gZnJhY3QoJHtJbn0pO2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/range/MaximumNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class MaximumNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let a = this.getInputValue(0); 7 | let b = this.getInputValue(1); 8 | return `${this.getOutputVarDefine(0)} = max(${a}, ${b});`; 9 | } 10 | } 11 | exports.default = MaximumNode; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF4aW11bU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvcmFuZ2UvTWF4aW11bU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsV0FBWSxTQUFRLGlCQUFVO0lBQy9DLFlBQVk7UUFDUixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDOUQsQ0FBQztDQUNKO0FBTkQsOEJBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1heGltdW1Ob2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBhID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCBiID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSBtYXgoJHthfSwgJHtifSk7YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/range/MinimumNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class MinimumNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let a = this.getInputValue(0); 7 | let b = this.getInputValue(1); 8 | return `${this.getOutputVarDefine(0)} = min(${a}, ${b});`; 9 | } 10 | } 11 | exports.default = MinimumNode; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWluaW11bU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvcmFuZ2UvTWluaW11bU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsV0FBWSxTQUFRLGlCQUFVO0lBQy9DLFlBQVk7UUFDUixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDOUQsQ0FBQztDQUNKO0FBTkQsOEJBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1pbmltdW1Ob2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBhID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCBiID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSBtaW4oJHthfSwgJHtifSk7YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/range/OneMinusNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class MinimumNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = 1. - ${In};`; 8 | } 9 | } 10 | exports.default = MinimumNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT25lTWludXNOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3JhbmdlL09uZU1pbnVzTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixXQUFZLFNBQVEsaUJBQVU7SUFDL0MsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztJQUN6RCxDQUFDO0NBQ0o7QUFMRCw4QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWluaW11bU5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgbGV0IEluID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSAxLiAtICR7SW59O2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/range/RandomRangeNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class RandomRangeNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | } 10 | generateCode() { 11 | let seed = this.getInputValue(0); 12 | let min = this.getInputValue(1); 13 | let max = this.getInputValue(2); 14 | return `${this.getOutputVarDefine(0)} = randomRange(${seed}, ${min}, ${max});`; 15 | } 16 | } 17 | exports.default = RandomRangeNode; 18 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFuZG9tUmFuZ2VOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3JhbmdlL1JhbmRvbVJhbmdlTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUMzQyx3Q0FBc0Q7QUFFdEQsTUFBcUIsZUFBZ0IsU0FBUSxpQkFBVTtJQUF2RDs7UUFDSSwwQkFBcUIsR0FBRyw0QkFBcUIsQ0FBQyxLQUFLLENBQUM7SUFReEQsQ0FBQztJQU5HLFlBQVk7UUFDUixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNuRixDQUFDO0NBQ0o7QUFURCxrQ0FTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5pbXBvcnQgeyBDb25jcmV0ZVByZWNpc2lvblR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmFuZG9tUmFuZ2VOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBjb25jcmV0ZVByZWNpc2lvblR5cGUgPSBDb25jcmV0ZVByZWNpc2lvblR5cGUuRml4ZWQ7XHJcbiAgICBcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgbGV0IHNlZWQgPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgbGV0IG1pbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICBsZXQgbWF4ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDIpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSByYW5kb21SYW5nZSgke3NlZWR9LCAke21pbn0sICR7bWF4fSk7YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/range/RemapNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class RemapNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | } 10 | generateCode() { 11 | let In = this.getInputValue(0); 12 | let InMinMax = this.getInputValue(1); 13 | let OutMinMax = this.getInputValue(2); 14 | return `${this.getOutputVarDefine(0)} = ${OutMinMax}.x + (${In} - ${InMinMax}.x) * (${OutMinMax}.y - ${OutMinMax}.x) / (${InMinMax}.y - ${InMinMax}.x);`; 15 | } 16 | } 17 | exports.default = RemapNode; 18 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtYXBOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3JhbmdlL1JlbWFwTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUMzQyx3Q0FBc0Q7QUFFdEQsTUFBcUIsU0FBVSxTQUFRLGlCQUFVO0lBQWpEOztRQUNJLDBCQUFxQixHQUFHLDRCQUFxQixDQUFDLEtBQUssQ0FBQztJQVF4RCxDQUFDO0lBTkcsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RDLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE1BQU0sU0FBUyxTQUFTLEVBQUUsTUFBTSxRQUFRLFVBQVUsU0FBUyxRQUFRLFNBQVMsVUFBVSxRQUFRLFFBQVEsUUFBUSxNQUFNLENBQUM7SUFDN0osQ0FBQztDQUNKO0FBVEQsNEJBU0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlbWFwTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLkZpeGVkO1xyXG5cclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgbGV0IEluID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCBJbk1pbk1heCA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICBsZXQgT3V0TWluTWF4ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDIpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSAke091dE1pbk1heH0ueCArICgke0lufSAtICR7SW5NaW5NYXh9LngpICogKCR7T3V0TWluTWF4fS55IC0gJHtPdXRNaW5NYXh9LngpIC8gKCR7SW5NaW5NYXh9LnkgLSAke0luTWluTWF4fS54KTtgO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/range/SaturateNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class SaturateNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let IN = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = saturate(${IN});`; 8 | } 9 | } 10 | exports.default = SaturateNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2F0dXJhdGVOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3JhbmdlL1NhdHVyYXRlTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixZQUFhLFNBQVEsaUJBQVU7SUFDaEQsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQztJQUM5RCxDQUFDO0NBQ0o7QUFMRCwrQkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2F0dXJhdGVOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJTiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gc2F0dXJhdGUoJHtJTn0pO2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/round/CeilingNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class CeilingNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = ceil(${In});`; 8 | } 9 | } 10 | exports.default = CeilingNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2VpbGluZ05vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvcm91bmQvQ2VpbGluZ05vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsV0FBWSxTQUFRLGlCQUFVO0lBQy9DLFlBQVk7UUFDUixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7SUFDMUQsQ0FBQztDQUNKO0FBTEQsOEJBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENlaWxpbmdOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gY2VpbCgke0lufSk7YDtcclxuICAgIH1cclxufVxyXG5cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/round/FloorNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class FloorNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = floor(${In});`; 8 | } 9 | } 10 | exports.default = FloorNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRmxvb3JOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3JvdW5kL0Zsb29yTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixTQUFVLFNBQVEsaUJBQVU7SUFDN0MsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztJQUMzRCxDQUFDO0NBQ0o7QUFMRCw0QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmxvb3JOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gZmxvb3IoJHtJbn0pO2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/round/RoundNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class RoundNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = floor(${In} + 0.5);`; 8 | } 9 | } 10 | exports.default = RoundNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91bmROb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3JvdW5kL1JvdW5kTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixTQUFVLFNBQVEsaUJBQVU7SUFDN0MsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQztJQUNqRSxDQUFDO0NBQ0o7QUFMRCw0QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm91bmROb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gZmxvb3IoJHtJbn0gKyAwLjUpO2A7XHJcbiAgICB9XHJcbn1cclxuXHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/round/SignNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class SignNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = sign(${In});`; 8 | } 9 | } 10 | exports.default = SignNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lnbk5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvcm91bmQvU2lnbk5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsUUFBUyxTQUFRLGlCQUFVO0lBQzVDLFlBQVk7UUFDUixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7SUFDMUQsQ0FBQztDQUNKO0FBTEQsMkJBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNpZ25Ob2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gc2lnbigke0lufSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/round/StepNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class StepNode extends base_1.ShaderNode { 5 | calcConcretePrecision() { 6 | super.calcConcretePrecision(); 7 | } 8 | generateCode() { 9 | let edge = this.getInputValue(0); 10 | let In = this.getInputValue(1); 11 | return `${this.getOutputVarDefine(0)} = step(${edge}, ${In});`; 12 | } 13 | } 14 | exports.default = StepNode; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RlcE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvcm91bmQvU3RlcE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsUUFBUyxTQUFRLGlCQUFVO0lBQzVDLHFCQUFxQjtRQUNqQixLQUFLLENBQUMscUJBQXFCLEVBQUUsQ0FBQTtJQUNqQyxDQUFDO0lBQ0QsWUFBWTtRQUNSLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxXQUFXLElBQUksS0FBSyxFQUFFLElBQUksQ0FBQztJQUNuRSxDQUFDO0NBQ0o7QUFURCwyQkFTQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3RlcE5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGNhbGNDb25jcmV0ZVByZWNpc2lvbiAoKSB7XHJcbiAgICAgICAgc3VwZXIuY2FsY0NvbmNyZXRlUHJlY2lzaW9uKClcclxuICAgIH1cclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgbGV0IGVkZ2UgPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgbGV0IEluID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSBzdGVwKCR7ZWRnZX0sICR7SW59KTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/round/TruncateNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class TruncateNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = trunc(${In});`; 8 | } 9 | } 10 | exports.default = TruncateNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJ1bmNhdGVOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3JvdW5kL1RydW5jYXRlTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixZQUFhLFNBQVEsaUJBQVU7SUFDaEQsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQztJQUMzRCxDQUFDO0NBQ0o7QUFMRCwrQkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVHJ1bmNhdGVOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gdHJ1bmMoJHtJbn0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/ArccosineNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class ArccosineNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = acos(${In});`; 8 | } 9 | } 10 | exports.default = ArccosineNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjY29zaW5lTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC90cmlnb25vbWV0cnkvQXJjY29zaW5lTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixhQUFjLFNBQVEsaUJBQVU7SUFDakQsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztJQUMxRCxDQUFDO0NBQ0o7QUFMRCxnQ0FLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXJjY29zaW5lTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgSW4gPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGFjb3MoJHtJbn0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/ArcsineNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class ArcsineNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = asin(${In});`; 8 | } 9 | } 10 | exports.default = ArcsineNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjc2luZU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdHJpZ29ub21ldHJ5L0FyY3NpbmVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLFdBQVksU0FBUSxpQkFBVTtJQUMvQyxZQUFZO1FBQ1IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO0lBQzFELENBQUM7Q0FDSjtBQUxELDhCQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcmNzaW5lTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgSW4gPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGFzaW4oJHtJbn0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/Arctangent2Node.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class Arctangent2Node extends base_1.ShaderNode { 5 | generateCode() { 6 | let a = this.getInputValue(0); 7 | let b = this.getInputValue(0); 8 | return `${this.getOutputVarDefine(0)} = atan2(${a}, ${b});`; 9 | } 10 | } 11 | exports.default = Arctangent2Node; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjdGFuZ2VudDJOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3RyaWdvbm9tZXRyeS9BcmN0YW5nZW50Mk5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsZUFBZ0IsU0FBUSxpQkFBVTtJQUNuRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2hFLENBQUM7Q0FDSjtBQU5ELGtDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcmN0YW5nZW50Mk5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgbGV0IGEgPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgbGV0IGIgPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGF0YW4yKCR7YX0sICR7Yn0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/ArctangentNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class ArctangentNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = atan(${In});`; 8 | } 9 | } 10 | exports.default = ArctangentNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXJjdGFuZ2VudE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdHJpZ29ub21ldHJ5L0FyY3RhbmdlbnROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLGNBQWUsU0FBUSxpQkFBVTtJQUNsRCxZQUFZO1FBQ1IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO0lBQzFELENBQUM7Q0FDSjtBQUxELGlDQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcmN0YW5nZW50Tm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgSW4gPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGF0YW4oJHtJbn0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/CosineNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class CosineNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = cos(${In});`; 8 | } 9 | } 10 | exports.default = CosineNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29zaW5lTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC90cmlnb25vbWV0cnkvQ29zaW5lTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixVQUFXLFNBQVEsaUJBQVU7SUFDOUMsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztJQUN6RCxDQUFDO0NBQ0o7QUFMRCw2QkFLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29zaW5lTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgSW4gPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGNvcygke0lufSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/DegreesToRadiansNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class DegreesToRadiansNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = radians(${In});`; 8 | } 9 | } 10 | exports.default = DegreesToRadiansNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVncmVlc1RvUmFkaWFuc05vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdHJpZ29ub21ldHJ5L0RlZ3JlZXNUb1JhZGlhbnNOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLG9CQUFxQixTQUFRLGlCQUFVO0lBQ3hELFlBQVk7UUFDUixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUM7SUFDN0QsQ0FBQztDQUNKO0FBTEQsdUNBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERlZ3JlZXNUb1JhZGlhbnNOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gcmFkaWFucygke0lufSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/HyperbolicCosineNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class HyperbolicCosineNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = sinh(${In});`; 8 | } 9 | } 10 | exports.default = HyperbolicCosineNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHlwZXJib2xpY0Nvc2luZU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdHJpZ29ub21ldHJ5L0h5cGVyYm9saWNDb3NpbmVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLG9CQUFxQixTQUFRLGlCQUFVO0lBQ3hELFlBQVk7UUFDUixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUM7SUFDMUQsQ0FBQztDQUNKO0FBTEQsdUNBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEh5cGVyYm9saWNDb3NpbmVOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gc2luaCgke0lufSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/HyperbolicSineNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class HyperbolicSineNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = sinh(${In});`; 8 | } 9 | } 10 | exports.default = HyperbolicSineNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHlwZXJib2xpY1NpbmVOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3RyaWdvbm9tZXRyeS9IeXBlcmJvbGljU2luZU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsa0JBQW1CLFNBQVEsaUJBQVU7SUFDdEQsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztJQUMxRCxDQUFDO0NBQ0o7QUFMRCxxQ0FLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHlwZXJib2xpY1NpbmVOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gc2luaCgke0lufSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/HyperbolicTangentNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class HyperbolicTangentNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = tanh(${In});`; 8 | } 9 | } 10 | exports.default = HyperbolicTangentNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHlwZXJib2xpY1RhbmdlbnROb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3RyaWdvbm9tZXRyeS9IeXBlcmJvbGljVGFuZ2VudE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIscUJBQXNCLFNBQVEsaUJBQVU7SUFDekQsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQztJQUMxRCxDQUFDO0NBQ0o7QUFMRCx3Q0FLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHlwZXJib2xpY1RhbmdlbnROb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gdGFuaCgke0lufSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/RadiansToDegreesNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class RadiansToDegreesNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = degrees(${In});`; 8 | } 9 | } 10 | exports.default = RadiansToDegreesNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmFkaWFuc1RvRGVncmVlc05vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdHJpZ29ub21ldHJ5L1JhZGlhbnNUb0RlZ3JlZXNOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLG9CQUFxQixTQUFRLGlCQUFVO0lBQ3hELFlBQVk7UUFDUixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUM7SUFDN0QsQ0FBQztDQUNKO0FBTEQsdUNBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJhZGlhbnNUb0RlZ3JlZXNOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gZGVncmVlcygke0lufSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/SineNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class SineNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = sin(${In});`; 8 | } 9 | } 10 | exports.default = SineNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2luZU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdHJpZ29ub21ldHJ5L1NpbmVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLFFBQVMsU0FBUSxpQkFBVTtJQUM1QyxZQUFZO1FBQ1IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQ3pELENBQUM7Q0FDSjtBQUxELDJCQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaW5lTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgSW4gPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IHNpbigke0lufSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/trigonometry/TangentNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class TangentNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = tan(${In});`; 8 | } 9 | } 10 | exports.default = TangentNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFuZ2VudE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdHJpZ29ub21ldHJ5L1RhbmdlbnROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLFdBQVksU0FBUSxpQkFBVTtJQUMvQyxZQUFZO1FBQ1IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO0lBQ3pELENBQUM7Q0FDSjtBQUxELDhCQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUYW5nZW50Tm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgSW4gPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IHRhbigke0lufSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/vector/CrossProductNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class CrossProductNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let A = this.getInputValue(0); 7 | let B = this.getInputValue(1); 8 | return `${this.getOutputVarDefine(0)} = cross(${A}, ${B});`; 9 | } 10 | } 11 | exports.default = CrossProductNode; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3Jvc3NQcm9kdWN0Tm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC92ZWN0b3IvQ3Jvc3NQcm9kdWN0Tm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixnQkFBaUIsU0FBUSxpQkFBVTtJQUNwRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ2hFLENBQUM7Q0FDSjtBQU5ELG1DQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDcm9zc1Byb2R1Y3ROb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBBID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCBCID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSBjcm9zcygke0F9LCAke0J9KTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/vector/DistanceNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class DistanceNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | } 10 | generateCode() { 11 | let A = this.getInputValue(0); 12 | let B = this.getInputValue(1); 13 | return `${this.getOutputVarDefine(0)} = distance(${A}, ${B});`; 14 | } 15 | } 16 | exports.default = DistanceNode; 17 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGlzdGFuY2VOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9tYXRoL3ZlY3Rvci9EaXN0YW5jZU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFDM0Msd0NBQXNEO0FBRXRELE1BQXFCLFlBQWEsU0FBUSxpQkFBVTtJQUFwRDs7UUFDSSwwQkFBcUIsR0FBRyw0QkFBcUIsQ0FBQyxLQUFLLENBQUM7SUFNeEQsQ0FBQztJQUxHLFlBQVk7UUFDUixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDbkUsQ0FBQztDQUNKO0FBUEQsK0JBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3RhbmNlTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLkZpeGVkO1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgQSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgQiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gZGlzdGFuY2UoJHtBfSwgJHtCfSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/vector/DotProductNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class DotProductNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | } 10 | generateCode() { 11 | let A = this.getInputValue(0); 12 | let B = this.getInputValue(1); 13 | return `${this.getOutputVarDefine(0)} = dot(${A}, ${B});`; 14 | } 15 | } 16 | exports.default = DotProductNode; 17 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG90UHJvZHVjdE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdmVjdG9yL0RvdFByb2R1Y3ROb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBQzNDLHdDQUFzRDtBQUV0RCxNQUFxQixjQUFlLFNBQVEsaUJBQVU7SUFBdEQ7O1FBQ0ksMEJBQXFCLEdBQUcsNEJBQXFCLENBQUMsS0FBSyxDQUFDO0lBTXhELENBQUM7SUFMRyxZQUFZO1FBQ1IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQzlELENBQUM7Q0FDSjtBQVBELGlDQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcbmltcG9ydCB7IENvbmNyZXRlUHJlY2lzaW9uVHlwZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBEb3RQcm9kdWN0Tm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLkZpeGVkO1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgQSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgQiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gZG90KCR7QX0sICR7Qn0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/vector/FresnelNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class FresnelNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let Normal = this.getInputValue(0); 7 | let ViewDir = this.getInputValue(1); 8 | let Power = this.getInputValue(2); 9 | return `${this.getOutputVarDefine(0)} = pow((1.0 - saturate(dot(normalize(${Normal}), normalize(${ViewDir})))), ${Power});`; 10 | } 11 | } 12 | exports.default = FresnelNode; 13 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJlc25lbE5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdmVjdG9yL0ZyZXNuZWxOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLFdBQVksU0FBUSxpQkFBVTtJQUMvQyxZQUFZO1FBQ1IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsd0NBQXdDLE1BQU0sZ0JBQWdCLE9BQU8sU0FBUyxLQUFLLElBQUksQ0FBQztJQUNoSSxDQUFDO0NBQ0o7QUFQRCw4QkFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRnJlc25lbE5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgbGV0IE5vcm1hbCA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgVmlld0RpciA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICBsZXQgUG93ZXIgPSB0aGlzLmdldElucHV0VmFsdWUoMik7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IHBvdygoMS4wIC0gc2F0dXJhdGUoZG90KG5vcm1hbGl6ZSgke05vcm1hbH0pLCBub3JtYWxpemUoJHtWaWV3RGlyfSkpKSksICR7UG93ZXJ9KTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/vector/ProjectionNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class ProjectionNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let A = this.getInputValue(0); 7 | let B = this.getInputValue(1); 8 | return `${this.getOutputVarDefine(0)} = ${B} * dot(${A}, ${B}) / dot(${B}, ${B});`; 9 | } 10 | } 11 | exports.default = ProjectionNode; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvamVjdGlvbk5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdmVjdG9yL1Byb2plY3Rpb25Ob2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLGNBQWUsU0FBUSxpQkFBVTtJQUNsRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3ZGLENBQUM7Q0FDSjtBQU5ELGlDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQcm9qZWN0aW9uTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgQSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgQiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gJHtCfSAqIGRvdCgke0F9LCAke0J9KSAvIGRvdCgke0J9LCAke0J9KTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/vector/ReflectionNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class RejectionNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | let Normal = this.getInputValue(1); 8 | return `${this.getOutputVarDefine(0)} = reflect(${In}, ${Normal});`; 9 | } 10 | } 11 | exports.default = RejectionNode; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVmbGVjdGlvbk5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdmVjdG9yL1JlZmxlY3Rpb25Ob2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLGFBQWMsU0FBUSxpQkFBVTtJQUNqRCxZQUFZO1FBQ1IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxLQUFLLE1BQU0sSUFBSSxDQUFDO0lBQ3hFLENBQUM7Q0FDSjtBQU5ELGdDQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWplY3Rpb25Ob2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgTm9ybWFsID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldE91dHB1dFZhckRlZmluZSgwKX0gPSByZWZsZWN0KCR7SW59LCAke05vcm1hbH0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/vector/RejectionNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class DistanceNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let A = this.getInputValue(0); 7 | let B = this.getInputValue(1); 8 | return `${this.getOutputVarDefine(0)} = ${A} - (${B} * dot(${A}, ${B}) / dot(${B}, ${B}));`; 9 | } 10 | } 11 | exports.default = DistanceNode; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVqZWN0aW9uTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC92ZWN0b3IvUmVqZWN0aW9uTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUUzQyxNQUFxQixZQUFhLFNBQVEsaUJBQVU7SUFDaEQsWUFBWTtRQUNSLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDaEcsQ0FBQztDQUNKO0FBTkQsK0JBTUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpc3RhbmNlTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgQSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgQiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gJHtBfSAtICgke0J9ICogZG90KCR7QX0sICR7Qn0pIC8gZG90KCR7Qn0sICR7Qn0pKTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/vector/SphereMaskNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class SphereMaskNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let Coords = this.getInputValue(0); 7 | let Center = this.getInputValue(1); 8 | let Radius = this.getInputValue(1); 9 | let Hardness = this.getInputValue(1); 10 | return `${this.getOutputVarDefine(0)} = 1 - saturate((distance(${Coords}, ${Center}) - ${Radius}) / (1 - ${Hardness}));`; 11 | } 12 | } 13 | exports.default = SphereMaskNode; 14 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BoZXJlTWFza05vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL21hdGgvdmVjdG9yL1NwaGVyZU1hc2tOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0NBQTJDO0FBRTNDLE1BQXFCLGNBQWUsU0FBUSxpQkFBVTtJQUNsRCxZQUFZO1FBQ1IsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyw2QkFBNkIsTUFBTSxLQUFLLE1BQU0sT0FBTyxNQUFNLFlBQVksUUFBUSxLQUFLLENBQUM7SUFDN0gsQ0FBQztDQUNKO0FBUkQsaUNBUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2VcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNwaGVyZU1hc2tOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBDb29yZHMgPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgbGV0IENlbnRlciA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICBsZXQgUmFkaXVzID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIGxldCBIYXJkbmVzcyA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gMSAtIHNhdHVyYXRlKChkaXN0YW5jZSgke0Nvb3Jkc30sICR7Q2VudGVyfSkgLSAke1JhZGl1c30pIC8gKDEgLSAke0hhcmRuZXNzfSkpO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/math/wave/TriangleWaveNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | class TriangleWaveNode extends base_1.ShaderNode { 5 | generateCode() { 6 | let In = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = 2.0 * abs( 2. * (${In} - floor(0.5 + ${In})) ) - 1.0;`; 8 | } 9 | } 10 | exports.default = TriangleWaveNode; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJpYW5nbGVXYXZlTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvbWF0aC93YXZlL1RyaWFuZ2xlV2F2ZU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFFM0MsTUFBcUIsZ0JBQWlCLFNBQVEsaUJBQVU7SUFDcEQsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxDQUFDO0lBQ25HLENBQUM7Q0FDSjtBQUxELG1DQUtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUcmlhbmdsZVdhdmVOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBJbiA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gMi4wICogYWJzKCAyLiAqICgke0lufSAtIGZsb29yKDAuNSArICR7SW59KSkgKSAtIDEuMDtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/procedural/noise/GradientNoiseNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class GradientNoiseNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | this.depChunks = ['noise']; 10 | } 11 | generateCode() { 12 | let uv = this.getInputValue(0); 13 | let scale = this.getInputValue(1); 14 | return `${this.getOutputVarDefine(0)} = gradientNoise(${uv}, ${scale});`; 15 | } 16 | } 17 | exports.default = GradientNoiseNode; 18 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhZGllbnROb2lzZU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL3Byb2NlZHVyYWwvbm9pc2UvR3JhZGllbnROb2lzZU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3Q0FBMkM7QUFDM0Msd0NBQXNEO0FBRXRELE1BQXFCLGlCQUFrQixTQUFRLGlCQUFVO0lBQXpEOztRQUNJLDBCQUFxQixHQUFHLDRCQUFxQixDQUFDLEtBQUssQ0FBQztRQUVwRCxjQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQU96QixDQUFDO0lBTEcsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQzdFLENBQUM7Q0FDSjtBQVZELG9DQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcbmltcG9ydCB7IENvbmNyZXRlUHJlY2lzaW9uVHlwZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBHcmFkaWVudE5vaXNlTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLkZpeGVkO1xyXG5cclxuICAgIGRlcENodW5rcyA9IFsnbm9pc2UnXVxyXG5cclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgbGV0IHV2ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCBzY2FsZSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gZ3JhZGllbnROb2lzZSgke3V2fSwgJHtzY2FsZX0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/procedural/noise/NoiseNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class NoiseNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | this.depChunks = ['noise']; 10 | } 11 | generateCode() { 12 | let uv = this.getInputValue(0); 13 | let scale = this.getInputValue(1); 14 | return `${this.getOutputVarDefine(0)} = simpleNoise(${uv}, ${scale});`; 15 | } 16 | } 17 | exports.default = NoiseNode; 18 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9pc2VOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9wcm9jZWR1cmFsL25vaXNlL05vaXNlTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUMzQyx3Q0FBc0Q7QUFFdEQsTUFBcUIsU0FBVSxTQUFRLGlCQUFVO0lBQWpEOztRQUNJLDBCQUFxQixHQUFHLDRCQUFxQixDQUFDLEtBQUssQ0FBQztRQUVwRCxjQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQU96QixDQUFDO0lBTEcsWUFBWTtRQUNSLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxLQUFLLEtBQUssSUFBSSxDQUFDO0lBQzNFLENBQUM7Q0FDSjtBQVZELDRCQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyTm9kZSB9IGZyb20gXCIuLi8uLi8uLi9iYXNlXCI7XHJcbmltcG9ydCB7IENvbmNyZXRlUHJlY2lzaW9uVHlwZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOb2lzZU5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGNvbmNyZXRlUHJlY2lzaW9uVHlwZSA9IENvbmNyZXRlUHJlY2lzaW9uVHlwZS5GaXhlZDtcclxuXHJcbiAgICBkZXBDaHVua3MgPSBbJ25vaXNlJ11cclxuXHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCB1diA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgc2NhbGUgPSB0aGlzLmdldElucHV0VmFsdWUoMSk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IHNpbXBsZU5vaXNlKCR7dXZ9LCAke3NjYWxlfSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/procedural/shape/EllipseNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const ShapeNode_1 = __importDefault(require("./ShapeNode")); 7 | class EllipseNode extends ShapeNode_1.default { 8 | generateCode() { 9 | let uv = this.getInputValue(0); 10 | let width = this.getInputValue(1); 11 | let height = this.getInputValue(2); 12 | return `${this.getOutputVarDefine(0)} = ellipse(${uv}, ${width}, ${height});`; 13 | } 14 | } 15 | exports.default = EllipseNode; 16 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWxsaXBzZU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL3Byb2NlZHVyYWwvc2hhcGUvRWxsaXBzZU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0REFBb0M7QUFFcEMsTUFBcUIsV0FBWSxTQUFRLG1CQUFTO0lBQzlDLFlBQVk7UUFDUixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsS0FBSyxLQUFLLEtBQUssTUFBTSxJQUFJLENBQUM7SUFDbEYsQ0FBQztDQUNKO0FBUEQsOEJBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU2hhcGVOb2RlIGZyb20gXCIuL1NoYXBlTm9kZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRWxsaXBzZU5vZGUgZXh0ZW5kcyBTaGFwZU5vZGUge1xyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgdXYgPSB0aGlzLmdldElucHV0VmFsdWUoMCk7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSB0aGlzLmdldElucHV0VmFsdWUoMik7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IGVsbGlwc2UoJHt1dn0sICR7d2lkdGh9LCAke2hlaWdodH0pO2A7XHJcbiAgICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/procedural/shape/RectangleNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const ShapeNode_1 = __importDefault(require("./ShapeNode")); 7 | class RectangleNode extends ShapeNode_1.default { 8 | generateCode() { 9 | let uv = this.getInputValue(0); 10 | let width = this.getInputValue(1); 11 | let height = this.getInputValue(2); 12 | return `${this.getOutputVarDefine(0)} = rect(${uv}, ${width}, ${height});`; 13 | } 14 | } 15 | exports.default = RectangleNode; 16 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVjdGFuZ2xlTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvcHJvY2VkdXJhbC9zaGFwZS9SZWN0YW5nbGVOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNERBQW9DO0FBRXBDLE1BQXFCLGFBQWMsU0FBUSxtQkFBUztJQUVoRCxZQUFZO1FBQ1IsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxLQUFLLE1BQU0sSUFBSSxDQUFDO0lBQy9FLENBQUM7Q0FDSjtBQVJELGdDQVFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFNoYXBlTm9kZSBmcm9tIFwiLi9TaGFwZU5vZGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJlY3RhbmdsZU5vZGUgZXh0ZW5kcyBTaGFwZU5vZGUge1xyXG4gICAgXHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCB1diA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICBsZXQgd2lkdGggPSB0aGlzLmdldElucHV0VmFsdWUoMSk7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgyKTtcclxuICAgICAgICByZXR1cm4gYCR7dGhpcy5nZXRPdXRwdXRWYXJEZWZpbmUoMCl9ID0gcmVjdCgke3V2fSwgJHt3aWR0aH0sICR7aGVpZ2h0fSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/procedural/shape/RoundedRectangleNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __importDefault = (this && this.__importDefault) || function (mod) { 3 | return (mod && mod.__esModule) ? mod : { "default": mod }; 4 | }; 5 | Object.defineProperty(exports, "__esModule", { value: true }); 6 | const ShapeNode_1 = __importDefault(require("./ShapeNode")); 7 | class RectangleNode extends ShapeNode_1.default { 8 | generateCode() { 9 | let uv = this.getInputValue(0); 10 | let width = this.getInputValue(1); 11 | let height = this.getInputValue(2); 12 | let radius = this.getInputValue(3); 13 | return `${this.getOutputVarDefine(0)} = reoundRect(${uv}, ${width}, ${height}, ${radius});`; 14 | } 15 | } 16 | exports.default = RectangleNode; 17 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91bmRlZFJlY3RhbmdsZU5vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL3Byb2NlZHVyYWwvc2hhcGUvUm91bmRlZFJlY3RhbmdsZU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0REFBb0M7QUFFcEMsTUFBcUIsYUFBYyxTQUFRLG1CQUFTO0lBQ2hELFlBQVk7UUFDUixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEtBQUssS0FBSyxLQUFLLE1BQU0sS0FBSyxNQUFNLElBQUksQ0FBQztJQUNoRyxDQUFDO0NBQ0o7QUFSRCxnQ0FRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTaGFwZU5vZGUgZnJvbSBcIi4vU2hhcGVOb2RlXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZWN0YW5nbGVOb2RlIGV4dGVuZHMgU2hhcGVOb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgbGV0IHV2ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIGxldCB3aWR0aCA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICBsZXQgaGVpZ2h0ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDIpO1xyXG4gICAgICAgIGxldCByYWRpdXMgPSB0aGlzLmdldElucHV0VmFsdWUoMyk7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9IHJlb3VuZFJlY3QoJHt1dn0sICR7d2lkdGh9LCAke2hlaWdodH0sICR7cmFkaXVzfSk7YDtcclxuICAgIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/panel/operation/nodes/procedural/shape/ShapeNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../../base"); 4 | const type_1 = require("../../../type"); 5 | class ShapeNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | this.depChunks = ['shape']; 10 | } 11 | } 12 | exports.default = ShapeNode; 13 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hhcGVOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9wcm9jZWR1cmFsL3NoYXBlL1NoYXBlTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdDQUEyQztBQUMzQyx3Q0FBc0Q7QUFFdEQsTUFBcUIsU0FBVSxTQUFRLGlCQUFVO0lBQWpEOztRQUNJLDBCQUFxQixHQUFHLDRCQUFxQixDQUFDLEtBQUssQ0FBQztRQUVwRCxjQUFTLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN6QixDQUFDO0NBQUE7QUFKRCw0QkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vLi4vYmFzZVwiO1xyXG5pbXBvcnQgeyBDb25jcmV0ZVByZWNpc2lvblR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vdHlwZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2hhcGVOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBjb25jcmV0ZVByZWNpc2lvblR5cGUgPSBDb25jcmV0ZVByZWNpc2lvblR5cGUuRml4ZWQ7XHJcblxyXG4gICAgZGVwQ2h1bmtzID0gWydzaGFwZSddXHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/subgraph/SubGraphOutputNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../base"); 4 | class SubGraphOutputNode extends base_1.ShaderNode { 5 | } 6 | exports.default = SubGraphOutputNode; 7 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ViR3JhcGhPdXRwdXROb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc291cmNlL3BhbmVsL29wZXJhdGlvbi9ub2Rlcy9zdWJncmFwaC9TdWJHcmFwaE91dHB1dE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBd0M7QUFFeEMsTUFBcUIsa0JBQW1CLFNBQVEsaUJBQVU7Q0FDekQ7QUFERCxxQ0FDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgU3ViR3JhcGhPdXRwdXROb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/panel/operation/nodes/utility/PreviewNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../base"); 4 | class PreviewNode extends base_1.ShaderNode { 5 | generateCode() { 6 | return `${this.getOutputVarDefine(0)} = ${this.getInputValue(0)};`; 7 | } 8 | } 9 | exports.default = PreviewNode; 10 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJldmlld05vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL3V0aWxpdHkvUHJldmlld05vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBd0M7QUFFeEMsTUFBcUIsV0FBWSxTQUFRLGlCQUFVO0lBQy9DLFlBQVk7UUFDUixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUN2RSxDQUFDO0NBQ0o7QUFKRCw4QkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vYmFzZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUHJldmlld05vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGdlbmVyYXRlQ29kZSAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0T3V0cHV0VmFyRGVmaW5lKDApfSA9ICR7dGhpcy5nZXRJbnB1dFZhbHVlKDApfTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/uv/PolarCoordinatesNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../base"); 4 | const type_1 = require("../../type"); 5 | class PolarCoordinatesNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | this.depChunks = ['uv']; 10 | } 11 | generateCode() { 12 | let UV; 13 | if (!this.inputSlots[0].connectSlot) { 14 | UV = 'v_uv'; 15 | } 16 | else { 17 | UV = this.getInputValue(0); 18 | } 19 | let Center = this.getInputValue(1); 20 | let RadialScale = this.getInputValue(2); 21 | let LengthScale = this.getInputValue(2); 22 | return `vec2 ${this.getOutputVarName(0)} = polarCoordinates(${UV}, ${Center}, ${RadialScale}, ${LengthScale});`; 23 | } 24 | } 25 | exports.default = PolarCoordinatesNode; 26 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG9sYXJDb29yZGluYXRlc05vZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zb3VyY2UvcGFuZWwvb3BlcmF0aW9uL25vZGVzL3V2L1BvbGFyQ29vcmRpbmF0ZXNOb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUNBQXdDO0FBQ3hDLHFDQUFtRDtBQUVuRCxNQUFxQixvQkFBcUIsU0FBUSxpQkFBVTtJQUE1RDs7UUFDSSwwQkFBcUIsR0FBRyw0QkFBcUIsQ0FBQyxLQUFLLENBQUM7UUFDcEQsY0FBUyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFldEIsQ0FBQztJQWJHLFlBQVk7UUFDUixJQUFJLEVBQUUsQ0FBQztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRTtZQUNqQyxFQUFFLEdBQUcsTUFBTSxDQUFDO1NBQ2Y7YUFDSTtZQUNELEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsT0FBTyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLEVBQUUsS0FBSyxNQUFNLEtBQUssV0FBVyxLQUFLLFdBQVcsSUFBSSxDQUFDO0lBQ3BILENBQUM7Q0FDSjtBQWpCRCx1Q0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBvbGFyQ29vcmRpbmF0ZXNOb2RlIGV4dGVuZHMgU2hhZGVyTm9kZSB7XHJcbiAgICBjb25jcmV0ZVByZWNpc2lvblR5cGUgPSBDb25jcmV0ZVByZWNpc2lvblR5cGUuRml4ZWQ7XHJcbiAgICBkZXBDaHVua3MgPSBbJ3V2J11cclxuXHJcbiAgICBnZW5lcmF0ZUNvZGUgKCkge1xyXG4gICAgICAgIGxldCBVVjtcclxuICAgICAgICBpZiAoIXRoaXMuaW5wdXRTbG90c1swXS5jb25uZWN0U2xvdCkge1xyXG4gICAgICAgICAgICBVViA9ICd2X3V2JztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIFVWID0gdGhpcy5nZXRJbnB1dFZhbHVlKDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgQ2VudGVyID0gdGhpcy5nZXRJbnB1dFZhbHVlKDEpO1xyXG4gICAgICAgIGxldCBSYWRpYWxTY2FsZSA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgyKTtcclxuICAgICAgICBsZXQgTGVuZ3RoU2NhbGUgPSB0aGlzLmdldElucHV0VmFsdWUoMik7XHJcbiAgICAgICAgcmV0dXJuIGB2ZWMyICR7dGhpcy5nZXRPdXRwdXRWYXJOYW1lKDApfSA9IHBvbGFyQ29vcmRpbmF0ZXMoJHtVVn0sICR7Q2VudGVyfSwgJHtSYWRpYWxTY2FsZX0sICR7TGVuZ3RoU2NhbGV9KTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/uv/RotateNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../base"); 4 | const type_1 = require("../../type"); 5 | class RotateNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | this.depChunks = ['uv']; 10 | } 11 | generateCode() { 12 | let UV; 13 | if (!this.inputSlots[0].connectSlot) { 14 | UV = 'v_uv'; 15 | } 16 | else { 17 | UV = this.getInputValue(0); 18 | } 19 | let Center = this.getInputValue(1); 20 | let Rotation = this.getInputValue(2); 21 | return `vec2 ${this.getOutputVarName(0)} = rotateCoordinates(${UV}, ${Center}, ${Rotation});`; 22 | } 23 | } 24 | exports.default = RotateNode; 25 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm90YXRlTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvdXYvUm90YXRlTm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFDQUF3QztBQUN4QyxxQ0FBbUQ7QUFFbkQsTUFBcUIsVUFBVyxTQUFRLGlCQUFVO0lBQWxEOztRQUNJLDBCQUFxQixHQUFHLDRCQUFxQixDQUFDLEtBQUssQ0FBQztRQUNwRCxjQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQWN0QixDQUFDO0lBWkcsWUFBWTtRQUNSLElBQUksRUFBRSxDQUFDO1FBQ1AsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQ2pDLEVBQUUsR0FBRyxNQUFNLENBQUM7U0FDZjthQUNJO1lBQ0QsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDOUI7UUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckMsT0FBTyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUM7SUFDbEcsQ0FBQztDQUNKO0FBaEJELDZCQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNoYWRlck5vZGUgfSBmcm9tIFwiLi4vLi4vYmFzZVwiO1xyXG5pbXBvcnQgeyBDb25jcmV0ZVByZWNpc2lvblR5cGUgfSBmcm9tIFwiLi4vLi4vdHlwZVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm90YXRlTm9kZSBleHRlbmRzIFNoYWRlck5vZGUge1xyXG4gICAgY29uY3JldGVQcmVjaXNpb25UeXBlID0gQ29uY3JldGVQcmVjaXNpb25UeXBlLkZpeGVkO1xyXG4gICAgZGVwQ2h1bmtzID0gWyd1diddXHJcblxyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgVVY7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlucHV0U2xvdHNbMF0uY29ubmVjdFNsb3QpIHtcclxuICAgICAgICAgICAgVVYgPSAndl91dic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBVViA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IENlbnRlciA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICBsZXQgUm90YXRpb24gPSB0aGlzLmdldElucHV0VmFsdWUoMik7XHJcbiAgICAgICAgcmV0dXJuIGB2ZWMyICR7dGhpcy5nZXRPdXRwdXRWYXJOYW1lKDApfSA9IHJvdGF0ZUNvb3JkaW5hdGVzKCR7VVZ9LCAke0NlbnRlcn0sICR7Um90YXRpb259KTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/panel/operation/nodes/uv/TilingAndOffsetNode.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const base_1 = require("../../base"); 4 | const type_1 = require("../../type"); 5 | class TilingAndOffsetNode extends base_1.ShaderNode { 6 | constructor() { 7 | super(...arguments); 8 | this.concretePrecisionType = type_1.ConcretePrecisionType.Fixed; 9 | } 10 | generateCode() { 11 | let UV; 12 | if (!this.inputSlots[0].connectSlot) { 13 | UV = 'v_uv'; 14 | } 15 | else { 16 | UV = this.getInputValue(0); 17 | } 18 | let Tiling = this.getInputValue(1); 19 | let Offset = this.getInputValue(2); 20 | return `vec2 ${this.getOutputVarName(0)} = ${UV} * ${Tiling} + ${Offset};`; 21 | } 22 | } 23 | exports.default = TilingAndOffsetNode; 24 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGlsaW5nQW5kT2Zmc2V0Tm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NvdXJjZS9wYW5lbC9vcGVyYXRpb24vbm9kZXMvdXYvVGlsaW5nQW5kT2Zmc2V0Tm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHFDQUF3QztBQUN4QyxxQ0FBbUQ7QUFFbkQsTUFBcUIsbUJBQW9CLFNBQVEsaUJBQVU7SUFBM0Q7O1FBQ0ksMEJBQXFCLEdBQUcsNEJBQXFCLENBQUMsS0FBSyxDQUFDO0lBY3hELENBQUM7SUFaRyxZQUFZO1FBQ1IsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUU7WUFDakMsRUFBRSxHQUFHLE1BQU0sQ0FBQztTQUNmO2FBQ0k7WUFDRCxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQyxPQUFPLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxNQUFNLE1BQU0sTUFBTSxHQUFHLENBQUM7SUFDL0UsQ0FBQztDQUNKO0FBZkQsc0NBZUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTaGFkZXJOb2RlIH0gZnJvbSBcIi4uLy4uL2Jhc2VcIjtcclxuaW1wb3J0IHsgQ29uY3JldGVQcmVjaXNpb25UeXBlIH0gZnJvbSBcIi4uLy4uL3R5cGVcIjtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRpbGluZ0FuZE9mZnNldE5vZGUgZXh0ZW5kcyBTaGFkZXJOb2RlIHtcclxuICAgIGNvbmNyZXRlUHJlY2lzaW9uVHlwZSA9IENvbmNyZXRlUHJlY2lzaW9uVHlwZS5GaXhlZDtcclxuICAgIFxyXG4gICAgZ2VuZXJhdGVDb2RlICgpIHtcclxuICAgICAgICBsZXQgVVY7XHJcbiAgICAgICAgaWYgKCF0aGlzLmlucHV0U2xvdHNbMF0uY29ubmVjdFNsb3QpIHtcclxuICAgICAgICAgICAgVVYgPSAndl91dic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBVViA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IFRpbGluZyA9IHRoaXMuZ2V0SW5wdXRWYWx1ZSgxKTtcclxuICAgICAgICBsZXQgT2Zmc2V0ID0gdGhpcy5nZXRJbnB1dFZhbHVlKDIpO1xyXG4gICAgICAgIHJldHVybiBgdmVjMiAke3RoaXMuZ2V0T3V0cHV0VmFyTmFtZSgwKX0gPSAke1VWfSAqICR7VGlsaW5nfSArICR7T2Zmc2V0fTtgO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/utils/editor-exports.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.Editor = void 0; 4 | let _global = typeof window !== 'undefined' && window; 5 | if (!_global) { 6 | _global = typeof global !== 'undefined' && global; 7 | } 8 | exports.Editor = _global.Editor; 9 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLWV4cG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvdXRpbHMvZWRpdG9yLWV4cG9ydHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBSSxPQUFPLEdBQU8sT0FBTyxNQUFNLEtBQUssV0FBVyxJQUFJLE1BQU0sQ0FBQztBQUMxRCxJQUFJLENBQUMsT0FBTyxFQUFFO0lBQ1YsT0FBTyxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUM7Q0FDckQ7QUFFWSxRQUFBLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmxldCBfZ2xvYmFsOmFueSA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdztcclxuaWYgKCFfZ2xvYmFsKSB7XHJcbiAgICBfZ2xvYmFsID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRWRpdG9yID0gX2dsb2JhbC5FZGl0b3I7XHJcbiJdfQ== -------------------------------------------------------------------------------- /i18n/en.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | }; 5 | -------------------------------------------------------------------------------- /i18n/zh.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | 5 | }; 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "shader-grapgh", 3 | "version": "0.0.1", 4 | "author": "youyou", 5 | "contributions": { 6 | "menu": [ 7 | { 8 | "path": "shader-grapgh", 9 | "label": "open", 10 | "message": "open" 11 | } 12 | ], 13 | "messages": { 14 | "open": { 15 | "methods": [ 16 | "open" 17 | ] 18 | }, 19 | "convert": { 20 | "methods": [ 21 | "convert" 22 | ] 23 | } 24 | } 25 | }, 26 | "main": "./dist/browser.js", 27 | "panels": { 28 | "default": { 29 | "title": "shader-grapgh", 30 | "icon": "./static/icon.png", 31 | "main": "./dist/panel/index.js", 32 | "min-width": 400, 33 | "min-height": 400, 34 | "width": 400, 35 | "height": 600 36 | } 37 | }, 38 | "scripts": { 39 | "build-style": "lessc static/style/index.less > dist/index.css", 40 | "build": "tsc", 41 | "watch": "tsc --watch" 42 | }, 43 | "devDependencies": { 44 | "@types/node": "^14.0.24" 45 | }, 46 | "dependencies": { 47 | "fire-fs": "^0.2.4", 48 | "fire-path": "^0.1.9", 49 | "globby": "^11.0.1", 50 | "lessc": "^1.0.2", 51 | "typescript": "^3.9.7", 52 | "vue": "^2.6.11" 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /source/browser.ts: -------------------------------------------------------------------------------- 1 | import { Editor } from './utils/editor-exports'; 2 | 3 | import ShaderGraph from './panel/operation/shadergraph'; 4 | import fs from 'fire-fs'; 5 | import path from 'path'; 6 | 7 | 8 | /** 9 | * 插件定义的方法 10 | * Methods defined by plug-ins 11 | * 可以在 package.json 里的 contributions 里定义 messages 触发这里的方法 12 | * And of course, messages can be defined in the contributions section in package.JSON to trigger the method here 13 | */ 14 | exports.methods = { 15 | async open() { 16 | Editor.Panel.open('shader-grapgh'); 17 | }, 18 | 19 | async convert (src: string, dst: string, baseDir: string) { 20 | ShaderGraph.subgraphPath = baseDir; 21 | let content = ShaderGraph.decode(src); 22 | fs.ensureDirSync(path.dirname(dst)) 23 | fs.writeFileSync(dst, content); 24 | 25 | let relPath = path.relative(Editor.Project.path, dst); 26 | let url = 'db://' + relPath; 27 | await Editor.Message.request('asset-db', 'refresh-asset', url); 28 | } 29 | }; 30 | 31 | /** 32 | * 启动的时候执行的初始化方法 33 | * Initialization method performed at startup 34 | */ 35 | exports.load = function() {}; 36 | 37 | /** 38 | * 插件被关闭的时候执行的卸载方法 39 | * Uninstall method performed when the plug-in is closed 40 | */ 41 | exports.unload = function() {}; 42 | -------------------------------------------------------------------------------- /source/panel/index.ts: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import fs, { readFileSync } from 'fs'; 4 | import { join } from 'path'; 5 | 6 | const Vue = require('vue/dist/vue.js'); 7 | Vue.config.productionTip = false; 8 | Vue.config.devtools = false; 9 | 10 | let panel: any = null; 11 | let $vm: any; 12 | export const style = readFileSync(join(__dirname, '../index.css'), 'utf8'); 13 | 14 | export const template = readFileSync(join(__dirname, '../../static/template/index.html'), 'utf8'); 15 | 16 | export const $ = { 17 | shadergraph: '.shadergraph', 18 | }; 19 | 20 | 21 | export const methods = {}; 22 | export const messages = { 23 | 24 | }; 25 | 26 | export async function ready(tab: string, params: any) { 27 | 28 | // @ts-ignore 29 | panel = this; 30 | 31 | const manager = require('./components/manager'); 32 | manager.el = panel.$.shadergraph; 33 | await manager.init(); 34 | 35 | $vm = new Vue(manager); 36 | } 37 | 38 | // 关闭之前需要获取当前的焦点元素将其焦点丢失以触发 ui 组件的 confirm 事件保存配置 39 | export async function beforeClose() { 40 | 41 | } 42 | 43 | export async function close() {} 44 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/artistic/adjustment/InvertColorsNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { getPrecisionName } from "../../../utils"; 3 | 4 | export default class InvertColorsNode extends ShaderNode { 5 | generateCode () { 6 | let ins = this.inputSlots[0]; 7 | let precision = ins.concretePrecision; 8 | 9 | let inputVarName = ins.varName; 10 | let code: string = ''; 11 | if (!ins.connectSlot) { 12 | code += `${getPrecisionName(precision)} ${inputVarName} = ${ins.slotValue};`; 13 | } 14 | else { 15 | inputVarName = ins.connectSlot.varName; 16 | } 17 | 18 | let value: string; 19 | if (precision > 1) { 20 | let values: string[] = [] 21 | values.push(this.data.m_RedChannel ? `1. - ${inputVarName}.r` : `${inputVarName}.r`); 22 | values.push(this.data.m_GreenChannel ? `1. - ${inputVarName}.g` : `${inputVarName}.g`); 23 | values.push(this.data.m_BlueChannel ? `1. - ${inputVarName}.b` : `${inputVarName}.b`); 24 | values.push(this.data.m_AlphaChannel ? `1. - ${inputVarName}.a` : `${inputVarName}.a`); 25 | 26 | values.length = precision; 27 | 28 | value = values.join(', '); 29 | } 30 | else { 31 | value = this.data.m_RedChannel ? `1. - ${inputVarName}` : `${inputVarName}`; 32 | } 33 | 34 | code += `${getPrecisionName(precision)} ${this.getOutputVarName(0)} = ${getPrecisionName(precision)}(${value});`; 35 | return code; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/channel/CombineNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../base"; 2 | import { ConcretePrecisionType } from "../../type"; 3 | 4 | export default class CombineNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | generateCode () { 8 | 9 | let slotR = this.getSlotWithSlotName('R'); 10 | let slotG = this.getSlotWithSlotName('G'); 11 | let slotB = this.getSlotWithSlotName('B'); 12 | let slotA = this.getSlotWithSlotName('A'); 13 | 14 | let slotRGBA = this.getSlotWithSlotName('RGBA'); 15 | let slotRGB = this.getSlotWithSlotName('RGB'); 16 | let slotRG = this.getSlotWithSlotName('RG'); 17 | 18 | let code = ''; 19 | 20 | if (slotRGBA && slotRGBA.connectSlot) { 21 | code += `${slotRGBA?.varDefine} = vec4(${slotR?.slotValue}, ${slotG?.slotValue}, ${slotB?.slotValue}, ${slotA?.slotValue});\n`; 22 | } 23 | if (slotRGB && slotRGB.connectSlot) { 24 | code += `${slotRGB?.varDefine} = vec3(${slotR?.slotValue}, ${slotG?.slotValue}, ${slotB?.slotValue});\n`; 25 | } 26 | if (slotRG && slotRG.connectSlot) { 27 | code += `${slotRG?.varDefine} = vec2(${slotR?.slotValue}, ${slotG?.slotValue});\n`; 28 | } 29 | 30 | return code; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/channel/SplitNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../base"; 2 | import { ConcretePrecisionType } from "../../type"; 3 | 4 | export default class SplitNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | generateCode () { 8 | let Value = this.getInputValue(0); 9 | let code = ''; 10 | let slotR = this.getOutputSlotWithSlotName('R'); 11 | let slotG = this.getOutputSlotWithSlotName('G'); 12 | let slotB = this.getOutputSlotWithSlotName('B'); 13 | let slotA = this.getOutputSlotWithSlotName('A'); 14 | if (slotR && slotR.connectSlot) { 15 | code += `float ${slotR?.varName} = ${Value}.r;\n`; 16 | } 17 | if (slotG && slotG.connectSlot) { 18 | code += `float ${slotG?.varName} = ${Value}.g;\n`; 19 | } 20 | if (slotB && slotB.connectSlot) { 21 | code += `float ${slotB?.varName} = ${Value}.b;\n`; 22 | } 23 | if (slotA && slotA.connectSlot) { 24 | code += `float ${slotA?.varName} = ${Value}.a;\n`; 25 | } 26 | return code; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/index.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../base"; 2 | import globby from 'globby'; 3 | import path from 'fire-path'; 4 | 5 | 6 | let nodePaths = globby.sync([ 7 | path.join(__dirname, './**').replace(/\\/g, '/'), 8 | path.join(__dirname, '!./index.*').replace(/\\/g, '/'), 9 | ]) 10 | let nodes = {}; 11 | for (let i = 0; i < nodePaths.length; i++) { 12 | let nodePath = nodePaths[i]; 13 | let nodeName = path.basenameNoExt(nodePath); 14 | nodes[nodeName] = require(nodePath).default; 15 | } 16 | 17 | export function createNode (data: any) { 18 | let type = data.typeInfo; 19 | let name = type.fullName; 20 | name = name.replace('UnityEditor.ShaderGraph.', ''); 21 | 22 | let ctor = nodes[name]; 23 | if (!ctor) { 24 | console.warn(`Can not find Node with Name [${name}]`) 25 | ctor = ShaderNode 26 | } 27 | return ctor && new ctor(data); 28 | } 29 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/InputNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../base"; 2 | import { ConcretePrecisionType } from "../../type"; 3 | 4 | export default class InputNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/PropertyNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode, ShaderPropery } from "../../base"; 2 | import { ConcretePrecisionType } from "../../type"; 3 | 4 | export default class PropertyNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | property: ShaderPropery | null = null; 7 | 8 | isPropertyNode = true; 9 | 10 | searchProperties (properties) { 11 | this.property = properties.find(p => { 12 | return p.data.m_Guid.m_GuidSerialized === this.data.m_PropertyGuidSerialized; 13 | }) 14 | 15 | if (this.property) { 16 | this.property.node = this; 17 | } 18 | } 19 | 20 | // generateCode () { 21 | // return `${this.getOutputVarDefine(0)} = ${this.property?.name};`; 22 | // } 23 | } 24 | 25 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/basic/BooleanNode.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | 3 | export default class BooleanNode extends InputNode { 4 | generateCode () { 5 | return `bool ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/basic/ColorNode.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | 3 | export default class ColorNode extends InputNode { 4 | fixedConcretePrecision = 4; 5 | 6 | generateCode () { 7 | let r, g, b, a; 8 | if (this.inputSlots.length !== 0) { 9 | r = this.getInputValue(0); 10 | g = this.getInputValue(1); 11 | b = this.getInputValue(2); 12 | a = this.getInputValue(3); 13 | } 14 | else { 15 | let color = this.data.m_Color.color; 16 | r = color.r; 17 | g = color.g; 18 | b = color.b; 19 | a = color.a; 20 | } 21 | 22 | return `vec4 ${this.getOutputVarName(0)} = vec4(${r}, ${g}, ${b}, ${a});`; 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/basic/SliderNode.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | import { getFloatString } from "../../../utils"; 4 | 5 | export default class SliderNode extends InputNode { 6 | fixedConcretePrecision = 1; 7 | 8 | generateCode () { 9 | let slot = this.slots[0]; 10 | let value = getFloatString(this.data.m_Value.x); 11 | return `${slot.varDefine} = ${value};`; 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/basic/TimeNode.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | 3 | export default class TimeNode extends InputNode { 4 | generateCode () { 5 | let Time = this.getOutputSlotWithSlotName('Time'); 6 | let SineTime = this.getOutputSlotWithSlotName('Sine Time'); 7 | let CosineTime = this.getOutputSlotWithSlotName('Cosine Time'); 8 | let DeltaTime = this.getOutputSlotWithSlotName('Delta Time'); 9 | let SmoothDelta = this.getOutputSlotWithSlotName('Smooth Delta'); 10 | 11 | let code = '' 12 | if (Time?.connectSlot) { 13 | code += `float ${Time.varName} = cc_time.x;` 14 | } 15 | if (SineTime?.connectSlot) { 16 | code += `float ${SineTime.varName} = sin(cc_time.x);` 17 | } 18 | if (CosineTime?.connectSlot) { 19 | code += `float ${CosineTime.varName} = cos(cc_time.x);` 20 | } 21 | if (DeltaTime?.connectSlot) { 22 | code += `float ${DeltaTime.varName} = cc_time.y;` 23 | } 24 | if (SmoothDelta?.connectSlot) { 25 | console.warn('Not support smooth delta time'); 26 | code += `float ${SmoothDelta.varName} = cc_time.y;` 27 | } 28 | 29 | return code; 30 | } 31 | } 32 | 33 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/basic/Vector1Node.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | 3 | export default class Vector1Node extends InputNode { 4 | generateCode () { 5 | return `float ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/basic/Vector2Node.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | 3 | export default class Vector2Node extends InputNode { 4 | generateCode () { 5 | let x = this.getInputValue(0); 6 | let y = this.getInputValue(1); 7 | return `vec2 ${this.getOutputVarName(0)} = vec2(${x}, ${y});`; 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/basic/Vector3Node.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | 3 | export default class Vector3Node extends InputNode { 4 | generateCode () { 5 | let x = this.getInputValue(0); 6 | let y = this.getInputValue(1); 7 | let z = this.getInputValue(2); 8 | return `vec3 ${this.getOutputVarName(0)} = vec3(${x}, ${y}, ${z});`; 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/basic/Vector4Node.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | 3 | export default class Vector4Node extends InputNode { 4 | generateCode () { 5 | let x = this.getInputValue(0); 6 | let y = this.getInputValue(1); 7 | let z = this.getInputValue(2); 8 | let w = this.getInputValue(3); 9 | return `vec4 ${this.getOutputVarName(0)} = vec4(${x}, ${y}, ${z}, ${w});`; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/geometry/NormalVectorNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType, NormalSpace } from "../../../type"; 3 | 4 | 5 | export default class NormalVectorNode extends ShaderNode { 6 | concretePrecisionType = ConcretePrecisionType.Fixed; 7 | 8 | constructor (data) { 9 | super(data) 10 | 11 | if (this.data.m_Space === NormalSpace.Object - NormalSpace.Object) { 12 | this.depVarings.push(NormalSpace.Object); 13 | } 14 | else if (this.data.m_Space === NormalSpace.View - NormalSpace.Object) { 15 | this.depVarings.push(NormalSpace.View); 16 | } 17 | else if (this.data.m_Space === NormalSpace.Tangent - NormalSpace.Object) { 18 | this.depVarings.push(NormalSpace.Tangent); 19 | console.error('Not support Tangent Normal'); 20 | } 21 | else if (this.data.m_Space === NormalSpace.World - NormalSpace.Object) { 22 | this.depVarings.push(NormalSpace.World); 23 | } 24 | } 25 | 26 | calcConcretePrecision () { 27 | this.slots.forEach(slot => { 28 | slot._concretePrecision = 3; 29 | }) 30 | } 31 | 32 | generateCode () { 33 | let name = 'normal'; 34 | if (this.data.m_Space === NormalSpace.Object) { 35 | name = 'normal'; 36 | } 37 | else if (this.data.m_Space === NormalSpace.View) { 38 | name = 'viewNormal'; 39 | } 40 | else if (this.data.m_Space === NormalSpace.Tangent) { 41 | // name = 'tangentNormal'; 42 | name = 'worldNormal'; 43 | } 44 | else if (this.data.m_Space === NormalSpace.World) { 45 | name = 'worldNormal'; 46 | } 47 | return `${this.getOutputVarDefine(0)} = ${name};`; 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/geometry/PositionNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType, PositionSpace } from "../../../type"; 3 | 4 | 5 | export default class PositionNode extends ShaderNode { 6 | concretePrecisionType = ConcretePrecisionType.Fixed; 7 | 8 | constructor (data) { 9 | super(data) 10 | 11 | if (this.data.m_Space === PositionSpace.Object - PositionSpace.Object) { 12 | this.depVarings.push(PositionSpace.Object); 13 | } 14 | else if (this.data.m_Space === PositionSpace.View - PositionSpace.Object) { 15 | this.depVarings.push(PositionSpace.View); 16 | } 17 | else if (this.data.m_Space === PositionSpace.Tangent - PositionSpace.Object) { 18 | console.error('Not support Tangent Position'); 19 | this.depVarings.push(PositionSpace.Tangent); 20 | } 21 | else if (this.data.m_Space === PositionSpace.World - PositionSpace.Object) { 22 | this.depVarings.push(PositionSpace.World); 23 | } 24 | else if (this.data.m_Space === PositionSpace.AbsoluteWorld - PositionSpace.Object) { 25 | this.depVarings.push(PositionSpace.AbsoluteWorld); 26 | } 27 | } 28 | 29 | calcConcretePrecision () { 30 | this.slots.forEach(slot => { 31 | slot._concretePrecision = 3; 32 | }) 33 | } 34 | 35 | generateCode () { 36 | let name = 'v_pos'; 37 | if (this.data.m_Space === PositionSpace.Object) { 38 | name = 'v_pos'; 39 | } 40 | else if (this.data.m_Space === PositionSpace.View) { 41 | name = 'v_viewPos'; 42 | } 43 | else if (this.data.m_Space === PositionSpace.Tangent) { 44 | // name = 'v_tangentPos'; 45 | name = 'v_worldPos'; 46 | } 47 | else if (this.data.m_Space === PositionSpace.World) { 48 | name = 'v_worldPos'; 49 | } 50 | else if (this.data.m_Space === PositionSpace.AbsoluteWorld) { 51 | name = 'v_worldPos'; 52 | } 53 | return `${this.getOutputVarDefine(0)} = ${name};`; 54 | } 55 | } 56 | 57 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/geometry/UVNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class UVNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | calcConcretePrecision () { 8 | this.slots.forEach(slot => { 9 | slot._concretePrecision = 2; 10 | }) 11 | } 12 | 13 | generateCode () { 14 | let uvName = 'v_uv'; 15 | if (this.data.m_OutputChannel) { 16 | uvName = `v_uv${this.data.m_OutputChannel}`; 17 | } 18 | return `${this.getOutputVarDefine(0)} = ${uvName};`; 19 | } 20 | } 21 | 22 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/geometry/ViewDirectionNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType, ViewDirectionSpace, PositionSpace } from "../../../type"; 3 | 4 | export default class ViewDirectionNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | depVarings: number[] = [PositionSpace.World] 8 | 9 | constructor (data) { 10 | super(data); 11 | 12 | if (this.data.m_Space === ViewDirectionSpace.Object - ViewDirectionSpace.Object) { 13 | this.depVarings.push(ViewDirectionSpace.Object); 14 | } 15 | else if (this.data.m_Space === ViewDirectionSpace.View - ViewDirectionSpace.Object) { 16 | this.depVarings.push(ViewDirectionSpace.View); 17 | } 18 | else if (this.data.m_Space === ViewDirectionSpace.Tangent - ViewDirectionSpace.Object) { 19 | console.error('Not support Tangent Normal'); 20 | this.depVarings.push(ViewDirectionSpace.Tangent); 21 | } 22 | } 23 | 24 | calcConcretePrecision () { 25 | this.slots.forEach(slot => { 26 | slot._concretePrecision = 3; 27 | }) 28 | } 29 | 30 | generateCode () { 31 | let name = 'view'; 32 | if (this.data.m_Space === ViewDirectionSpace.Object) { 33 | name = 'view'; 34 | } 35 | else if (this.data.m_Space === ViewDirectionSpace.View) { 36 | name = 'viewView'; 37 | } 38 | else if (this.data.m_Space === ViewDirectionSpace.Tangent) { 39 | // name = 'tangentView'; 40 | name = 'worldView'; 41 | } 42 | else if (this.data.m_Space === ViewDirectionSpace.World) { 43 | name = 'worldView'; 44 | } 45 | return `${this.getOutputVarDefine(0)} = ${name};`; 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/texture/CubemapAssetNode.ts: -------------------------------------------------------------------------------- 1 | import TextureAssetNode from "./TextureAssetNode"; 2 | 3 | export default class CubemapAssetNode extends TextureAssetNode { 4 | generateCode () { 5 | return `samplerCube ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/texture/SampleCubemapNode.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | import { NormalMapSpace, NormalSpace, ConcretePrecisionType, ViewDirectionSpace } from "../../../type"; 3 | import PropertyNode from "../PropertyNode"; 4 | 5 | 6 | export default class SampleTexture2DNode extends InputNode { 7 | 8 | beforeGenreateCode () { 9 | let viewSlot = this.getSlotWithSlotName('ViewDir'); 10 | if (!viewSlot?.connectSlot) { 11 | this.depVarings.push(ViewDirectionSpace.Object); 12 | } 13 | let normalSlot = this.getSlotWithSlotName('Normal'); 14 | if (!normalSlot?.connectSlot) { 15 | this.depVarings.push(NormalSpace.Object); 16 | } 17 | } 18 | 19 | generateCode () { 20 | let cubeSlot = this.getSlotWithSlotName('Cube'); 21 | let node = cubeSlot?.connectSlot && cubeSlot?.connectSlot.node as PropertyNode; 22 | if (!node) { 23 | return ''; 24 | } 25 | 26 | let V = 'view'; 27 | let N = 'normal'; 28 | 29 | let viewSlot = this.getSlotWithSlotName('ViewDir'); 30 | if (viewSlot?.connectSlot) { 31 | V = viewSlot?.connectSlot.varName; 32 | } 33 | let normalSlot = this.getSlotWithSlotName('Normal'); 34 | if (normalSlot?.connectSlot) { 35 | N = normalSlot?.connectSlot.varName; 36 | } 37 | 38 | let R = `${this.getOutputVarName(0)}_R`; 39 | 40 | let code = '' 41 | code += `vec3 ${R} = reflect( -normalize( ${V} ), ${N} );\n` 42 | code += `${this.getOutputVarDefine(0)} = texture(${node.property?.name}, ${R});\n` 43 | return code; 44 | } 45 | } 46 | 47 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/texture/SampleTexture2DNode.ts: -------------------------------------------------------------------------------- 1 | import InputNode from "../InputNode"; 2 | import { NormalMapSpace, NormalSpace } from "../../../type"; 3 | 4 | enum TextureType { 5 | Default, 6 | Normal 7 | } 8 | 9 | enum TextureNormalSpace { 10 | Tangent, 11 | Object 12 | } 13 | 14 | export default class SampleTexture2DNode extends InputNode { 15 | constructor (data) { 16 | super(data); 17 | 18 | if (this.data.m_TextureType === TextureType.Normal && this.data.m_NormalMapSpace === TextureNormalSpace.Tangent) { 19 | this.depVarings.push(NormalMapSpace, NormalSpace.World) 20 | } 21 | } 22 | 23 | generateCode () { 24 | let texture = this.getSlotWithSlotName('Texture'); 25 | let rgba = this.getSlotWithSlotName('RGBA'); 26 | 27 | let rgbaVarName = rgba?.varName; 28 | let code; 29 | if (!texture?.connectSlot) { 30 | code = `vec4 ${rgbaVarName} = vec4(1.);\n`; 31 | } 32 | else { 33 | let uv; 34 | if (!this.inputSlots[1].connectSlot) { 35 | uv = 'v_uv'; 36 | } 37 | else { 38 | uv = this.getInputValue(1); 39 | } 40 | code = `vec4 ${rgbaVarName} = texture(${texture?.connectSlot.varName}, ${uv});\n`; 41 | } 42 | 43 | 44 | if (this.data.m_TextureType === TextureType.Normal && this.data.m_NormalMapSpace === NormalSpace.Tangent) { 45 | code += `${rgbaVarName}.xyz -= vec3(0.5);\n`; 46 | code += `${rgbaVarName}.xyz = \n`; 47 | code += ` ${rgbaVarName}.x * normalize(v_tangent) +\n`; 48 | code += ` ${rgbaVarName}.y * normalize(v_bitangent) +\n`; 49 | code += ` ${rgbaVarName}.z * normalize(worldNormal);\n`; 50 | } 51 | 52 | let r = this.getSlotWithSlotName('R'); 53 | if (r && r.connectSlot) { 54 | code += `float ${r.varName} = ${rgbaVarName}.r;\n`; 55 | } 56 | let g = this.getSlotWithSlotName('g'); 57 | if (g && g.connectSlot) { 58 | code += `float ${g.varName} = ${rgbaVarName}.g;\n`; 59 | } 60 | let b = this.getSlotWithSlotName('b'); 61 | if (b && b.connectSlot) { 62 | code += `float ${b.varName} = ${rgbaVarName}.b;\n`; 63 | } 64 | let a = this.getSlotWithSlotName('a'); 65 | if (a && a.connectSlot) { 66 | code += `float ${a.varName} = ${rgbaVarName}.a;\n`; 67 | } 68 | 69 | return code; 70 | } 71 | } 72 | 73 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/texture/Texture2DAssetNode.ts: -------------------------------------------------------------------------------- 1 | import TextureAssetNode from "./TextureAssetNode"; 2 | 3 | export default class Texture2DAssetNode extends TextureAssetNode { 4 | generateCode () { 5 | return `sampler2D ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/input/texture/TextureAssetNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class TextureAssetNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Texture; 6 | } 7 | 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/master/PBRMasterNode.ts: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | import path from 'path'; 3 | import MasterNode from "./MasterNode"; 4 | import { shaderTemplatesDir } from '../../utils'; 5 | import { NormalSpace, PositionSpace } from '../../type'; 6 | 7 | export default class PBRMasterNode extends MasterNode { 8 | vsSlotIndices = ['Vertex Position', 'Vertex Normal', 'Vertex Tangent']; 9 | fsSlotIndices = ['Albedo', 'Normal', 'Emission', 'Metallic', 'Smoothness', 'Occlusion', 'Alpha', 'AlphaClipThreshold']; 10 | 11 | templatePath = path.join(shaderTemplatesDir, 'master/PBRMasterNode.effect'); 12 | 13 | depVarings = [PositionSpace.World, NormalSpace.World] 14 | 15 | constructor (data) { 16 | super(data) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/master/UnlitMasterNode.ts: -------------------------------------------------------------------------------- 1 | import fs from 'fs'; 2 | import path from 'path'; 3 | import MasterNode from "./MasterNode"; 4 | import { shaderTemplatesDir } from '../../utils'; 5 | 6 | export default class UnlitMasterNode extends MasterNode { 7 | vsSlotIndices = ['Vertex Position', 'Vertex Normal', 'Vertex Tangent']; 8 | fsSlotIndices = ['Color', 'Alpha', 'AlphaClipThreshold']; 9 | 10 | templatePath = path.join(shaderTemplatesDir, 'master/UnlitMasterNode.effect') 11 | } 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/advanced/AbsoluteNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode, ShaderSlot } from "../../../base"; 2 | 3 | export default class AbsoluteNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = abs(${this.getInputValue(0)});`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/advanced/ExponentialNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class ExponentialNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = exp(${this.getInputValue(0)});`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/advanced/LengthNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class LengthNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | generateCode () { 8 | return `${this.getOutputVarDefine(0)} = length(${this.getInputValue(0)});`; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/advanced/LogNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class ExponentialNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = log(${this.getInputValue(0)});`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/advanced/ModuloNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class ModuloNode extends ShaderNode { 4 | calcConcretePrecision () { 5 | super.calcConcretePrecision() 6 | } 7 | generateCode () { 8 | let A = this.getInputValue(0); 9 | let B = this.getInputValue(1); 10 | return `${this.getOutputVarDefine(0)} = mod(${A}, ${B});`; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/advanced/NegateNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class NegateNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = -${this.getInputValue(0)};`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/advanced/NormalizeNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class NormalizeNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = normalize(${this.getInputValue(0)});`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/advanced/PosterizeNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class PosterizeNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = floor(${this.getInputValue(0)} / (1. / ${this.getInputValue(1)})) * (1. / ${this.getInputValue(1)});`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/advanced/ReciprocalNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class NormalizeNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = 1. / (${this.getInputValue(0)} * ${this.getInputValue(0)});`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/basic/AddNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class AddNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Max; 6 | 7 | generateCode () { 8 | return `${this.getOutputVarDefine(0)} = ${this.getInputValue(0)} + ${this.getInputValue(1)};`; 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/basic/DivideNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class DivideNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Max; 6 | generateCode () { 7 | return `${this.getOutputVarDefine(0)} = ${this.getInputValue(0)} / ${this.getInputValue(1)};`; 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/basic/MultiplyNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class MultiplyNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Max; 6 | 7 | generateCode () { 8 | let a = this.getInputValue(0); 9 | let b = this.getInputValue(1); 10 | return `${this.getOutputVarDefine(0)} = ${a} * ${b};`; 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/basic/PowerNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class PowerNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | generateCode () { 7 | return `${this.getOutputVarDefine(0)} = pow(${this.getInputValue(0)}, ${this.getInputValue(1)});`; 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/basic/SquareRootNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class SquareRootNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = sqrt(${this.getInputValue(0)}, ${this.getInputValue(1)});`; 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/basic/SubtractNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class SubtractNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Max; 6 | 7 | generateCode () { 8 | return `${this.getOutputVarDefine(0)} = ${this.getInputValue(0)} - ${this.getInputValue(1)};`; 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/derivative/DDXNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class DDXNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = dFdx(${this.getInputValue(0)});`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/derivative/DDXYNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class DDXYNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = abs(dFdx(${this.getInputValue(0)})) + abs(dFdy(${this.getInputValue(0)}));`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/derivative/DDYNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class DDYNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = dFdy(${this.getInputValue(0)});`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/interpolation/InverseLerpNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class InverseLerpNode extends ShaderNode { 4 | generateCode () { 5 | let A = this.getInputValue(0); 6 | let B = this.getInputValue(1); 7 | let T = this.getInputValue(2); 8 | return `${this.getOutputVarDefine(0)} = (${T} - ${A}}) / (${B} - ${A}});`; 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/interpolation/LerpNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class LerpNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Max; 6 | generateCode () { 7 | let A = this.getInputValue(0); 8 | let B = this.getInputValue(1); 9 | let T = this.getInputValue(2); 10 | return `${this.getOutputVarDefine(0)} = mix(${A}, ${B}, ${T});`; 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/interpolation/SmoothstepNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class SmoothstepNode extends ShaderNode { 4 | generateCode () { 5 | let Edge1 = this.getInputValue(0); 6 | let Edge2 = this.getInputValue(1); 7 | let In = this.getInputValue(2); 8 | return `${this.getOutputVarDefine(0)} = smoothstep(${Edge1}, ${Edge2}, ${In});`; 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/range/ClampNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class ClampNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | let min = this.getInputValue(1); 7 | let max = this.getInputValue(2); 8 | return `${this.getOutputVarDefine(0)} = clamp(${In}, ${min}, ${max});`; 9 | } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/range/FractionNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class FractionNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = fract(${In});`; 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/range/MaximumNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class MaximumNode extends ShaderNode { 4 | generateCode () { 5 | let a = this.getInputValue(0); 6 | let b = this.getInputValue(1); 7 | return `${this.getOutputVarDefine(0)} = max(${a}, ${b});`; 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/range/MinimumNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class MinimumNode extends ShaderNode { 4 | generateCode () { 5 | let a = this.getInputValue(0); 6 | let b = this.getInputValue(1); 7 | return `${this.getOutputVarDefine(0)} = min(${a}, ${b});`; 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/range/OneMinusNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class MinimumNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = 1. - ${In};`; 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/range/RandomRangeNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class RandomRangeNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | generateCode () { 8 | let seed = this.getInputValue(0); 9 | let min = this.getInputValue(1); 10 | let max = this.getInputValue(2); 11 | return `${this.getOutputVarDefine(0)} = randomRange(${seed}, ${min}, ${max});`; 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/range/RemapNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class RemapNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | generateCode () { 8 | let In = this.getInputValue(0); 9 | let InMinMax = this.getInputValue(1); 10 | let OutMinMax = this.getInputValue(2); 11 | return `${this.getOutputVarDefine(0)} = ${OutMinMax}.x + (${In} - ${InMinMax}.x) * (${OutMinMax}.y - ${OutMinMax}.x) / (${InMinMax}.y - ${InMinMax}.x);`; 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/range/SaturateNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class SaturateNode extends ShaderNode { 4 | generateCode () { 5 | let IN = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = saturate(${IN});`; 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/round/CeilingNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class CeilingNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = ceil(${In});`; 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/round/FloorNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class FloorNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = floor(${In});`; 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/round/RoundNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class RoundNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = floor(${In} + 0.5);`; 7 | } 8 | } 9 | 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/round/SignNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class SignNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = sign(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/round/StepNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class StepNode extends ShaderNode { 4 | calcConcretePrecision () { 5 | super.calcConcretePrecision() 6 | } 7 | generateCode () { 8 | let edge = this.getInputValue(0); 9 | let In = this.getInputValue(1); 10 | return `${this.getOutputVarDefine(0)} = step(${edge}, ${In});`; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/round/TruncateNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class TruncateNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = trunc(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/ArccosineNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class ArccosineNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = acos(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/ArcsineNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class ArcsineNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = asin(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/Arctangent2Node.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class Arctangent2Node extends ShaderNode { 4 | generateCode () { 5 | let a = this.getInputValue(0); 6 | let b = this.getInputValue(0); 7 | return `${this.getOutputVarDefine(0)} = atan2(${a}, ${b});`; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/ArctangentNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class ArctangentNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = atan(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/CosineNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class CosineNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = cos(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/DegreesToRadiansNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class DegreesToRadiansNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = radians(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/HyperbolicCosineNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class HyperbolicCosineNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = sinh(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/HyperbolicSineNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class HyperbolicSineNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = sinh(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/HyperbolicTangentNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class HyperbolicTangentNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = tanh(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/RadiansToDegreesNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class RadiansToDegreesNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = degrees(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/SineNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class SineNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = sin(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/trigonometry/TangentNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class TangentNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = tan(${In});`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/vector/CrossProductNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class CrossProductNode extends ShaderNode { 4 | generateCode () { 5 | let A = this.getInputValue(0); 6 | let B = this.getInputValue(1); 7 | return `${this.getOutputVarDefine(0)} = cross(${A}, ${B});`; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/vector/DistanceNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class DistanceNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | generateCode () { 7 | let A = this.getInputValue(0); 8 | let B = this.getInputValue(1); 9 | return `${this.getOutputVarDefine(0)} = distance(${A}, ${B});`; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/vector/DotProductNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class DotProductNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | generateCode () { 7 | let A = this.getInputValue(0); 8 | let B = this.getInputValue(1); 9 | return `${this.getOutputVarDefine(0)} = dot(${A}, ${B});`; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/vector/FresnelNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class FresnelNode extends ShaderNode { 4 | generateCode () { 5 | let Normal = this.getInputValue(0); 6 | let ViewDir = this.getInputValue(1); 7 | let Power = this.getInputValue(2); 8 | return `${this.getOutputVarDefine(0)} = pow((1.0 - saturate(dot(normalize(${Normal}), normalize(${ViewDir})))), ${Power});`; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/vector/ProjectionNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class ProjectionNode extends ShaderNode { 4 | generateCode () { 5 | let A = this.getInputValue(0); 6 | let B = this.getInputValue(1); 7 | return `${this.getOutputVarDefine(0)} = ${B} * dot(${A}, ${B}) / dot(${B}, ${B});`; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/vector/ReflectionNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class RejectionNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | let Normal = this.getInputValue(1); 7 | return `${this.getOutputVarDefine(0)} = reflect(${In}, ${Normal});`; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/vector/RejectionNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class DistanceNode extends ShaderNode { 4 | generateCode () { 5 | let A = this.getInputValue(0); 6 | let B = this.getInputValue(1); 7 | return `${this.getOutputVarDefine(0)} = ${A} - (${B} * dot(${A}, ${B}) / dot(${B}, ${B}));`; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/vector/SphereMaskNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class SphereMaskNode extends ShaderNode { 4 | generateCode () { 5 | let Coords = this.getInputValue(0); 6 | let Center = this.getInputValue(1); 7 | let Radius = this.getInputValue(1); 8 | let Hardness = this.getInputValue(1); 9 | return `${this.getOutputVarDefine(0)} = 1 - saturate((distance(${Coords}, ${Center}) - ${Radius}) / (1 - ${Hardness}));`; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/math/wave/TriangleWaveNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | 3 | export default class TriangleWaveNode extends ShaderNode { 4 | generateCode () { 5 | let In = this.getInputValue(0); 6 | return `${this.getOutputVarDefine(0)} = 2.0 * abs( 2. * (${In} - floor(0.5 + ${In})) ) - 1.0;`; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/procedural/noise/GradientNoiseNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class GradientNoiseNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | depChunks = ['noise'] 8 | 9 | generateCode () { 10 | let uv = this.getInputValue(0); 11 | let scale = this.getInputValue(1); 12 | return `${this.getOutputVarDefine(0)} = gradientNoise(${uv}, ${scale});`; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/procedural/noise/NoiseNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class NoiseNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | depChunks = ['noise'] 8 | 9 | generateCode () { 10 | let uv = this.getInputValue(0); 11 | let scale = this.getInputValue(1); 12 | return `${this.getOutputVarDefine(0)} = simpleNoise(${uv}, ${scale});`; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/procedural/shape/EllipseNode.ts: -------------------------------------------------------------------------------- 1 | import ShapeNode from "./ShapeNode"; 2 | 3 | export default class EllipseNode extends ShapeNode { 4 | generateCode () { 5 | let uv = this.getInputValue(0); 6 | let width = this.getInputValue(1); 7 | let height = this.getInputValue(2); 8 | return `${this.getOutputVarDefine(0)} = ellipse(${uv}, ${width}, ${height});`; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/procedural/shape/RectangleNode.ts: -------------------------------------------------------------------------------- 1 | import ShapeNode from "./ShapeNode"; 2 | 3 | export default class RectangleNode extends ShapeNode { 4 | 5 | generateCode () { 6 | let uv = this.getInputValue(0); 7 | let width = this.getInputValue(1); 8 | let height = this.getInputValue(2); 9 | return `${this.getOutputVarDefine(0)} = rect(${uv}, ${width}, ${height});`; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/procedural/shape/RoundedRectangleNode.ts: -------------------------------------------------------------------------------- 1 | import ShapeNode from "./ShapeNode"; 2 | 3 | export default class RectangleNode extends ShapeNode { 4 | generateCode () { 5 | let uv = this.getInputValue(0); 6 | let width = this.getInputValue(1); 7 | let height = this.getInputValue(2); 8 | let radius = this.getInputValue(3); 9 | return `${this.getOutputVarDefine(0)} = reoundRect(${uv}, ${width}, ${height}, ${radius});`; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/procedural/shape/ShapeNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../../base"; 2 | import { ConcretePrecisionType } from "../../../type"; 3 | 4 | export default class ShapeNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | depChunks = ['shape'] 8 | } 9 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/subgraph/SubGraphOutputNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../base"; 2 | 3 | export default class SubGraphOutputNode extends ShaderNode { 4 | } 5 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/utility/PreviewNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../base"; 2 | 3 | export default class PreviewNode extends ShaderNode { 4 | generateCode () { 5 | return `${this.getOutputVarDefine(0)} = ${this.getInputValue(0)};`; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/uv/PolarCoordinatesNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../base"; 2 | import { ConcretePrecisionType } from "../../type"; 3 | 4 | export default class PolarCoordinatesNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | depChunks = ['uv'] 7 | 8 | generateCode () { 9 | let UV; 10 | if (!this.inputSlots[0].connectSlot) { 11 | UV = 'v_uv'; 12 | } 13 | else { 14 | UV = this.getInputValue(0); 15 | } 16 | let Center = this.getInputValue(1); 17 | let RadialScale = this.getInputValue(2); 18 | let LengthScale = this.getInputValue(2); 19 | return `vec2 ${this.getOutputVarName(0)} = polarCoordinates(${UV}, ${Center}, ${RadialScale}, ${LengthScale});`; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/uv/RotateNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../base"; 2 | import { ConcretePrecisionType } from "../../type"; 3 | 4 | export default class RotateNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | depChunks = ['uv'] 7 | 8 | generateCode () { 9 | let UV; 10 | if (!this.inputSlots[0].connectSlot) { 11 | UV = 'v_uv'; 12 | } 13 | else { 14 | UV = this.getInputValue(0); 15 | } 16 | let Center = this.getInputValue(1); 17 | let Rotation = this.getInputValue(2); 18 | return `vec2 ${this.getOutputVarName(0)} = rotateCoordinates(${UV}, ${Center}, ${Rotation});`; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /source/panel/operation/nodes/uv/TilingAndOffsetNode.ts: -------------------------------------------------------------------------------- 1 | import { ShaderNode } from "../../base"; 2 | import { ConcretePrecisionType } from "../../type"; 3 | 4 | export default class TilingAndOffsetNode extends ShaderNode { 5 | concretePrecisionType = ConcretePrecisionType.Fixed; 6 | 7 | generateCode () { 8 | let UV; 9 | if (!this.inputSlots[0].connectSlot) { 10 | UV = 'v_uv'; 11 | } 12 | else { 13 | UV = this.getInputValue(0); 14 | } 15 | let Tiling = this.getInputValue(1); 16 | let Offset = this.getInputValue(2); 17 | return `vec2 ${this.getOutputVarName(0)} = ${UV} * ${Tiling} + ${Offset};`; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /source/panel/operation/type.ts: -------------------------------------------------------------------------------- 1 | 2 | export enum ConcretePrecisionType { 3 | Min, 4 | Max, 5 | Fixed, 6 | Texture, 7 | } 8 | 9 | export enum TextureConcretePrecision { 10 | Texture2D = 100, 11 | TextureCube = 101 12 | }; 13 | 14 | 15 | export enum PositionSpace { 16 | Object = 0, 17 | View, 18 | World, 19 | Tangent, 20 | AbsoluteWorld 21 | } 22 | 23 | export enum NormalSpace { 24 | Object = 100, 25 | View, 26 | World, 27 | Tangent, 28 | } 29 | 30 | export enum ViewDirectionSpace { 31 | Object = 200, 32 | View, 33 | World, 34 | Tangent, 35 | } 36 | 37 | export const NormalMapSpace = 300; 38 | -------------------------------------------------------------------------------- /source/panel/operation/utils.ts: -------------------------------------------------------------------------------- 1 | import { TextureConcretePrecision } from "./type"; 2 | import path from 'path'; 3 | 4 | export const shaderTemplatesDir = path.join(__dirname, '../../../static/shader-templates') 5 | 6 | export function getJsonObject (str: string) { 7 | let content; 8 | try { 9 | content = JSON.parse(str); 10 | } 11 | catch (err) { 12 | console.error(err); 13 | } 14 | return content; 15 | } 16 | 17 | export function getFloatString (value: number) { 18 | if (typeof value !== 'number') { 19 | return value; 20 | } 21 | 22 | let str = value + ''; 23 | if (!str.includes('.')) { 24 | str += '.'; 25 | } 26 | return str; 27 | } 28 | 29 | let ValueElements = { 30 | vector: ['x', 'y', 'z', 'w'], 31 | color: ['r', 'g', 'b', 'a'], 32 | mat4: ['e00', 'e01', 'e02', 'e03'] 33 | } 34 | 35 | export function getValueElement (value: any | number, index: number): number { 36 | if (typeof value === 'number') { 37 | return value; 38 | } 39 | 40 | let elements; 41 | 42 | if (value.x !== undefined) { 43 | elements = ValueElements.vector; 44 | } 45 | else if (value.r !== undefined) { 46 | elements = ValueElements.color; 47 | } 48 | else if (value.e00 !== undefined) { 49 | elements = ValueElements.mat4; 50 | } 51 | 52 | return value[elements[index]] || 0; 53 | } 54 | 55 | export function getValueElementStr(value: object | number, index: number): string { 56 | return getFloatString(getValueElement(value, index)); 57 | } 58 | 59 | export function getValueConcretePrecision (value) { 60 | let valueConretePresition = 1; 61 | if (typeof value === 'object') { 62 | if (value.w !== undefined || value.a !== undefined) { 63 | valueConretePresition = 4; 64 | } 65 | else if (value.z !== undefined || value.b !== undefined) { 66 | valueConretePresition = 3; 67 | } 68 | else if (value.y !== undefined || value.g !== undefined) { 69 | valueConretePresition = 2; 70 | } 71 | else if (value.m_SerializedTexture !== undefined) { 72 | valueConretePresition = TextureConcretePrecision.Texture2D; 73 | } 74 | else if (value.m_SerializedCubemap !== undefined) { 75 | valueConretePresition = TextureConcretePrecision.TextureCube; 76 | } 77 | } 78 | return valueConretePresition; 79 | } 80 | 81 | export function getPrecisionName (precision: number) { 82 | let name = ''; 83 | if (precision === 1) { 84 | name = 'float'; 85 | } 86 | else if (precision === 2) { 87 | name = 'vec2'; 88 | } 89 | else if (precision === 3) { 90 | name = 'vec3'; 91 | } 92 | else if (precision === 4) { 93 | name = 'vec4'; 94 | } 95 | else if (precision === TextureConcretePrecision.Texture2D) { 96 | name = 'sampler2D'; 97 | } 98 | else if (precision === TextureConcretePrecision.TextureCube) { 99 | name = 'samplerCube'; 100 | } 101 | return name; 102 | } 103 | -------------------------------------------------------------------------------- /source/utils/editor-exports.ts: -------------------------------------------------------------------------------- 1 | 2 | let _global:any = typeof window !== 'undefined' && window; 3 | if (!_global) { 4 | _global = typeof global !== 'undefined' && global; 5 | } 6 | 7 | export const Editor = _global.Editor; 8 | -------------------------------------------------------------------------------- /static/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/2youyou2/shader-graph/887e85cb429e30081b65d998cdf126385a8b0d9e/static/icon.png -------------------------------------------------------------------------------- /static/shader-templates/chunks/common.chunk: -------------------------------------------------------------------------------- 1 | 2 | 3 | CCProgram shader_graph_common %{ 4 | 5 | #include 6 | #define frac(uv) fract(uv) 7 | #define lerp(min, max, t) mix(min, max, t) 8 | 9 | }% 10 | -------------------------------------------------------------------------------- /static/shader-templates/chunks/noise.chunk: -------------------------------------------------------------------------------- 1 | CCProgram shader_graph_noise %{ 2 | 3 | float noise_randomValue (vec2 uv) 4 | { 5 | return fract(sin(dot(uv, vec2(12.9898, 78.233)))*43758.5453); 6 | } 7 | 8 | float noise_interpolate (float a, float b, float t) 9 | { 10 | return (1.0-t)*a + (t*b); 11 | } 12 | 13 | float simpleNoise_valueNoise (vec2 uv) 14 | { 15 | vec2 i = floor(uv); 16 | vec2 f = fract(uv); 17 | f = f * f * (3.0 - 2.0 * f); 18 | 19 | uv = abs(fract(uv) - 0.5); 20 | vec2 c0 = i + vec2(0.0, 0.0); 21 | vec2 c1 = i + vec2(1.0, 0.0); 22 | vec2 c2 = i + vec2(0.0, 1.0); 23 | vec2 c3 = i + vec2(1.0, 1.0); 24 | float r0 = noise_randomValue(c0); 25 | float r1 = noise_randomValue(c1); 26 | float r2 = noise_randomValue(c2); 27 | float r3 = noise_randomValue(c3); 28 | 29 | float bottomOfGrid = noise_interpolate(r0, r1, f.x); 30 | float topOfGrid = noise_interpolate(r2, r3, f.x); 31 | float t = noise_interpolate(bottomOfGrid, topOfGrid, f.y); 32 | return t; 33 | } 34 | 35 | float simpleNoise (vec2 uv, float scale) { 36 | float t = 0.0; 37 | 38 | float freq = pow(2.0, 0.); 39 | float amp = pow(0.5, 3.); 40 | t += simpleNoise_valueNoise(vec2(uv.x*scale/freq, uv.y*scale/freq))*amp; 41 | 42 | freq = pow(2.0, 1.); 43 | amp = pow(0.5, 3.-1.); 44 | t += simpleNoise_valueNoise(vec2(uv.x*scale/freq, uv.y*scale/freq))*amp; 45 | 46 | freq = pow(2.0, 2.); 47 | amp = pow(0.5, 3.-2.); 48 | t += simpleNoise_valueNoise(vec2(uv.x*scale/freq, uv.y*scale/freq))*amp; 49 | 50 | return t; 51 | } 52 | 53 | vec2 gradientNoiseDir (vec2 p) { 54 | // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC 55 | p = mod(p, 289.); 56 | float x = mod((34. * p.x + 1.) * p.x, 289.) + p.y; 57 | x = mod((34. * x + 1.) * x, 289.); 58 | x = frac(x / 41.) * 2. - 1.; 59 | return normalize(vec2(x - floor(x + 0.5), abs(x) - 0.5)); 60 | } 61 | 62 | 63 | float gradientNoise (vec2 uv, float scale) { 64 | vec2 p = uv * scale; 65 | vec2 ip = floor(p); 66 | vec2 fp = frac(p); 67 | float d00 = dot(gradientNoiseDir(ip), fp); 68 | float d01 = dot(gradientNoiseDir(ip + vec2(0., 1.)), fp - vec2(0., 1.)); 69 | float d10 = dot(gradientNoiseDir(ip + vec2(1., 0.)), fp - vec2(1., 0.)); 70 | float d11 = dot(gradientNoiseDir(ip + vec2(1., 1.)), fp - vec2(1., 1.)); 71 | fp = fp * fp * fp * (fp * (fp * 6. - 15.) + 10.); 72 | return lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5; 73 | } 74 | 75 | }% 76 | -------------------------------------------------------------------------------- /static/shader-templates/chunks/shape.chunk: -------------------------------------------------------------------------------- 1 | 2 | 3 | CCProgram shader_graph_shape %{ 4 | 5 | float randomRange (vec2 seed, float minv, float maxv) { 6 | float randomno = fract(sin(dot(seed, vec2(12.9898, 78.233)))*43758.5453); 7 | return mix(minv, maxv, randomno); 8 | } 9 | 10 | float ellipse (vec2 uv, float width, float height) { 11 | #if USE_standard_derivatives 12 | float d = length((uv * 2. - 1.) / vec2(width, height)); 13 | return saturate((1. - d) / fwidth(d)); 14 | #else 15 | return 1.; 16 | #endif 17 | } 18 | 19 | float rect (vec2 uv, float width, float height) { 20 | #if USE_standard_derivatives 21 | vec2 d = abs(uv * 2. - 1.) - vec2(width, width); 22 | d = 1. - d / fwidth(d); 23 | return saturate(min(d.x, d.y)); 24 | #else 25 | return 1.; 26 | #endif 27 | } 28 | 29 | float reoundRect (vec2 uv, float width, float height, float radius) { 30 | #if USE_standard_derivatives 31 | radius = max(min(min(abs(radius * 2.), abs(width)), abs(width)), 1e-5); 32 | vec2 uv = abs(uv * 2. - 1.) - vec2(width, width) + radius; 33 | float d = length(max(0., uv)) / radius; 34 | return saturate((1. - d) / fwidth(d)); 35 | #else 36 | return 1.; 37 | #endif 38 | } 39 | 40 | }% 41 | -------------------------------------------------------------------------------- /static/shader-templates/chunks/uv.chunk: -------------------------------------------------------------------------------- 1 | 2 | 3 | CCProgram shader_graph_uv %{ 4 | 5 | vec2 polarCoordinates (vec2 uv, vec2 center, float radialScale, float lengthScale) { 6 | vec2 delta = uv - center; 7 | float radius = length(delta) * 2. * radialScale; 8 | float angle = atan(delta.y, delta.x) * 1.0/6.28 * lengthScale; 9 | return vec2(radius, angle); 10 | } 11 | 12 | vec2 rotateCoordinates (vec2 uv, vec2 center, float rotation) { 13 | //rotation matrix 14 | uv -= center; 15 | float s = sin(rotation); 16 | float c = cos(rotation); 17 | 18 | //center rotation matrix 19 | mat2 rMatrix = mat2(c, -s, s, c); 20 | rMatrix *= 0.5; 21 | rMatrix += 0.5; 22 | rMatrix = rMatrix*2. - 1.; 23 | 24 | //multiply the UVs by the rotation matrix 25 | uv *= rMatrix; 26 | uv += center; 27 | 28 | return uv; 29 | } 30 | 31 | }% 32 | -------------------------------------------------------------------------------- /static/shader-templates/master/UnlitMasterNode.effect: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. 2 | CCEffect %{ 3 | techniques: 4 | - name: opaque 5 | passes: 6 | - vert: unlit-vs:vert 7 | frag: unlit-fs:frag 8 | properties: &props 9 | {{properties_mtl}} 10 | - name: transparent 11 | passes: 12 | - vert: unlit-vs:vert 13 | frag: unlit-fs:frag 14 | depthStencilState: &d1 15 | depthTest: true 16 | depthWrite: false 17 | blendState: 18 | targets: 19 | - blend: true 20 | blendSrc: src_alpha 21 | blendDst: one_minus_src_alpha 22 | blendDstAlpha: one_minus_src_alpha 23 | properties: *props 24 | - name: add 25 | passes: 26 | - vert: unlit-vs:vert 27 | frag: unlit-fs:frag 28 | rasterizerState: &r1 { cullMode: none } 29 | depthStencilState: *d1 30 | blendState: 31 | targets: 32 | - blend: true 33 | blendSrc: src_alpha 34 | blendDst: one 35 | blendSrcAlpha: src_alpha 36 | blendDstAlpha: one 37 | properties: *props 38 | - name: alpha-blend 39 | passes: 40 | - vert: unlit-vs:vert 41 | frag: unlit-fs:frag 42 | rasterizerState: *r1 43 | depthStencilState: *d1 44 | blendState: 45 | targets: 46 | - blend: true 47 | blendSrc: src_alpha 48 | blendDst: one_minus_src_alpha 49 | blendSrcAlpha: src_alpha 50 | blendDstAlpha: one_minus_src_alpha 51 | properties: *props 52 | }% 53 | 54 | {{chunks}} 55 | 56 | CCProgram properties %{ 57 | uniform ShaderGraph_Properties { 58 | {{properties}} 59 | }; 60 | 61 | {{properties_sampler}} 62 | }% 63 | 64 | CCProgram unlit-vs %{ 65 | #if USE_standard_derivatives 66 | #extension GL_OES_standard_derivatives : enable 67 | #endif 68 | 69 | precision highp float; 70 | #include 71 | #include 72 | #include 73 | #include 74 | 75 | {{vs_chunks}} 76 | {{vs_varing_define}} 77 | 78 | out vec2 v_uv; 79 | 80 | vec4 vert () { 81 | vec4 position; 82 | CCVertInput(position); 83 | 84 | mat4 matWorld; 85 | CCGetWorldMatrix(matWorld); 86 | 87 | {{vs}} 88 | 89 | position = {{slot_Vertex_Position = position}}; 90 | 91 | vec4 worldPosition = matWorld * position; 92 | vec4 viewPosition = cc_matView * worldPosition; 93 | 94 | {{vs_varing}} 95 | 96 | v_uv = a_texCoord; 97 | 98 | return cc_matProj * viewPosition; 99 | } 100 | }% 101 | 102 | CCProgram unlit-fs %{ 103 | #if USE_standard_derivatives 104 | #extension GL_OES_standard_derivatives : enable 105 | #endif 106 | 107 | precision highp float; 108 | #include 109 | #include 110 | 111 | {{fs_chunks}} 112 | {{fs_varing_define}} 113 | 114 | in vec2 v_uv; 115 | 116 | vec4 frag () { 117 | vec4 o = vec4(1.); 118 | 119 | {{fs_varing}} 120 | {{fs}} 121 | 122 | o.rgb *= {{slot_Color = vec3(1.)}}; 123 | o.a *= {{slot_Alpha = 1.}}; 124 | 125 | return CCFragOutput(o); 126 | } 127 | }% 128 | -------------------------------------------------------------------------------- /static/style/index.less: -------------------------------------------------------------------------------- 1 | .shadergraph { 2 | height: 100%; 3 | flex-direction: column; 4 | 5 | .directory { 6 | display: flex; 7 | flex-direction: row; 8 | width: 100%; 9 | } 10 | .directory-item { 11 | padding: 10px; 12 | display: flex; 13 | flex-direction: column; 14 | flex: 1; 15 | width: 100%; 16 | } 17 | .directory-item-sub { 18 | display: flex; 19 | flex-direction: row; 20 | 21 | .name { 22 | width: 30px; 23 | } 24 | } 25 | 26 | ui-file { 27 | flex: 1; 28 | } 29 | 30 | .add { 31 | width: 100%; 32 | padding: 10px; 33 | margin-top: 20px; 34 | } 35 | 36 | .generate { 37 | width: 100%; 38 | padding: 10px; 39 | margin-top: 20px; 40 | } 41 | 42 | .button { 43 | display: flex; 44 | justify-content: center; 45 | align-items: center; 46 | justify-items: center; 47 | flex-direction: column; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /static/template/index.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
src :
7 | 13 |
14 |
15 |
dst :
16 | 22 |
23 |
24 |
25 | 26 | X 27 | 28 | 33 | 34 |
35 |
36 | 37 |
38 | add 39 | generate 40 |
41 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "outDir": "./dist", 6 | "types": [ 7 | "node" 8 | ], 9 | "inlineSourceMap": true, 10 | "inlineSources": true, 11 | "rootDir": "./source", 12 | "strict": true, 13 | "allowJs": true, 14 | 15 | "lib": [ 16 | "dom", 17 | "es7" 18 | ], 19 | "esModuleInterop": true, 20 | "moduleResolution": "node", 21 | "skipLibCheck": true, 22 | "experimentalDecorators": true, 23 | "noImplicitAny": false 24 | }, 25 | "exclude": [ 26 | "./dist/**/*" 27 | ], 28 | "include": [ 29 | "./source" 30 | ] 31 | } --------------------------------------------------------------------------------