diff options
| author | skal <pascal.massimino@gmail.com> | 2026-02-08 07:38:28 +0100 |
|---|---|---|
| committer | skal <pascal.massimino@gmail.com> | 2026-02-08 07:38:28 +0100 |
| commit | b8e6929cafa41681f0b27ac104c9cf1d4e510837 (patch) | |
| tree | 4a3e9fe6fec6e550506163d57837f075511702a7 /src/3d/renderer.cc | |
| parent | d74c6dae8614d49c6db958291312c772bf8492c2 (diff) | |
feat(3d): Fix ObjectType::PLANE scaling and consolidate ObjectType mapping
- Implemented correct scaling for planes in both CPU (physics) and GPU (shaders) using the normal-axis scale factor.
- Consolidated ObjectType to type_id mapping in Renderer3D to ensure consistency and support for CUBE.
- Fixed overestimation of distance for non-uniformly scaled ground planes, which caused missing shadows.
- Updated documentation and marked Task A.2 as completed.
Diffstat (limited to 'src/3d/renderer.cc')
| -rw-r--r-- | src/3d/renderer.cc | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/3d/renderer.cc b/src/3d/renderer.cc index 6e8f38a..c37ea79 100644 --- a/src/3d/renderer.cc +++ b/src/3d/renderer.cc @@ -164,16 +164,15 @@ void Renderer3D::update_uniforms(const Scene& scene, const Camera& camera, data.color = obj.color; float type_id = 0.0f; - if (obj.type == ObjectType::SPHERE) - type_id = 1.0f; - else if (obj.type == ObjectType::BOX) - type_id = 2.0f; - else if (obj.type == ObjectType::TORUS) - type_id = 3.0f; - else if (obj.type == ObjectType::PLANE) - type_id = 4.0f; - else if (obj.type == ObjectType::MESH) - type_id = 5.0f; + switch (obj.type) { + case ObjectType::SPHERE: type_id = 1.0f; break; + case ObjectType::BOX: type_id = 2.0f; break; + case ObjectType::CUBE: type_id = 2.0f; break; // CUBE is same as BOX for shader + case ObjectType::TORUS: type_id = 3.0f; break; + case ObjectType::PLANE: type_id = 4.0f; break; + case ObjectType::MESH: type_id = 5.0f; break; + default: type_id = 0.0f; break; + } 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) |
