summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tests/test_3d_render.cc41
1 files changed, 26 insertions, 15 deletions
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);
+ 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);
- 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);
+ obj.color = vec4((rand()%100)/100.0f, (rand()%100)/100.0f, (rand()%100)/100.0f, 1.0f);
g_scene.add_object(obj);
}