summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/3d/renderer_helpers.cc29
-rw-r--r--src/3d/renderer_helpers.h14
-rw-r--r--src/tests/3d/test_3d_physics.cc21
-rw-r--r--src/tests/3d/test_3d_render.cc25
-rw-r--r--src/tests/3d/test_mesh.cc10
5 files changed, 50 insertions, 49 deletions
diff --git a/src/3d/renderer_helpers.cc b/src/3d/renderer_helpers.cc
new file mode 100644
index 0000000..7ee7209
--- /dev/null
+++ b/src/3d/renderer_helpers.cc
@@ -0,0 +1,29 @@
+// This file is part of the 64k demo project.
+// Implementation of Renderer3D helper functions.
+
+#include "3d/renderer_helpers.h"
+
+void setup_standard_textures(Renderer3D& renderer, TextureManager& tex_mgr,
+ WGPUDevice device, WGPUQueue queue) {
+ tex_mgr.init(device, queue);
+
+ // Standard noise texture (256x256, seed 1234, frequency 16)
+ GpuProceduralParams noise_params = {};
+ noise_params.width = 256;
+ noise_params.height = 256;
+ float noise_vals[2] = {1234.0f, 16.0f};
+ noise_params.params = noise_vals;
+ noise_params.num_params = 2;
+ tex_mgr.create_gpu_noise_texture("noise", noise_params);
+ renderer.set_noise_texture(tex_mgr.get_texture_view("noise"));
+
+ // Standard sky texture (512x256 Perlin)
+ GpuProceduralParams sky_params = {};
+ sky_params.width = 512;
+ sky_params.height = 256;
+ float sky_vals[5] = {42.0f, 4.0f, 1.0f, 0.5f, 6.0f};
+ sky_params.params = sky_vals;
+ sky_params.num_params = 5;
+ tex_mgr.create_gpu_perlin_texture("sky", sky_params);
+ renderer.set_sky_texture(tex_mgr.get_texture_view("sky"));
+}
diff --git a/src/3d/renderer_helpers.h b/src/3d/renderer_helpers.h
new file mode 100644
index 0000000..3d0167f
--- /dev/null
+++ b/src/3d/renderer_helpers.h
@@ -0,0 +1,14 @@
+// This file is part of the 64k demo project.
+// Helper functions for Renderer3D setup and common initialization patterns.
+
+#pragma once
+
+#include "3d/renderer.h"
+#include "gpu/texture_manager.h"
+
+// Sets up standard noise and sky textures for Renderer3D.
+// Creates GPU-procedural noise (256x256, seed 1234, freq 16) and
+// Perlin sky (512x256) textures in the TextureManager, then binds
+// them to the renderer.
+void setup_standard_textures(Renderer3D& renderer, TextureManager& tex_mgr,
+ WGPUDevice device, WGPUQueue queue);
diff --git a/src/tests/3d/test_3d_physics.cc b/src/tests/3d/test_3d_physics.cc
index 736cfc0..9b8bf11 100644
--- a/src/tests/3d/test_3d_physics.cc
+++ b/src/tests/3d/test_3d_physics.cc
@@ -6,6 +6,7 @@
#include "3d/object.h"
#include "3d/physics.h"
#include "3d/renderer.h"
+#include "3d/renderer_helpers.h"
#include "3d/scene.h"
#include "gpu/effects/shaders.h"
#include "gpu/texture_manager.h"
@@ -125,25 +126,7 @@ int main(int argc, char** argv) {
g_renderer.init(g_device, g_queue, g_format);
g_renderer.resize(platform_state.width, platform_state.height);
- g_textures.init(g_device, g_queue);
- ProceduralTextureDef noise_def;
- noise_def.width = 256;
- noise_def.height = 256;
- noise_def.gen_func = gen_periodic_noise;
- noise_def.params.push_back(1234.0f);
- noise_def.params.push_back(16.0f);
- g_textures.create_procedural_texture("noise", noise_def);
-
- g_renderer.set_noise_texture(g_textures.get_texture_view("noise"));
-
- ProceduralTextureDef sky_def;
- sky_def.width = 512;
- sky_def.height = 256;
- sky_def.gen_func = procedural::gen_perlin;
- sky_def.params = {42.0f, 4.0f, 1.0f, 0.5f, 6.0f};
- g_textures.create_procedural_texture("sky", sky_def);
-
- g_renderer.set_sky_texture(g_textures.get_texture_view("sky"));
+ setup_standard_textures(g_renderer, g_textures, g_device, g_queue);
setup_scene();
diff --git a/src/tests/3d/test_3d_render.cc b/src/tests/3d/test_3d_render.cc
index 06e95c4..87d7b76 100644
--- a/src/tests/3d/test_3d_render.cc
+++ b/src/tests/3d/test_3d_render.cc
@@ -4,6 +4,7 @@
#include "3d/camera.h"
#include "3d/object.h"
#include "3d/renderer.h"
+#include "3d/renderer_helpers.h"
#include "3d/scene.h"
#include "generated/assets.h"
#include "gpu/effects/shaders.h"
@@ -131,29 +132,9 @@ int main(int argc, char** argv) {
g_renderer.init(g_device, g_queue, g_format);
g_renderer.resize(platform_state.width, platform_state.height);
- g_textures.init(g_device, g_queue);
+ setup_standard_textures(g_renderer, g_textures, g_device, g_queue);
- // GPU Noise texture (replaces CPU procedural)
- GpuProceduralParams noise_params = {};
- noise_params.width = 256;
- noise_params.height = 256;
- float noise_vals[2] = {1234.0f, 16.0f};
- noise_params.params = noise_vals;
- noise_params.num_params = 2;
- g_textures.create_gpu_noise_texture("noise", noise_params);
- g_renderer.set_noise_texture(g_textures.get_texture_view("noise"));
-
- // GPU Perlin texture for sky (replaces CPU procedural)
- GpuProceduralParams sky_params = {};
- sky_params.width = 512;
- sky_params.height = 256;
- float sky_vals[5] = {42.0f, 4.0f, 1.0f, 0.5f, 6.0f};
- sky_params.params = sky_vals;
- sky_params.num_params = 5;
- g_textures.create_gpu_perlin_texture("sky", sky_params);
- g_renderer.set_sky_texture(g_textures.get_texture_view("sky"));
-
- // GPU Grid texture (new!)
+ // GPU Grid texture (additional texture for this test)
GpuProceduralParams grid_params = {};
grid_params.width = 256;
grid_params.height = 256;
diff --git a/src/tests/3d/test_mesh.cc b/src/tests/3d/test_mesh.cc
index 0374ed8..4a1d97b 100644
--- a/src/tests/3d/test_mesh.cc
+++ b/src/tests/3d/test_mesh.cc
@@ -4,6 +4,7 @@
#include "3d/camera.h"
#include "3d/object.h"
#include "3d/renderer.h"
+#include "3d/renderer_helpers.h"
#include "3d/scene.h"
#include "gpu/effects/shaders.h"
#include "gpu/texture_manager.h"
@@ -256,14 +257,7 @@ int main(int argc, char** argv) {
}
#endif /* !defined(STRIP_ALL) */
- g_textures.init(g_device, g_queue);
- ProceduralTextureDef noise_def;
- noise_def.width = 256;
- noise_def.height = 256;
- noise_def.gen_func = procedural::gen_noise;
- noise_def.params = {1234.0f, 16.0f};
- g_textures.create_procedural_texture("noise", noise_def);
- g_renderer.set_noise_texture(g_textures.get_texture_view("noise"));
+ setup_standard_textures(g_renderer, g_textures, g_device, g_queue);
// --- Create Scene ---
Object3D floor(ObjectType::BOX);