From c68817059b882506bacc09694b0ac58dbe6c13a6 Mon Sep 17 00:00:00 2001 From: skal Date: Sun, 8 Feb 2026 14:25:34 +0100 Subject: 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. --- src/3d/renderer_draw.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src/3d/renderer_draw.cc') 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(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; -- cgit v1.2.3