summaryrefslogtreecommitdiff
path: root/src/3d/renderer.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3d/renderer.h')
-rw-r--r--src/3d/renderer.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/3d/renderer.h b/src/3d/renderer.h
index bf3b497..4c31c97 100644
--- a/src/3d/renderer.h
+++ b/src/3d/renderer.h
@@ -23,6 +23,14 @@ struct GlobalUniforms {
vec4 params; // x = num_objects, yzw = padding
vec2 resolution;
vec2 padding;
+
+ // Transpose matrices: mini_math is row-major, WGSL expects column-major.
+ static GlobalUniforms make(const mat4& vp, const vec4& cam_pos_time,
+ const vec4& p, const vec2& res) {
+ return {mat4::transpose(vp), mat4::transpose(vp.inverse()),
+ cam_pos_time, p,
+ res, vec2(0.0f, 0.0f)};
+ }
};
// Matches the GPU struct layout
@@ -33,6 +41,11 @@ struct ObjectData {
// params.x = object type (as float), params.y = plane_distance (if
// applicable)
vec4 params;
+
+ // Transpose matrices: mini_math is row-major, WGSL expects column-major.
+ static ObjectData make(const mat4& m, const vec4& col, const vec4& p) {
+ return {mat4::transpose(m), mat4::transpose(m.inverse()), col, p};
+ }
};
class Renderer3D {