diff options
Diffstat (limited to 'src/3d/renderer.cc')
| -rw-r--r-- | src/3d/renderer.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/3d/renderer.cc b/src/3d/renderer.cc index 513b6f6..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; @@ -285,7 +285,7 @@ void Renderer3D::draw(WGPURenderPassEncoder pass, const Scene& scene, for (uint32_t i = 0; i < instance_count; ++i) { const auto& obj = scene.objects[i]; if (obj.type == ObjectType::MESH) { - const MeshGpuData* mesh = get_or_create_mesh(obj.mesh_asset_id); + const MeshGpuData* mesh = temp_mesh_override_ ? temp_mesh_override_ : get_or_create_mesh(obj.mesh_asset_id); if (mesh) { wgpuRenderPassEncoderSetVertexBuffer(pass, 0, mesh->vertex_buffer, 0, WGPU_WHOLE_SIZE); @@ -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 |
