Bläddra i källkod

Add DdxFine and DdyFine intrinsics

Tim Jones 7 år sedan
förälder
incheckning
0f2dd3a7e9

+ 12 - 0
src/ShaderGen.Primitives/ShaderBuiltins.cs

@@ -66,12 +66,24 @@ namespace ShaderGen
         public static Vector3 Ddx(Vector3 value) => throw new ShaderBuiltinException();
         public static Vector4 Ddx(Vector4 value) => throw new ShaderBuiltinException();
 
+        // DdxFine
+        public static float DdxFine(float value) => throw new ShaderBuiltinException();
+        public static Vector2 DdxFine(Vector2 value) => throw new ShaderBuiltinException();
+        public static Vector3 DdxFine(Vector3 value) => throw new ShaderBuiltinException();
+        public static Vector4 DdxFine(Vector4 value) => throw new ShaderBuiltinException();
+
         // Ddy
         public static float Ddy(float value) => throw new ShaderBuiltinException();
         public static Vector2 Ddy(Vector2 value) => throw new ShaderBuiltinException();
         public static Vector3 Ddy(Vector3 value) => throw new ShaderBuiltinException();
         public static Vector4 Ddy(Vector4 value) => throw new ShaderBuiltinException();
 
+        // DdyFine
+        public static float DdyFine(float value) => throw new ShaderBuiltinException();
+        public static Vector2 DdyFine(Vector2 value) => throw new ShaderBuiltinException();
+        public static Vector3 DdyFine(Vector3 value) => throw new ShaderBuiltinException();
+        public static Vector4 DdyFine(Vector4 value) => throw new ShaderBuiltinException();
+
         // Floor
         public static float Floor(float value) => throw new ShaderBuiltinException();
         public static Vector2 Floor(Vector2 value) => throw new ShaderBuiltinException();

+ 12 - 0
src/ShaderGen.Tests/TestAssets/ShaderBuiltinsTestShader.cs

@@ -130,12 +130,24 @@ namespace TestShaders
             Vector3 r3 = Ddx(ret.XYZ());
             Vector4 r4 = Ddx(ret);
 
+            // DdxFine
+            r = DdxFine(ret.X);
+            r2 = DdxFine(ret.XY());
+            r3 = DdxFine(ret.XYZ());
+            r4 = DdxFine(ret);
+
             // Ddy
             r = Ddy(ret.X);
             r2 = Ddy(ret.XY());
             r3 = Ddy(ret.XYZ());
             r4 = Ddy(ret);
 
+            // DdyFine
+            r = DdyFine(ret.X);
+            r2 = DdyFine(ret.XY());
+            r3 = DdyFine(ret.XYZ());
+            r4 = DdyFine(ret);
+
             return ret;
         }
     }

+ 2 - 0
src/ShaderGen/Glsl/Glsl330KnownFunctions.cs

@@ -21,7 +21,9 @@ namespace ShaderGen.Glsl
                 { "Acos", SimpleNameTranslator("acos") },
                 { "Cos", SimpleNameTranslator("cos") },
                 { "Ddx", SimpleNameTranslator("dFdx") },
+                { "DdxFine", SimpleNameTranslator("dFdx") },
                 { "Ddy", SimpleNameTranslator("dFdy") },
+                { "DdyFine", SimpleNameTranslator("dFdy") },
                 { "Floor", SimpleNameTranslator("floor") },
                 { "Frac", SimpleNameTranslator("fract") },
                 { "Lerp", SimpleNameTranslator("mix") },

+ 2 - 0
src/ShaderGen/Glsl/Glsl450KnownFunctions.cs

@@ -22,7 +22,9 @@ namespace ShaderGen.Glsl
                 { "Acos", SimpleNameTranslator("acos") },
                 { "Cos", SimpleNameTranslator("cos") },
                 { "Ddx", SimpleNameTranslator("dFdx") },
+                { "DdxFine", SimpleNameTranslator("dFdxFine") },
                 { "Ddy", SimpleNameTranslator("dFdy") },
+                { "DdyFine", SimpleNameTranslator("dFdyFine") },
                 { "Floor", SimpleNameTranslator("floor") },
                 { "Frac", SimpleNameTranslator("fract") },
                 { "Lerp", SimpleNameTranslator("mix") },

+ 2 - 0
src/ShaderGen/Glsl/GlslEs300KnownFunctions.cs

@@ -21,7 +21,9 @@ namespace ShaderGen.Glsl
                 { "Acos", SimpleNameTranslator("acos") },
                 { "Cos", SimpleNameTranslator("cos") },
                 { "Ddx", SimpleNameTranslator("dFdx") },
+                { "DdxFine", SimpleNameTranslator("dFdx") },
                 { "Ddy", SimpleNameTranslator("dFdy") },
+                { "DdyFine", SimpleNameTranslator("dFdy") },
                 { "Floor", SimpleNameTranslator("floor") },
                 { "Frac", SimpleNameTranslator("fract") },
                 { "Lerp", SimpleNameTranslator("mix") },

+ 2 - 0
src/ShaderGen/Hlsl/HlslKnownFunctions.cs

@@ -20,7 +20,9 @@ namespace ShaderGen.Hlsl
                 { "Abs", SimpleNameTranslator("abs") },
                 { "Cos", SimpleNameTranslator("cos") },
                 { "Ddx", SimpleNameTranslator("ddx") },
+                { "DdxFine", SimpleNameTranslator("ddx_fine") },
                 { "Ddy", SimpleNameTranslator("ddy") },
+                { "DdyFine", SimpleNameTranslator("ddy_fine") },
                 { "Floor", SimpleNameTranslator("floor") },
                 { "Frac", SimpleNameTranslator("frac") },
                 { "Lerp", SimpleNameTranslator("lerp") },

+ 2 - 0
src/ShaderGen/Metal/MetalKnownFunctions.cs

@@ -23,7 +23,9 @@ namespace ShaderGen.Metal
                 { "Acos", SimpleNameTranslator("acos") },
                 { "Cos", SimpleNameTranslator("cos") },
                 { "Ddx", SimpleNameTranslator("dfdx") },
+                { "DdxFine", SimpleNameTranslator("dfdx") },
                 { "Ddy", SimpleNameTranslator("dfdy") },
+                { "DdyFine", SimpleNameTranslator("dfdy") },
                 { "Floor", SimpleNameTranslator("floor") },
                 { "Frac", SimpleNameTranslator("fract") },
                 { "Lerp", SimpleNameTranslator("mix") },