summaryrefslogtreecommitdiff
path: root/intermediate
diff options
context:
space:
mode:
authorquou <quou@disroot.org>2024-12-28 18:27:30 +1100
committerquou <quou@disroot.org>2024-12-28 18:27:30 +1100
commite31535abfff4c3335dd465e3745a69d3102253a6 (patch)
tree48ff456b34ea295e3ea45c54cb0c97820f0290ec /intermediate
parent86810460eed75c19beb9f524e75c193edfa9ddfd (diff)
converting, loading and rendering GLTF models
Diffstat (limited to 'intermediate')
-rw-r--r--intermediate/monkey.glbbin0 -> 69720 bytes
-rw-r--r--intermediate/surface.glsl68
2 files changed, 68 insertions, 0 deletions
diff --git a/intermediate/monkey.glb b/intermediate/monkey.glb
new file mode 100644
index 0000000..d7b3665
--- /dev/null
+++ b/intermediate/monkey.glb
Binary files differ
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