Procházet zdrojové kódy

New trigonometry blocks

David Catuhe před 5 roky
rodič
revize
672fa94fdb

+ 15 - 1
Playground/babylon.d.txt

@@ -53644,7 +53644,21 @@ declare module BABYLON {
         /** Ceiling */
         Ceiling = 7,
         /** Square root */
-        Sqrt = 8
+        Sqrt = 8,
+        /** Log */
+        Log = 9,
+        /** Tangent */
+        Tan = 10,
+        /** Arc tangent */
+        ATan = 11,
+        /** Arc cosinus */
+        ACos = 12,
+        /** Arc sinus */
+        ASin = 13,
+        /** Fraction */
+        Fract = 14,
+        /** Sign */
+        Sign = 15
     }
     /**
      * Block used to apply trigonometry operation to floats

+ 15 - 1
dist/preview release/babylon.d.ts

@@ -54485,7 +54485,21 @@ declare module BABYLON {
         /** Ceiling */
         Ceiling = 7,
         /** Square root */
-        Sqrt = 8
+        Sqrt = 8,
+        /** Log */
+        Log = 9,
+        /** Tangent */
+        Tan = 10,
+        /** Arc tangent */
+        ATan = 11,
+        /** Arc cosinus */
+        ACos = 12,
+        /** Arc sinus */
+        ASin = 13,
+        /** Fraction */
+        Fract = 14,
+        /** Sign */
+        Sign = 15
     }
     /**
      * Block used to apply trigonometry operation to floats

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
dist/preview release/babylon.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 89 - 47
dist/preview release/babylon.max.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
dist/preview release/babylon.max.js.map


+ 30 - 2
dist/preview release/babylon.module.d.ts

@@ -57160,7 +57160,21 @@ declare module "babylonjs/Materials/Node/Blocks/trigonometryBlock" {
         /** Ceiling */
         Ceiling = 7,
         /** Square root */
-        Sqrt = 8
+        Sqrt = 8,
+        /** Log */
+        Log = 9,
+        /** Tangent */
+        Tan = 10,
+        /** Arc tangent */
+        ATan = 11,
+        /** Arc cosinus */
+        ACos = 12,
+        /** Arc sinus */
+        ASin = 13,
+        /** Fraction */
+        Fract = 14,
+        /** Sign */
+        Sign = 15
     }
     /**
      * Block used to apply trigonometry operation to floats
@@ -120864,7 +120878,21 @@ declare module BABYLON {
         /** Ceiling */
         Ceiling = 7,
         /** Square root */
-        Sqrt = 8
+        Sqrt = 8,
+        /** Log */
+        Log = 9,
+        /** Tangent */
+        Tan = 10,
+        /** Arc tangent */
+        ATan = 11,
+        /** Arc cosinus */
+        ACos = 12,
+        /** Arc sinus */
+        ASin = 13,
+        /** Fraction */
+        Fract = 14,
+        /** Sign */
+        Sign = 15
     }
     /**
      * Block used to apply trigonometry operation to floats

+ 15 - 1
dist/preview release/documentation.d.ts

@@ -54485,7 +54485,21 @@ declare module BABYLON {
         /** Ceiling */
         Ceiling = 7,
         /** Square root */
-        Sqrt = 8
+        Sqrt = 8,
+        /** Log */
+        Log = 9,
+        /** Tangent */
+        Tan = 10,
+        /** Arc tangent */
+        ATan = 11,
+        /** Arc cosinus */
+        ACos = 12,
+        /** Arc sinus */
+        ASin = 13,
+        /** Fraction */
+        Fract = 14,
+        /** Sign */
+        Sign = 15
     }
     /**
      * Block used to apply trigonometry operation to floats

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
dist/preview release/nodeEditor/babylon.nodeEditor.js


+ 47 - 2
dist/preview release/nodeEditor/babylon.nodeEditor.max.js

@@ -68464,6 +68464,41 @@ var BlockTools = /** @class */ (function () {
                 sqrtBlock.operation = babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlockOperations"].Sqrt;
                 return sqrtBlock;
             }
+            case "ACosBlock": {
+                var acosBlock = new babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlock"]("ACos");
+                acosBlock.operation = babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlockOperations"].ACos;
+                return acosBlock;
+            }
+            case "ASinBlock": {
+                var asinBlock = new babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlock"]("ASin");
+                asinBlock.operation = babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlockOperations"].ASin;
+                return asinBlock;
+            }
+            case "TanBlock": {
+                var tanBlock = new babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlock"]("Tan");
+                tanBlock.operation = babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlockOperations"].Tan;
+                return tanBlock;
+            }
+            case "ATanBlock": {
+                var atanBlock = new babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlock"]("ATan");
+                atanBlock.operation = babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlockOperations"].ATan;
+                return atanBlock;
+            }
+            case "FractBlock": {
+                var fractBlock = new babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlock"]("Fract");
+                fractBlock.operation = babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlockOperations"].Fract;
+                return fractBlock;
+            }
+            case "SignBlock": {
+                var signBlock = new babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlock"]("Sign");
+                signBlock.operation = babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlockOperations"].Sign;
+                return signBlock;
+            }
+            case "LogBlock": {
+                var logBlock = new babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlock"]("Log");
+                logBlock.operation = babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlockOperations"].Log;
+                return logBlock;
+            }
             case "ExpBlock": {
                 var expBlock = new babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlock"]("Exp");
                 expBlock.operation = babylonjs_Materials_Node_Blocks_Fragment_discardBlock__WEBPACK_IMPORTED_MODULE_0__["TrigonometryBlockOperations"].Exp;
@@ -71083,8 +71118,18 @@ var TrigonometryPropertyTabComponentProps = /** @class */ (function (_super) {
             { label: "Exp2", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].Exp2 },
             { label: "Round", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].Round },
             { label: "Ceiling", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].Ceiling },
-            { label: "Floor", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].Floor }
+            { label: "Floor", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].Floor },
+            { label: "ACos", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].ACos },
+            { label: "ASin", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].ASin },
+            { label: "ATan", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].ATan },
+            { label: "Tan", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].Tan },
+            { label: "Log", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].Log },
+            { label: "Fract", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].Fract },
+            { label: "Sign", value: babylonjs_Materials_Node_Blocks_trigonometryBlock__WEBPACK_IMPORTED_MODULE_6__["TrigonometryBlockOperations"].Sign }
         ];
+        operationOptions.sort(function (a, b) {
+            return a.label.localeCompare(b.label);
+        });
         return (react__WEBPACK_IMPORTED_MODULE_1__["createElement"]("div", null,
             react__WEBPACK_IMPORTED_MODULE_1__["createElement"](_sharedComponents_lineContainerComponent__WEBPACK_IMPORTED_MODULE_3__["LineContainerComponent"], { title: "GENERAL" },
                 react__WEBPACK_IMPORTED_MODULE_1__["createElement"](_sharedComponents_textInputLineComponent__WEBPACK_IMPORTED_MODULE_4__["TextInputLineComponent"], { globalState: this.props.globalState, label: "Name", propertyName: "name", target: trigonometryBlock, onChange: function () {
@@ -71331,7 +71376,7 @@ var NodeListComponent = /** @class */ (function (_super) {
             Range: ["ClampBlock", "RemapBlock", "NormalizeBlock"],
             Round: ["StepBlock", "RoundBlock", "CeilingBlock", "FloorBlock"],
             Scene_Attributes: ["FogBlock", "CameraPositionBlock", "FogColorBlock", "ImageProcessingBlock", "LightBlock", "LightInformationBlock", "ReflectionTextureBlock", "ViewDirectionBlock", "PerturbNormalBlock"],
-            Trigonometry: ["CosBlock", "SinBlock", "AbsBlock", "ExpBlock", "Exp2Block", "SqrtBlock", "PowBlock"],
+            Trigonometry: ["CosBlock", "SinBlock", "AbsBlock", "ExpBlock", "Exp2Block", "SqrtBlock", "PowBlock", "LogBlock", "ACosBlock", "ASinBlock", "TanBlock", "ATanBlock", "FractBlock", "SignBlock"],
             Vector_Math: ["CrossBlock", "DotBlock", "TransformBlock", "FresnelBlock"],
         };
         // Create node menu

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
dist/preview release/nodeEditor/babylon.nodeEditor.max.js.map


+ 30 - 2
dist/preview release/viewer/babylon.module.d.ts

@@ -57160,7 +57160,21 @@ declare module "babylonjs/Materials/Node/Blocks/trigonometryBlock" {
         /** Ceiling */
         Ceiling = 7,
         /** Square root */
-        Sqrt = 8
+        Sqrt = 8,
+        /** Log */
+        Log = 9,
+        /** Tangent */
+        Tan = 10,
+        /** Arc tangent */
+        ATan = 11,
+        /** Arc cosinus */
+        ACos = 12,
+        /** Arc sinus */
+        ASin = 13,
+        /** Fraction */
+        Fract = 14,
+        /** Sign */
+        Sign = 15
     }
     /**
      * Block used to apply trigonometry operation to floats
@@ -120864,7 +120878,21 @@ declare module BABYLON {
         /** Ceiling */
         Ceiling = 7,
         /** Square root */
-        Sqrt = 8
+        Sqrt = 8,
+        /** Log */
+        Log = 9,
+        /** Tangent */
+        Tan = 10,
+        /** Arc tangent */
+        ATan = 11,
+        /** Arc cosinus */
+        ACos = 12,
+        /** Arc sinus */
+        ASin = 13,
+        /** Fraction */
+        Fract = 14,
+        /** Sign */
+        Sign = 15
     }
     /**
      * Block used to apply trigonometry operation to floats

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 6 - 6
dist/preview release/viewer/babylon.viewer.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
dist/preview release/viewer/babylon.viewer.max.js


+ 35 - 0
nodeEditor/src/blockTools.ts

@@ -152,6 +152,41 @@ export class BlockTools {
                 sqrtBlock.operation = TrigonometryBlockOperations.Sqrt;
                 return sqrtBlock;
             }
+            case "ACosBlock": {
+                let acosBlock = new TrigonometryBlock("ACos");
+                acosBlock.operation = TrigonometryBlockOperations.ACos;
+                return acosBlock;
+            }
+            case "ASinBlock": {
+                let asinBlock = new TrigonometryBlock("ASin");
+                asinBlock.operation = TrigonometryBlockOperations.ASin;
+                return asinBlock;
+            }
+            case "TanBlock": {
+                let tanBlock = new TrigonometryBlock("Tan");
+                tanBlock.operation = TrigonometryBlockOperations.Tan;
+                return tanBlock;
+            }
+            case "ATanBlock": {
+                let atanBlock = new TrigonometryBlock("ATan");
+                atanBlock.operation = TrigonometryBlockOperations.ATan;
+                return atanBlock;
+            }
+            case "FractBlock": {
+                let fractBlock = new TrigonometryBlock("Fract");
+                fractBlock.operation = TrigonometryBlockOperations.Fract;
+                return fractBlock;
+            }
+            case "SignBlock": {
+                let signBlock = new TrigonometryBlock("Sign");
+                signBlock.operation = TrigonometryBlockOperations.Sign;
+                return signBlock;
+            }            
+            case "LogBlock": {
+                let logBlock = new TrigonometryBlock("Log");
+                logBlock.operation = TrigonometryBlockOperations.Log;
+                return logBlock;
+            }                                                            
             case "ExpBlock": {
                 let expBlock = new TrigonometryBlock("Exp");
                 expBlock.operation = TrigonometryBlockOperations.Exp;

+ 12 - 1
nodeEditor/src/components/diagram/trigonometry/trigonometryNodePropertyComponent.tsx

@@ -30,8 +30,19 @@ export class TrigonometryPropertyTabComponentProps extends React.Component<ITrig
             {label: "Exp2", value: TrigonometryBlockOperations.Exp2},
             {label: "Round", value: TrigonometryBlockOperations.Round},
             {label: "Ceiling", value: TrigonometryBlockOperations.Ceiling},
-            {label: "Floor", value: TrigonometryBlockOperations.Floor}
+            {label: "Floor", value: TrigonometryBlockOperations.Floor},
+            {label: "ACos", value: TrigonometryBlockOperations.ACos},
+            {label: "ASin", value: TrigonometryBlockOperations.ASin},
+            {label: "ATan", value: TrigonometryBlockOperations.ATan},
+            {label: "Tan", value: TrigonometryBlockOperations.Tan},
+            {label: "Log", value: TrigonometryBlockOperations.Log},
+            {label: "Fract", value: TrigonometryBlockOperations.Fract},
+            {label: "Sign", value: TrigonometryBlockOperations.Sign}
         ];
+
+        operationOptions.sort((a, b) => {
+            return a.label.localeCompare(b.label);
+        })
         
         return (
             <div>

+ 1 - 1
nodeEditor/src/components/nodeList/nodeListComponent.tsx

@@ -36,7 +36,7 @@ export class NodeListComponent extends React.Component<INodeListComponentProps,
             Range: ["ClampBlock", "RemapBlock", "NormalizeBlock"],
             Round: ["StepBlock", "RoundBlock", "CeilingBlock", "FloorBlock"],
             Scene_Attributes: ["FogBlock", "CameraPositionBlock", "FogColorBlock", "ImageProcessingBlock", "LightBlock", "LightInformationBlock", "ReflectionTextureBlock", "ViewDirectionBlock", "PerturbNormalBlock"],
-            Trigonometry: ["CosBlock", "SinBlock", "AbsBlock", "ExpBlock", "Exp2Block", "SqrtBlock", "PowBlock"],
+            Trigonometry: ["CosBlock", "SinBlock", "AbsBlock", "ExpBlock", "Exp2Block", "SqrtBlock", "PowBlock", "LogBlock", "ACosBlock", "ASinBlock", "TanBlock", "ATanBlock", "FractBlock", "SignBlock"],
             Vector_Math: ["CrossBlock", "DotBlock", "TransformBlock", "FresnelBlock"],
         }
 

+ 1 - 1
src/Materials/Node/Blocks/Dual/lightBlock.ts

@@ -271,7 +271,7 @@ export class LightBlock extends NodeMaterialBlock {
             }
             state.compilationString += `lightingInfo info;\r\n`;
             state.compilationString += `float shadow = 1.;\r\n`;
-            state.compilationString += `float glossiness = ${this.glossiness.isConnected ? this.glossiness.associatedVariableName : "1.0"} * 512.0;\r\n`;
+            state.compilationString += `float glossiness = pow(${this.glossiness.isConnected ? this.glossiness.associatedVariableName : "1.0"}, 4.0) * 1024.0;\r\n`;
             state.compilationString += `vec3 diffuseBase = vec3(0., 0., 0.);\r\n`;
             state.compilationString += `vec3 specularBase = vec3(0., 0., 0.);\r\n`;
             state.compilationString += `vec3 normalW = ${this.worldNormal.associatedVariableName}.xyz;\r\n`;

+ 42 - 0
src/Materials/Node/Blocks/trigonometryBlock.ts

@@ -28,6 +28,20 @@ export enum TrigonometryBlockOperations {
     Ceiling,
     /** Square root */
     Sqrt,
+    /** Log */
+    Log,
+    /** Tangent */
+    Tan,
+    /** Arc tangent */
+    ATan,
+    /** Arc cosinus */
+    ACos,
+    /** Arc sinus */
+    ASin,
+    /** Fraction */
+    Fract,
+    /** Sign */
+    Sign
 }
 
 /**
@@ -116,6 +130,34 @@ export class TrigonometryBlock extends NodeMaterialBlock {
                 operation = "sqrt";
                 break;
             }
+            case TrigonometryBlockOperations.Log: {
+                operation = "log";
+                break;
+            }
+            case TrigonometryBlockOperations.Tan: {
+                operation = "tan";
+                break;
+            }
+            case TrigonometryBlockOperations.ATan: {
+                operation = "atan";
+                break;
+            }
+            case TrigonometryBlockOperations.ACos: {
+                operation = "acos";
+                break;
+            }
+            case TrigonometryBlockOperations.ASin: {
+                operation = "asin";
+                break;
+            }
+            case TrigonometryBlockOperations.Fract: {
+                operation = "fract";
+                break;
+            }
+            case TrigonometryBlockOperations.Sign: {
+                operation = "sign";
+                break;
+            }
         }
 
         state.compilationString += this._declareOutput(output, state) + ` = ${operation}(${this.input.associatedVariableName});\r\n`;