diff options
author | quou <quou@disroot.org> | 2024-12-28 18:27:30 +1100 |
---|---|---|
committer | quou <quou@disroot.org> | 2024-12-28 18:27:30 +1100 |
commit | e31535abfff4c3335dd465e3745a69d3102253a6 (patch) | |
tree | 48ff456b34ea295e3ea45c54cb0c97820f0290ec /intermediate/surface.glsl | |
parent | 86810460eed75c19beb9f524e75c193edfa9ddfd (diff) |
converting, loading and rendering GLTF models
Diffstat (limited to 'intermediate/surface.glsl')
-rw-r--r-- | intermediate/surface.glsl | 68 |
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 |