summaryrefslogtreecommitdiff
path: root/src/3d/renderer.cc
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-06 08:46:20 +0100
committerskal <pascal.massimino@gmail.com>2026-02-06 08:46:20 +0100
commit7d60a8a9ece368e365b5c857600004298cb89526 (patch)
treeaa394cb9823939c561b8fb09897f1e192a4059ad /src/3d/renderer.cc
parent180b0961a2216279024b4d35229d105d95a61878 (diff)
fix: Correct mesh normal transformation and floor shadow rendering
Diffstat (limited to 'src/3d/renderer.cc')
-rw-r--r--src/3d/renderer.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/3d/renderer.cc b/src/3d/renderer.cc
index a9beffe..eea3ff0 100644
--- a/src/3d/renderer.cc
+++ b/src/3d/renderer.cc
@@ -174,7 +174,7 @@ void Renderer3D::update_uniforms(const Scene& scene, const Camera& camera,
type_id = 4.0f;
else if (obj.type == ObjectType::MESH)
type_id = 5.0f;
- data.params = vec4(type_id, 0, 0, 0);
+ data.params = vec4(type_id, obj.local_extent.x, obj.local_extent.y, obj.local_extent.z);
obj_data.push_back(data);
if (obj_data.size() >= kMaxObjects)
break;
@@ -303,9 +303,11 @@ void Renderer3D::draw(WGPURenderPassEncoder pass, const Scene& scene,
#if !defined(STRIP_ALL)
if (s_debug_enabled_) {
for (const auto& obj : scene.objects) {
- vec3 extent(1.0f, 1.0f, 1.0f);
+ vec3 extent = obj.local_extent;
if (obj.type == ObjectType::TORUS) {
extent = vec3(1.5f, 0.5f, 1.5f);
+ } else if (obj.type != ObjectType::MESH) {
+ extent = vec3(1.0f, 1.0f, 1.0f);
}
visual_debug_.add_box(obj.get_model_matrix(), extent,
vec3(1.0f, 1.0f, 0.0f)); // Yellow boxes