From 72b97b3743317356606714dbbaab2e69f4b38c47 Mon Sep 17 00:00:00 2001 From: Peter Li Date: Fri, 18 Apr 2025 22:34:12 -0700 Subject: [PATCH] still having a lot of view projection errors --- engine/rend/shaders/meshes.vert.hlsl | 8 +++++--- engine/rend/shaders/meshes.vert.json | 4 ++-- engine/rend/src/camera/CameraComponent.zig | 1 + .../content/_shaders/dxil/meshes.vert.dxil | Bin 5216 -> 5224 bytes projects/content/_shaders/msl/meshes.vert.msl | 3 +-- projects/content/_shaders/spv/meshes.vert.spv | Bin 1492 -> 1524 bytes 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/engine/rend/shaders/meshes.vert.hlsl b/engine/rend/shaders/meshes.vert.hlsl index 35108d3..a41c58c 100644 --- a/engine/rend/shaders/meshes.vert.hlsl +++ b/engine/rend/shaders/meshes.vert.hlsl @@ -26,15 +26,17 @@ StructuredBuffer scene: register(t0, space0); cbuffer Uniforms : register(b0, space1) { - float4x4 ViewProjection : packoffset(c0); - float time: packoffset(c16); + float4x4 ViewProjection; + float time; }; +#define IDENTITY_MATRIX float4x4(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1) + Output main(Input input) { Output output; output.TexCoord = input.UV; - output.Position = mul(ViewProjection, mul(float4(input.Position, 1.0), scene[input.InstanceIndex].Model)); + output.Position = mul(mul(float4(input.Position, 1.0), transpose(scene[input.InstanceIndex].Model)), transpose(ViewProjection)); return output; } diff --git a/engine/rend/shaders/meshes.vert.json b/engine/rend/shaders/meshes.vert.json index 77e68b2..279e031 100644 --- a/engine/rend/shaders/meshes.vert.json +++ b/engine/rend/shaders/meshes.vert.json @@ -48,7 +48,7 @@ { "name" : "time", "type" : "float", - "offset" : 256 + "offset" : 64 } ] } @@ -86,7 +86,7 @@ { "type" : "_10", "name" : "type.Uniforms", - "block_size" : 260, + "block_size" : 68, "set" : 1, "binding" : 0 } diff --git a/engine/rend/src/camera/CameraComponent.zig b/engine/rend/src/camera/CameraComponent.zig index 67273aa..814b5e1 100644 --- a/engine/rend/src/camera/CameraComponent.zig +++ b/engine/rend/src/camera/CameraComponent.zig @@ -66,6 +66,7 @@ pub fn resolve(self: *@This()) void { self.transform = mul(zm.translationV(position.fmul(-1).toZm()), self.transform); self.final = mul(self.transform, self.projection); + core.engine_log("{any}", .{self.final}); self.finalAlt = mul(self.transform, self.projectionAlt); } } diff --git a/projects/content/_shaders/dxil/meshes.vert.dxil b/projects/content/_shaders/dxil/meshes.vert.dxil index 97fc28fbf6656c88a285200fa6b7a939578b5153..b5c86356f7194765ae5f13aefc449141fb6e9509 100644 GIT binary patch delta 1181 zcmaE$@j^q=CBn&BGI>XQ^!61O9xeR$_>c$NWkv=DhK!Ap%&gqZT?+(GEs*hA#K62+ zopmFNWvSe<_5_RDK0iWk_Oo2gYIlk7^r_%tU`SwKWSGaqzyRU{nG6CzBNBk(PRHaRmOuO7&Cla0x}z?M9rS3-q>qp2~GeTMW7 zMu`lFNeOoxzp>>TutiJe6)3ZD0PQU}>nN?_Xg*7T!8FA>sR3l*blC%p!VL#AoEWBT zeA~eYvNER9fZgAKZ80Zffai9o#*dA%9*vScYAgaDlAK3VXbBtHxmzTPzUlPc&hJhIL=#rYePG4^|cM|yw#UBu=83c6@Wt6-}b>F%>##lA>5v22b%A?L0zc4bgINkJi#eMOW;yUEv#|rC>cgLAizA0@CVvnT zt#=lBp1}PJJWz#zcVtfBhgq1Xup2?)@p{q7|wy62;+)PN=>D@gRymz!hnzeRzmaGT?*Rw?gelq71?)wO=3} zSkYOD6X{177##$77R_Pce9G;{Bf!9NP~lSN1dDA6P>Hz$oR7G4jF^A+NGJdkt>YD8 zm4_XU29V@9(SOR3N34(pCh)h#Qz0rLv|b8s=mrPQl{`&?%q$F!1|3I~ROcCRK&_DC zo|>@hfRWjR^N@7ol6p``43xt_>0V%_tG7>z0Mx<~F+IjcpoQQJ)fKgcC2~Tm-;=|T z{HBq0Q7FYx%&d_gl8F|qaJBND!W#L)#Tc%^1*pMS1uhSge&Aw=EbZ#Y!U4?f3;+?- Bbcp}} delta 1190 zcmaE%@jye;CBn&BevMd1=iZAK30eu%FfuSOBy5yqX65GWS|D(0fsEH82F}gu ztQ%P@e`%!uI{IcSNA8Z0w_%pQ>s%r{eG0gM${83L<}fiZfcQWrg83c`<{SiS6iH?SiPZxI#WfZ!RttYH+}0ur0z0u!6Ax#OVN0gzZoDoiX~>qw*c8L)wETu@8IwJ$hIu#|x;-n#Z6 z)G=SV${pAo#mT06xjBvp*cWp$1|)ufo2mPyQHrG=q~DdT5T^Dalg1WD z1ul@%bOUy%RoC@;m}FR%f|M?0D}^cj*`#^Ku>q_!w*aOz++s0%4EZAuMP?mfVzo+J3s>=} zy(pqp6RM*Ah5VUB(FF&Z*sP}Qg)0&2EU94Ch8d!A<)P@Z156xN%53bwxc@MN#p;fe z2QVZLWHbr%sPP=iU^48HkO4*cW}&wSxYZ4Teq7AyWH8HsV=?CugQNmb)bsnCaJHCm z1Q>fgY8(eM4k`4g2^{XIKgbA7JT|6<{LeNB0mIf{mIBLS&SryI4m@V9jWBOt>YPxq zC*cSKqk{m?qPYT{soc=;c+@%3V#9$oMib6MQlX1opwJ`$IhCGljaRtT>}k5A&o>h>}z@)C#3d5uI#2Opk9l*g;L2>FS-3CC~#-*N!D( zdX94)Vdh5dVR2zQ2+3m_*%yUU1I4T-@UAy(r3H$aPehTQD0~zq509B0K{o()&Kwi diff --git a/projects/content/_shaders/msl/meshes.vert.msl b/projects/content/_shaders/msl/meshes.vert.msl index bc0d27e..f737c00 100644 --- a/projects/content/_shaders/msl/meshes.vert.msl +++ b/projects/content/_shaders/msl/meshes.vert.msl @@ -16,7 +16,6 @@ struct type_StructuredBuffer_Scene struct type_Uniforms { float4x4 ViewProjection; - char _m1_pad[192]; float time; }; @@ -36,7 +35,7 @@ vertex main0_out main0(main0_in in [[stage_in]], constant type_Uniforms& Uniform { main0_out out = {}; out.out_var_TEXCOORD0 = in.in_var_TEXCOORD3; - out.gl_Position = Uniforms.ViewProjection * (float4(in.in_var_TEXCOORD0, 1.0) * scene._m0[gl_InstanceIndex].Model); + out.gl_Position = transpose(transpose(Uniforms.ViewProjection)) * (transpose(transpose(scene._m0[gl_InstanceIndex].Model)) * float4(in.in_var_TEXCOORD0, 1.0)); return out; } diff --git a/projects/content/_shaders/spv/meshes.vert.spv b/projects/content/_shaders/spv/meshes.vert.spv index e31a92ea19c1a7c21424746ec48ba9da3f3a2825..7c9992f56e8737f7f446501a19f396f612a5dcd3 100644 GIT binary patch delta 263 zcmXw!Jqp4=6okhYmk`!Oqotsz@jw2QHi{|i6}*I}@C>pi5erK@PvB8(1?R!0_?Wjd z`)1jX{n|K?K?qa;Bv{|$r^p_Uw{#>r!Jtk*bE#<^hMamtZC>?rB2+%w69a0$Qe~MsWYP9jqhp0+{;@xUfHwate*Dm S5U>g81MX#_nr1)#Wkde7BNQV5 delta 245 zcmXw!O$x#=6oeuxX{a?FL$PM&FUP0+e#DzET1cDcFD>x%*;3F^JBzeil zzkHV1G6f8P9NSy=uomY2v_l&L97gmL;{Q3YM+<${)96p!(`7v)W1`Wxsy1$Lp3^9? zC#<}Ub;#&EYU3Jfz$mzaIberh)!UK}}?TU`vmw()m EA4Q=NtpET3