summaryrefslogtreecommitdiff
path: root/intermediate/surface.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'intermediate/surface.glsl')
-rw-r--r--intermediate/surface.glsl68
1 files changed, 68 insertions, 0 deletions
diff --git a/intermediate/surface.glsl b/intermediate/surface.glsl
new file mode 100644
index 0000000..681ec3f
--- /dev/null
+++ b/intermediate/surface.glsl
@@ -0,0 +1,68 @@
+#ifdef DESC
+[program]
+type: graphics
+vertex: main
+fragment: main
+
+[binding]
+name: mesh
+rate: vertex
+[attribute]
+name: position
+type: vec3
+[attribute]
+name: normal
+type: vec3
+[attribute]
+name: uv
+type: vec2
+
+[interpolator]
+name: uv
+type: vec2
+[interpolator]
+name: normal
+type: vec3
+
+[struct]
+name: Config
+[variable]
+name: transform
+type: mat4
+[variable]
+name: projection
+type: mat4
+
+[cbuffer]
+name: config_buffer
+type: Config
+stage: vertex
+
+[target]
+name: colour
+type: vec4
+
+#endif
+
+#ifdef VERTEX_SHADER
+
+void main() {
+ interpolator.uv = uv;
+ interpolator.normal = mat3(config_buffer.transform) * normal;
+ gl_Position =
+ config_buffer.projection *
+ config_buffer.transform *
+ vec4(position, 1.0);
+}
+
+#endif
+
+#ifdef FRAGMENT_SHADER
+
+void main() {
+ vec3 normal = normalize(interpolator.normal);
+ float light = max(dot(normal, vec3(0, 0, 1)), 0.0);
+ colour = vec4(light.xxx, 1.0);
+}
+
+#endif