summaryrefslogtreecommitdiffstats
path: root/tests/rewriter
diff options
context:
space:
mode:
Diffstat (limited to 'tests/rewriter')
-rw-r--r--tests/rewriter/resources-in-structs.glsl62
-rw-r--r--tests/rewriter/resources-in-structs.slang13
2 files changed, 75 insertions, 0 deletions
diff --git a/tests/rewriter/resources-in-structs.glsl b/tests/rewriter/resources-in-structs.glsl
new file mode 100644
index 000000000..26e21f630
--- /dev/null
+++ b/tests/rewriter/resources-in-structs.glsl
@@ -0,0 +1,62 @@
+#version 450 core
+//TEST:COMPARE_GLSL:-profile glsl_fragment
+
+#if defined(__SLANG__)
+
+__import resources_in_structs;
+
+uniform U
+{
+ Material m;
+};
+
+in vec2 uv;
+
+out vec4 color;
+
+void main()
+{
+ color = evaluateMaterial(m, uv);
+}
+
+#else
+
+struct Material
+{
+ vec4 color;
+};
+
+vec4 evaluateMaterial(
+ Material m,
+ texture2D m_t,
+ sampler m_s,
+ vec2 uv)
+{
+ return m.color + texture(sampler2D(m_t, m_s), uv);
+}
+
+layout(binding = 0)
+uniform U
+{
+ Material m;
+};
+
+layout(binding = 1)
+uniform texture2D SLANG_parameterBlock_U_m_t;
+
+layout(binding = 2)
+uniform sampler SLANG_parameterBlock_U_m_s;
+
+in vec2 uv;
+
+out vec4 color;
+
+void main()
+{
+ color = evaluateMaterial(
+ m,
+ SLANG_parameterBlock_U_m_t,
+ SLANG_parameterBlock_U_m_s, uv);
+}
+
+#endif
diff --git a/tests/rewriter/resources-in-structs.slang b/tests/rewriter/resources-in-structs.slang
new file mode 100644
index 000000000..79eca11ac
--- /dev/null
+++ b/tests/rewriter/resources-in-structs.slang
@@ -0,0 +1,13 @@
+//TEST_IGNORE_FILE:
+
+struct Material
+{
+ float4 color;
+ Texture2D t;
+ SamplerState s;
+};
+
+float4 evaluateMaterial(Material m, float2 uv)
+{
+ return m.color + m.t.Sample(m.s, uv);
+}