summaryrefslogtreecommitdiffstats
path: root/tests/front-end/struct.spire
diff options
context:
space:
mode:
Diffstat (limited to 'tests/front-end/struct.spire')
-rw-r--r--tests/front-end/struct.spire49
1 files changed, 49 insertions, 0 deletions
diff --git a/tests/front-end/struct.spire b/tests/front-end/struct.spire
new file mode 100644
index 000000000..8347f8d58
--- /dev/null
+++ b/tests/front-end/struct.spire
@@ -0,0 +1,49 @@
+//TEST:SIMPLE:
+// test that `struct` decls work
+
+// Note(tfoley): disabled during syntax transition
+// #include "pipeline-simple.spireh"
+
+// struct declaration
+struct Foo
+{
+ float3 a;
+ float3 b;
+};
+
+// function on a struct
+Foo makeFoo(float x, float y)
+{
+ // local of struct type
+ Foo foo;
+ foo.a = float3(x);
+ foo.b = float3(y);
+ return foo;
+}
+
+/* Note(tfoley): disabled during syntax transition
+
+template shader Test()
+// targets StandardPipeline
+{
+ // Uniform of struct type
+ param Foo foo1;
+
+ @MeshVertex float3 position;
+ @MeshVertex float3 color;
+
+ param mat4 modelViewProjection;
+
+ public vec4 projCoord = modelViewProjection * vec4(position, 1.0);
+
+ // Component of struct type
+ // Note(tfoley): use of `public` here required to work around parser limitations
+ public Foo foo2 = makeFoo(color.x, color.y);
+
+ //
+ float3 result = foo1.a + foo2.b;
+
+ out @Fragment vec4 colorTarget = vec4(result,1);
+}
+
+*/ \ No newline at end of file