From f1b47ccb8a92280df51bb28b495829f8f7f8127e Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Fri, 3 Jan 2025 13:41:21 -0500 Subject: Add initial GLTF support --- src/assets/meshes/cube.obj | 38 +++++++++++++++++++++++++++++++++++++ src/assets/scenes/fox.glb | Bin 0 -> 162852 bytes src/assets/shaders/scene/frag.glsl | 11 +++++++++++ src/assets/shaders/scene/vert.glsl | 18 ++++++++++++++++++ src/assets/textures/test.png | Bin 0 -> 125 bytes 5 files changed, 67 insertions(+) create mode 100644 src/assets/meshes/cube.obj create mode 100644 src/assets/scenes/fox.glb create mode 100644 src/assets/shaders/scene/frag.glsl create mode 100644 src/assets/shaders/scene/vert.glsl create mode 100644 src/assets/textures/test.png (limited to 'src/assets') diff --git a/src/assets/meshes/cube.obj b/src/assets/meshes/cube.obj new file mode 100644 index 0000000..2f3a670 --- /dev/null +++ b/src/assets/meshes/cube.obj @@ -0,0 +1,38 @@ +# Blender 4.1.1 +# www.blender.org +o Cube +v 1.000000 1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vt 0.625000 0.500000 +vt 0.875000 0.500000 +vt 0.875000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.625000 1.000000 +vt 0.375000 1.000000 +vt 0.375000 0.000000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.250000 +vt 0.125000 0.500000 +vt 0.375000 0.500000 +vt 0.125000 0.750000 +s 0 +f 1/1/1 5/2/1 7/3/1 3/4/1 +f 4/5/2 3/4/2 7/6/2 8/7/2 +f 8/8/3 7/9/3 5/10/3 6/11/3 +f 6/12/4 2/13/4 4/5/4 8/14/4 +f 2/13/5 1/1/5 3/4/5 4/5/5 +f 6/11/6 5/10/6 1/1/6 2/13/6 diff --git a/src/assets/scenes/fox.glb b/src/assets/scenes/fox.glb new file mode 100644 index 0000000..1ef5c0d Binary files /dev/null and b/src/assets/scenes/fox.glb differ diff --git a/src/assets/shaders/scene/frag.glsl b/src/assets/shaders/scene/frag.glsl new file mode 100644 index 0000000..81e08b9 --- /dev/null +++ b/src/assets/shaders/scene/frag.glsl @@ -0,0 +1,11 @@ +uniform sampler2D texture_data; + +void main() +{ + vec4 texel = texture(texture_data, vertex_texcoord); + if (texel.a != 1.0) { + discard; + } + + frag_color = vec4(texel.rgb, texel.a); +} diff --git a/src/assets/shaders/scene/vert.glsl b/src/assets/shaders/scene/vert.glsl new file mode 100644 index 0000000..64f400c --- /dev/null +++ b/src/assets/shaders/scene/vert.glsl @@ -0,0 +1,18 @@ +in vec4 joint; +in vec4 weight; + +uniform mat4 joint_matrices[128]; + +void main() +{ + vertex_texcoord = texcoord; + vertex_normal = (normal_matrix * vec4(normal, 1.0)).xyz; + mat4 skin + = weight.x * joint_matrices[int(joint.x)] + + weight.y * joint_matrices[int(joint.y)] + + weight.z * joint_matrices[int(joint.z)] + + weight.w * joint_matrices[int(joint.w)]; + vec3 pos = (position * skin * vec4(vertex, 1.0)).xyz; + vertex_view_vector = camera_pos - pos; + gl_Position = projection * view * vec4(pos, 1.0); +} diff --git a/src/assets/textures/test.png b/src/assets/textures/test.png new file mode 100644 index 0000000..0752be0 Binary files /dev/null and b/src/assets/textures/test.png differ -- cgit v1.2.3