From ea84213ece95e3ef8ff7f0095cee73ee6bdd0f9a Mon Sep 17 00:00:00 2001 From: tech kaczynski Date: Wed, 4 Nov 2026 05:56:35 +1000 Subject: added convex hull and trimesh colliders. Fixed physics edit mode bugs. Added debug drawing for all supported collision types. --- res/mdl/psx-characters/male/rigged/male1.glb | Bin 0 -> 409632 bytes .../psx-characters/male/rigged/male1.raylib.glb | Bin 0 -> 409632 bytes res/mdl/psx-trees/dead_tree_rt_1.glb | Bin 0 -> 302660 bytes res/mdl/psx-trees/dead_tree_rt_2.glb | Bin 0 -> 80152 bytes res/mdl/psx-trees/small_tree_rt_1.glb | Bin 0 -> 16040 bytes res/mdl/psx-trees/tree_rt_1.glb | Bin 0 -> 58664 bytes res/mdl/psx-trees/tree_rt_2.glb | Bin 0 -> 159940 bytes res/mdl/psx-trees/tree_rt_2_1.glb | Bin 0 -> 158828 bytes res/mdl/psx-trees/tree_rt_3.glb | Bin 0 -> 178696 bytes res/mdl/psx-trees/tree_rt_4.glb | Bin 0 -> 415296 bytes res/save/scene.fgs | Bin 14764 -> 172800 bytes res/sdr/mdl_foliage.vs | 23 ++++---- res/sdr/mdl_skinned_vtx_lit.vs | 59 +++++++++++++++++++++ 13 files changed, 71 insertions(+), 11 deletions(-) create mode 100644 res/mdl/psx-characters/male/rigged/male1.glb create mode 100644 res/mdl/psx-characters/male/rigged/male1.raylib.glb create mode 100644 res/mdl/psx-trees/dead_tree_rt_1.glb create mode 100644 res/mdl/psx-trees/dead_tree_rt_2.glb create mode 100644 res/mdl/psx-trees/small_tree_rt_1.glb create mode 100644 res/mdl/psx-trees/tree_rt_1.glb create mode 100644 res/mdl/psx-trees/tree_rt_2.glb create mode 100644 res/mdl/psx-trees/tree_rt_2_1.glb create mode 100644 res/mdl/psx-trees/tree_rt_3.glb create mode 100644 res/mdl/psx-trees/tree_rt_4.glb create mode 100644 res/sdr/mdl_skinned_vtx_lit.vs (limited to 'res') diff --git a/res/mdl/psx-characters/male/rigged/male1.glb b/res/mdl/psx-characters/male/rigged/male1.glb new file mode 100644 index 0000000..69272c1 Binary files /dev/null and b/res/mdl/psx-characters/male/rigged/male1.glb differ diff --git a/res/mdl/psx-characters/male/rigged/male1.raylib.glb b/res/mdl/psx-characters/male/rigged/male1.raylib.glb new file mode 100644 index 0000000..283a3d2 Binary files /dev/null and b/res/mdl/psx-characters/male/rigged/male1.raylib.glb differ diff --git a/res/mdl/psx-trees/dead_tree_rt_1.glb b/res/mdl/psx-trees/dead_tree_rt_1.glb new file mode 100644 index 0000000..fec0486 Binary files /dev/null and b/res/mdl/psx-trees/dead_tree_rt_1.glb differ diff --git a/res/mdl/psx-trees/dead_tree_rt_2.glb b/res/mdl/psx-trees/dead_tree_rt_2.glb new file mode 100644 index 0000000..0523544 Binary files /dev/null and b/res/mdl/psx-trees/dead_tree_rt_2.glb differ diff --git a/res/mdl/psx-trees/small_tree_rt_1.glb b/res/mdl/psx-trees/small_tree_rt_1.glb new file mode 100644 index 0000000..632de9d Binary files /dev/null and b/res/mdl/psx-trees/small_tree_rt_1.glb differ diff --git a/res/mdl/psx-trees/tree_rt_1.glb b/res/mdl/psx-trees/tree_rt_1.glb new file mode 100644 index 0000000..0c7fa93 Binary files /dev/null and b/res/mdl/psx-trees/tree_rt_1.glb differ diff --git a/res/mdl/psx-trees/tree_rt_2.glb b/res/mdl/psx-trees/tree_rt_2.glb new file mode 100644 index 0000000..881f7d8 Binary files /dev/null and b/res/mdl/psx-trees/tree_rt_2.glb differ diff --git a/res/mdl/psx-trees/tree_rt_2_1.glb b/res/mdl/psx-trees/tree_rt_2_1.glb new file mode 100644 index 0000000..8c9669c Binary files /dev/null and b/res/mdl/psx-trees/tree_rt_2_1.glb differ diff --git a/res/mdl/psx-trees/tree_rt_3.glb b/res/mdl/psx-trees/tree_rt_3.glb new file mode 100644 index 0000000..2ec3314 Binary files /dev/null and b/res/mdl/psx-trees/tree_rt_3.glb differ diff --git a/res/mdl/psx-trees/tree_rt_4.glb b/res/mdl/psx-trees/tree_rt_4.glb new file mode 100644 index 0000000..19963e1 Binary files /dev/null and b/res/mdl/psx-trees/tree_rt_4.glb differ diff --git a/res/save/scene.fgs b/res/save/scene.fgs index ae27721..b07fae4 100644 Binary files a/res/save/scene.fgs and b/res/save/scene.fgs differ diff --git a/res/sdr/mdl_foliage.vs b/res/sdr/mdl_foliage.vs index 1198009..366290a 100644 --- a/res/sdr/mdl_foliage.vs +++ b/res/sdr/mdl_foliage.vs @@ -27,20 +27,21 @@ out vec4 frag_colour; out vec3 frag_lighting; void main() { - vec3 world_normal = normalize((matNormal * vec4(vertexNormal, 0.0)).xyz); + vec3 canopy_center = vec3(0.0, 4.0, 0.0); + vec3 canopy_normal = vertexNormal; + vec3 offset = vertexPosition - canopy_center; - // float sun_diffuse = abs(dot(world_normal, sun_direction)); - // float moon_diffuse = abs(dot(world_normal, moon_direction)); + if (dot(offset, offset) > 0.0001) { + canopy_normal = normalize(offset); + } - // for stronger shading, use 0.3 + 0.7 * abs(...) - // float sun_diffuse = 0.5 + 0.5 * abs(dot(world_normal, sun_direction)); - // float moon_diffuse = 0.5 + 0.5 * abs(dot(world_normal, moon_direction)); - float sun_diffuse = abs(dot(world_normal, sun_direction)); - float moon_diffuse = abs(dot(world_normal, moon_direction)); + vec3 world_normal = normalize((matNormal * vec4(canopy_normal, 0.0)).xyz); - // hack to fix lighting at midday - float midday = smoothstep(0.7, 1.0, sun_direction.y); - sun_diffuse = mix(sun_diffuse, 0.65, midday); + float sun_facing = dot(world_normal, sun_direction); + float moon_facing = dot(world_normal, moon_direction); + + float sun_diffuse = max(sun_facing, 0.0) + 0.1 * max(-sun_facing, 0.0); + float moon_diffuse = max(moon_facing, 0.0) + 0.1 * max(-moon_facing, 0.0); vec3 ambient_light = ambient_colour * ambient_intensity; vec3 sun_light = sun_colour * sun_intensity * sun_diffuse; diff --git a/res/sdr/mdl_skinned_vtx_lit.vs b/res/sdr/mdl_skinned_vtx_lit.vs new file mode 100644 index 0000000..a6da15e --- /dev/null +++ b/res/sdr/mdl_skinned_vtx_lit.vs @@ -0,0 +1,59 @@ +#version 330 + +in vec3 vertexPosition; +in vec2 vertexTexCoord; +in vec3 vertexNormal; +in vec4 vertexColor; + +uniform mat4 mvp; +uniform mat4 matNormal; + +uniform vec3 sun_direction; +uniform vec3 sun_colour; +uniform float sun_intensity; + +uniform vec3 moon_direction; +uniform vec3 moon_colour; +uniform float moon_intensity; + +uniform vec3 ambient_colour; +uniform float ambient_intensity; + +uniform vec2 uv_tiling; +uniform vec2 uv_offset; + +out vec2 frag_texcoord; +out vec4 frag_colour; +out vec3 frag_lighting; +out vec3 frag_normal; + +in vec4 vertexBoneIndices; +in vec4 vertexBoneWeights; + +uniform mat4 boneMatrices[64]; + +void main() { + mat4 skin = + vertexBoneWeights.x * boneMatrices[int(vertexBoneIndices.x)] + + vertexBoneWeights.y * boneMatrices[int(vertexBoneIndices.y)] + + vertexBoneWeights.z * boneMatrices[int(vertexBoneIndices.z)] + + vertexBoneWeights.w * boneMatrices[int(vertexBoneIndices.w)]; + + vec4 position = skin * vec4(vertexPosition, 1.0); + vec3 normal = (skin * vec4(vertexNormal, 0.0)).xyz; + vec3 world_normal = normalize((matNormal * vec4(normal, 0.0)).xyz); + + float sun_diffuse = max(dot(world_normal, sun_direction), 0.0); + float moon_diffuse = max(dot(world_normal, moon_direction), 0.0); + + vec3 ambient_light = ambient_colour * ambient_intensity; + vec3 sun_light = sun_colour * sun_intensity * sun_diffuse; + vec3 moon_light = moon_colour * moon_intensity * moon_diffuse; + + frag_lighting = ambient_light + sun_light + moon_light; + frag_texcoord = vertexTexCoord * uv_tiling + uv_offset; + frag_colour = vertexColor; + frag_normal = world_normal; + + gl_Position = mvp * position; +} -- cgit v1.2.3