From f04f792b05539650471cf0bbf5043e2d82ead29a Mon Sep 17 00:00:00 2001 From: skal Date: Mon, 2 Feb 2026 13:37:54 +0100 Subject: test(3d): Enhance test scene with more objects - Updated 'src/tests/test_3d_render.cc' to populate the scene with a large floor and 30 randomly placed objects (spheres, boxes, tori). - This provides a more complex environment to verify the new shadow mapping implementation. --- src/tests/test_3d_render.cc | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/tests/test_3d_render.cc b/src/tests/test_3d_render.cc index 003eeaf..d80d836 100644 --- a/src/tests/test_3d_render.cc +++ b/src/tests/test_3d_render.cc @@ -135,29 +135,40 @@ void init_wgpu(PlatformState* platform_state) { void setup_scene() { g_scene.clear(); - Object3D center(ObjectType::BOX); + srand(12345); // Fixed seed + + // Large floor + Object3D floor(ObjectType::BOX); + floor.position = vec3(0, -2.0f, 0); + floor.scale = vec3(20.0f, 0.5f, 20.0f); + floor.color = vec4(0.8f, 0.8f, 0.8f, 1.0f); + g_scene.add_object(floor); + + // Center object + Object3D center(ObjectType::TORUS); center.position = vec3(0, 0, 0); + center.scale = vec3(1.5f, 1.5f, 1.5f); center.color = vec4(1, 0, 0, 1); g_scene.add_object(center); - for (int i = 0; i < 8; ++i) { + // Random objects + for (int i = 0; i < 30; ++i) { ObjectType type = ObjectType::SPHERE; - if (i % 3 == 1) - type = ObjectType::TORUS; - if (i % 3 == 2) - type = ObjectType::BOX; + int r = rand() % 3; + if (r == 1) type = ObjectType::TORUS; + if (r == 2) type = ObjectType::BOX; Object3D obj(type); - float angle = (i / 8.0f) * 6.28318f; - obj.position = vec3(std::cos(angle) * 4.0f, 0, std::sin(angle) * 4.0f); - obj.scale = vec3(0.5f, 0.5f, 0.5f); - - if (type == ObjectType::SPHERE) - obj.color = vec4(0, 1, 0, 1); - else if (type == ObjectType::TORUS) - obj.color = vec4(0, 0.5, 1, 1); - else - obj.color = vec4(1, 1, 0, 1); + float angle = (rand() % 360) * 0.01745f; + float dist = 3.0f + (rand() % 100) * 0.05f; + float height = -1.0f + (rand() % 100) * 0.04f; + + obj.position = vec3(std::cos(angle) * dist, height, std::sin(angle) * dist); + + float s = 0.3f + (rand() % 100) * 0.005f; + obj.scale = vec3(s, s, s); + + obj.color = vec4((rand()%100)/100.0f, (rand()%100)/100.0f, (rand()%100)/100.0f, 1.0f); g_scene.add_object(obj); } -- cgit v1.2.3