summaryrefslogtreecommitdiff
path: root/src/3d/renderer_draw.cc
diff options
context:
space:
mode:
authorskal <pascal.massimino@gmail.com>2026-02-08 14:25:34 +0100
committerskal <pascal.massimino@gmail.com>2026-02-08 14:25:34 +0100
commitc68817059b882506bacc09694b0ac58dbe6c13a6 (patch)
treee7989a3df7aa5769169ffa3477769db140688a2f /src/3d/renderer_draw.cc
parent50edd9f0e0565be643dda467bc240d9281277a8c (diff)
feat: Integrate plane_distance into renderer and scene loader
This commit integrates the plane_distance functionality by: - Adding shared_user_data to Object3D for storing type-specific data. - Modifying SceneLoader to read and store plane_distance in shared_user_data for PLANE objects. - Updating ObjectData struct in renderer.h to use params.x for object type and params.y for plane_distance. - Modifying Renderer3D::update_uniforms to populate ObjectData::params.y with plane_distance for PLANE objects. - Adjusting blender_export.py to correctly export plane_distance and reorder quaternion components. A manual step is required to update WGSL shaders to utilize ObjectData.params.y for plane distance calculations.
Diffstat (limited to 'src/3d/renderer_draw.cc')
-rw-r--r--src/3d/renderer_draw.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/3d/renderer_draw.cc b/src/3d/renderer_draw.cc
index b50229f..f59ac4c 100644
--- a/src/3d/renderer_draw.cc
+++ b/src/3d/renderer_draw.cc
@@ -55,8 +55,14 @@ void Renderer3D::update_uniforms(const Scene& scene, const Camera& camera,
type_id = 0.0f;
break;
}
- data.params = vec4(type_id, obj.local_extent.x, obj.local_extent.y,
- obj.local_extent.z);
+
+ float plane_distance = 0.0f;
+ if (obj.type == ObjectType::PLANE && obj.shared_user_data) {
+ // Safely cast shared_user_data to PlaneData* and get distance
+ plane_distance = static_cast<PlaneData*>(obj.shared_user_data.get())->distance;
+ }
+
+ data.params = vec4(type_id, plane_distance, obj.local_extent.x, obj.local_extent.y);
obj_data.push_back(data);
if (obj_data.size() >= kMaxObjects)
break;