Преглед изворни кода

Fix handling of Sampler parameters in OpenGL/ES backend.

Eric Mellino пре 7 година
родитељ
комит
7ee1db2fb4

+ 4 - 0
src/ShaderGen/Glsl/Glsl330Backend.cs

@@ -22,10 +22,14 @@ namespace ShaderGen.Glsl
             string version = function.Type == ShaderFunctionType.ComputeEntryPoint ? "430" : "330 core";
             sb.AppendLine($"#version {version}");
             sb.AppendLine();
+            sb.AppendLine($"struct SamplerDummy {{ int _dummyValue; }};");
+            sb.AppendLine();
         }
 
         protected override void WriteSampler(StringBuilder sb, ResourceDefinition rd)
         {
+            sb.AppendLine($"const SamplerDummy {CorrectIdentifier(rd.Name)} = SamplerDummy(0);");
+            sb.AppendLine();
         }
 
         protected override void WriteTexture2D(StringBuilder sb, ResourceDefinition rd)

+ 5 - 0
src/ShaderGen/Glsl/GlslEs300Backend.cs

@@ -31,10 +31,15 @@ namespace ShaderGen.Glsl
                 sb.AppendLine($"precision mediump sampler2DMS;");
             }
             sb.AppendLine();
+
+            sb.AppendLine($"struct SamplerDummy {{ int _dummyValue; }};");
+            sb.AppendLine();
         }
 
         protected override void WriteSampler(StringBuilder sb, ResourceDefinition rd)
         {
+            sb.AppendLine($"const SamplerDummy {CorrectIdentifier(rd.Name)} = SamplerDummy(0);");
+            sb.AppendLine();
         }
 
         protected override void WriteTexture2D(StringBuilder sb, ResourceDefinition rd)

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

@@ -28,12 +28,14 @@ namespace ShaderGen.Glsl
         {
             { "ShaderGen.Texture2DResource", "sampler2D" },
             { "ShaderGen.TextureCubeResource", "samplerCube" },
+            { "ShaderGen.SamplerResource", "SamplerDummy" },
         };
 
         private static readonly Dictionary<string, string> s_knownTypesVulkan = new Dictionary<string, string>()
         {
             { "ShaderGen.Texture2DResource", "texture2D" },
             { "ShaderGen.TextureCubeResource", "textureCube" },
+            { "ShaderGen.SamplerResource", "sampler" },
         };
 
 

+ 1 - 0
src/ShaderGen/Metal/MetalKnownTypes.cs

@@ -16,6 +16,7 @@ namespace ShaderGen.Metal
             { "System.Void", "void" },
             { "ShaderGen.Texture2DResource", "texture2d<float>" },
             { "ShaderGen.TextureCubeResource", "texturecube<float>" },
+            { "ShaderGen.SamplerResource", "sampler" },
             { "System.Boolean", "bool" },
             { "ShaderGen.UInt2", "uint2" },
             { "ShaderGen.UInt3", "uint3" },