From 963ccc4ec88377a031ea32d9d6f81aec4225605c Mon Sep 17 00:00:00 2001 From: Sven Balzer <4653051+Kyuusokuna@users.noreply.github.com> Date: Wed, 5 Aug 2026 21:50:13 +0200 Subject: [PATCH] change rendering offsets for character, character shadow and trees change default camera tilt --- src/main.cpp | 2 +- src/shaders/spirv/character.spv | Bin 3448 -> 3504 bytes src/shaders/spirv/character_shadow.spv | Bin 3200 -> 3144 bytes src/shaders/spirv/tree.spv | Bin 3940 -> 3956 bytes src/shaders/src/character.slang | 2 +- src/shaders/src/character_shadow.slang | 2 +- src/shaders/src/tree.slang | 2 +- src/shaders/wgsl/character.wgsl | 2 +- src/shaders/wgsl/character_shadow.wgsl | 2 +- src/shaders/wgsl/tree.wgsl | 2 +- 10 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 9d73706..455bce1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -68,7 +68,7 @@ static float volume_sfx = 50.0f; static bool Running = true; static float camera_fovy_degrees = 31.0f; -static float camera_tilt = 25.5f; +static float camera_tilt = 10.0f; static float camera_distance = 13.5f; static mat4x4 view_matrix; diff --git a/src/shaders/spirv/character.spv b/src/shaders/spirv/character.spv index a2ab796d8a3cb04e71c9401e057e6edfa6dc7c84..9b779e62cf5ea73717f73383f65bb0f84513e694 100644 GIT binary patch literal 3504 zcmZ{m+iz4=6vj85&TuPGL@t#`xM)J4nV_w=SjRL`idg9YMg%3pv^_%xI&&sxPD`8k zfH5XM2}=AEcqj1@6}&!ReDGB;V2qcJl}o^=4%z zh~i+@ot7So`b2w0&x_W$<*r*i5+%O1sCu#yG-K)4M028E<;Je!B;}Iq)RNaea4 z9ZaQeX+KA0_m)|SN#8FnV2nuEie$E$Tr^h>>&>`ajj9dpGe7?#jWe^(a{(hsT0=6P z#P5PIom)H|1^1%(2^6_Jzk z+a_X}zFjhR5S{a5PhJ2z_dI<8sm`6p&ce>DvpRFm=0_*L^}sx>2b-<+KtAT0jYlWm z>S4~d-#TTY?rpMSN8TW*AihN?fUlRnA;HsJ*f&W}^QQK@ zyj{%gmYv*IPruHEJa>Bx+LJk3mG;bxpU8lgmuO~;^VThL*6f2Z^`>v-^_AY#A23DiZe@QWc@rXd0^n} zlGU_dI`QC}6mvkF^XV3C(b;nE!N@lz&N+giAN0D}k4R@f&W!!w$3(mZ(~nDLSv|Ex zJ6j^(Daknz`=d9#PW^rQj-C_e{Mmy#Y@xF@EBd@Re#E~Cs0GGdd`p~~h_(JNNoLLv zK9|MWgF5J+Hv>k#_r!?>L%-^E?2k(4?($8c9(3lvH={GZvWOhmnHTTh{OSL+h`q7X zf0)t9$NM*b`s2N`@TWfBujMD-H4*t9)LS7A8w>1DX`C~$E5-ReWcH@7^7>=4bGJ5% z=*NO6?J4Mt(TuC0(!n;PM z4&=XNXCM5?Yku3kyqF*Rnji1m^6iqG%|~74SIqeB>F}d&^W!~RzRvpS%lvrb=EvL4 z?n~e1#~U}lQimUXa}K9u91&O2iV8=!H zwUm!HctS)D)2ov4E&D#lC7%$1+bkv|a}TWVNy+$uzwYA#$>22+^XARb4>Io!`)$3J zheh^oB4MnYi2K(Tw|DZHWM*PD%u1fi=(i=~gZ;et526dAN$KarfArW%)yFsLCyz1z zgTk2Q&mI?>pT{pAH=kd<&ytMKZ<4_eX`@>c_?WsQ_6x6r zv0$(InO>Jn-}v3XpC?XcS;a_@ug~vbF9Ps(w>#zBoH>KkX-s5YyC7GP}im+c2 z*;#)jnLTfbUhz4;mJB{5vOd0%Ob^*UY|n3HBL*KkukR#tUPsgy=ls103}4oms=qA$ zjtCpXVm^HHcvn}&-xu+H9u|?Cm=8qYmg7T@fwL?JbH@K85&PiBxfjGg7O`he#M_|8 QPek})<1G0d0JD4j4=?y$+yDRo literal 3448 zcmZ{l+iz7>5XKk1S)klRZW0L>O^9tys?=M=nkGsSsx6`*Bzib)ciW@qbf4_*mXi2@ zF(y8MqJIMKyd#33J~YuMpS(m3@sfB?eDW5e-*4}kc3bN@nXH*_eQVattTp>IH|@G9 zgk>Rw-T5SKU1$n-+sw+!&=$^X?jJZjP?}0dOFj2=%M7bSGgG#EjaZB(Nxf2?EYCzq z8qJ0Y*)_=)$v(-`k~Lv@Xwe)?GVWMX8Lvl^sq8t)jAX5Rv##KzHD}(5rB%NU&AIz> zBcA$yY}Ep98lUX_FV>dDRh?{1r=^o|QX9>jwkpO0+A}gdJvJ64<$5Jesgnp~EvKqVTgDMBl*{#~J{%FmI1#sP$@kH(m&04)wcRPf=3Q-*kYm5z3ipP-UtZ7|yYfj`%RI&#EOK~jYbE&P z{&q+hZts-N8^q@RIFk;*=AGvqklVa@))}l*>!MAai~h0k?>SIU&%tZ!IpB}F7WZSb z-{Yaqe%^X{BJLepWgUH^v^LG#C7a}r+_9+%cDvccuw6E}!2#bOdt-*@zF6NZJNKKf z-)ifcLZ{a8?eTQ!Uhs39Vc^cO9Iv{4yVf)w_C4eX2i&pUhJpLOPU#_>p5Mn?$Fh-u+arDPnfD1>y!QdySKPbTc*S^ojpun&%RUK%T0W|oT2iCUvJYye z_AQcax;Nf57~BEP+z}Y|6K4DRQ?l{JeNY?bqY~b^+sCCdymlj*b-EXS7sP{2ZTA&y>PN5RgLUdfZ#$p-CnTKBI{DWMHvZ^s=aV13 z%z#gP^rrjA-<$-0_o@%r#~K6dcUjysdsk}ikWhQKSDF2g)_FIZB;@y^Z0fkxu;1iu zgLKAU`o{%domu?<=JE0dID4Ihvu~Dg_IgRHu&-APVxeczi39x)t#b}M{5o%^ z=}YlA*Ln1=`=dvT{)o$Y^s4i^7x9SOdGxCD7RN_k&ZB>wN8c9DC2!}^zs{p?i#+n? z9_WQfB)luP`=wK_m+V`&UpgG{A-!hq^f3vzf0z2irGEz{yvaTZ{tjv$l7PP<4toz7 zh7UO0{b31j_e1%|K4KXCjyUfb=|$c#*x_5^6i4nS9XcE!J@rf9WLwarxwHvKB(;2`?1+z40x|tO+S%N-f%kXtWTw%m#~+0$3HWC zh2bBm4sd=o`&IM#xoo)L9TvkE((!qRg!Ky&zw0lhb0(aZ&Bt}=;PjE_@s)IPDCXg3 zel7gE1diX=H`2MUqsohW{#F78mocd5FKT{E!WzP$K1~w(>Wb!fB$qQg_syQGhP#hz phJiEO2X%)3u7q>0Nw|0VpDd diff --git a/src/shaders/spirv/character_shadow.spv b/src/shaders/spirv/character_shadow.spv index c8add2580854bb30515b75c411057cff0dee8f30..7d7b046938c8560946d7dfee5a3de515534cd17b 100644 GIT binary patch literal 3144 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 GT>lLKa6%IR diff --git a/src/shaders/spirv/tree.spv b/src/shaders/spirv/tree.spv index 5e398816823b9fd96faa3e7aa1aafe7825c12d0c..95a09ae6d63a803b7420289607ef1ea5f84d5f52 100644 GIT binary patch delta 997 zcmYk4KWI}?6vpp+Nt#sqlp3lQAy~Tz{@DaUtO!EIrPigJQ^B>9lMsuDRdkStI5>B2 z$>8i1W33v8KtVCp#y=DhQIQIYzh8I{df|KLp6`73oO9nj8?~Rcq!5pnLx@5Mhr{0c z$*rif{9tz+wbI3SobPlzQYeL$bUm&{opd$Y-$)7%qojpC2IoU5w9@5bb!-K147esk zG3Xxxh0O0Xdd0;kzCO{oJ1`fe*9IzQmk6=W>_gsUGXRv=_*y{jAhBmyi^=If&-`Y3 zqVo8dQH!ZKMRXS10cJW%dll?3_p{nkV|4Ic9Id5WJ7?-|Ant)#4&BDS1#(w7G>Pp3 zxpQC|ZVu zbF{N7{>%J@?Eh~1Xo?NwMI%}?=@GD*wv%f8D?3XWxse_HhA;0E<>|iT%X`WBO!oud z*0<|^;mfPb^Zmy6dfRnd`0$te!o0mdka>F+G?_x5@eZ~~QpaP4e^kbn@Z~(`n&NLY zu}^`qQu<_9weD=L0w>bJF`KFvKt4b9GUMc3B|p2gX5b11tHm7vb#c THBf7e*%XbhJWEGO5QfZ+Qnps2Txb|=)Hd!~32j}u9YUgvTF50@wDu2> zS@a*+G`^Q-2Qn)Sv8R30oi$C z1E|?Oj?_-P$(<&M6V>6uL1gz`p*UChhVUNDvuT<59Y}k@rYYiq*CvUxXa(XSkgm1B zJ{`FU4#7jXnsw1^pZJWdcsE=g=~}+lQ*#7SG3lY$G2ha|<{pyLR7Ac<+)Kr!Pn&$! zpyh_sem9gBD|!RnyNIsVr{EK~4_e>^EP|px+8N)<2XD}Sc)f$D8g+lQOV8i*&{g7jWtFg?fMC zy54o)KREjH%oyI}KVmqZ8mgF#`upAzV~T1l=6It#F@a0dKCNjksmc5TluKN_vsBSc zZUIfA21eE7+6L0Yt{tyQ*P=i+xv#jc{JTJv<X;am18ElvXPf~ INy$-g1<~<_%m4rY diff --git a/src/shaders/src/character.slang b/src/shaders/src/character.slang index 984db1c..9ea81f6 100644 --- a/src/shaders/src/character.slang +++ b/src/shaders/src/character.slang @@ -37,7 +37,7 @@ VertexShaderOutput main_vertex(VertexShaderInput input) { default: {} } - output.pos = mul(float4(input.world_pos + vertex_pos, 0, 1), view_projection_matrix); + output.pos = mul(float4(input.world_pos + vertex_pos + float2(0, 0.35), 0, 1), view_projection_matrix); uint sprite_x = bitfieldExtract(input.sprite_selection, 16, 16); uint sprite_y = bitfieldExtract(input.sprite_selection, 0, 16); diff --git a/src/shaders/src/character_shadow.slang b/src/shaders/src/character_shadow.slang index d6b29ec..6b62ea7 100644 --- a/src/shaders/src/character_shadow.slang +++ b/src/shaders/src/character_shadow.slang @@ -38,7 +38,7 @@ VertexShaderOutput main_vertex(VertexShaderInput input) { vertex_pos *= 0.5; - output.pos = mul(float4(input.world_pos + vertex_pos + float2(0, -0.35), 0, 1), view_projection_matrix); + output.pos = mul(float4(input.world_pos + vertex_pos, 0, 1), view_projection_matrix); output.uv = vertex_uv; return output; diff --git a/src/shaders/src/tree.slang b/src/shaders/src/tree.slang index 4b2297b..514f54a 100644 --- a/src/shaders/src/tree.slang +++ b/src/shaders/src/tree.slang @@ -23,7 +23,7 @@ struct FragmentShaderOutput { float4 color : SV_Target; }; -static const float2 offset = float2(0, 0.5); +static const float2 offset = float2(0, 0.25); [shader("vertex")] VertexShaderOutput main_vertex(VertexShaderInput input) { diff --git a/src/shaders/wgsl/character.wgsl b/src/shaders/wgsl/character.wgsl index f50d42e..85dbc4b 100644 --- a/src/shaders/wgsl/character.wgsl +++ b/src/shaders/wgsl/character.wgsl @@ -70,7 +70,7 @@ fn main_vertex( _S1 : vertexInput_0, @builtin(vertex_index) vertex_index_0 : u32 vertex_uv_0 = _S2; } } - output_0.pos_0 = (((mat4x4(view_projection_matrix_0.data_0[i32(0)][i32(0)], view_projection_matrix_0.data_0[i32(1)][i32(0)], view_projection_matrix_0.data_0[i32(2)][i32(0)], view_projection_matrix_0.data_0[i32(3)][i32(0)], view_projection_matrix_0.data_0[i32(0)][i32(1)], view_projection_matrix_0.data_0[i32(1)][i32(1)], view_projection_matrix_0.data_0[i32(2)][i32(1)], view_projection_matrix_0.data_0[i32(3)][i32(1)], view_projection_matrix_0.data_0[i32(0)][i32(2)], view_projection_matrix_0.data_0[i32(1)][i32(2)], view_projection_matrix_0.data_0[i32(2)][i32(2)], view_projection_matrix_0.data_0[i32(3)][i32(2)], view_projection_matrix_0.data_0[i32(0)][i32(3)], view_projection_matrix_0.data_0[i32(1)][i32(3)], view_projection_matrix_0.data_0[i32(2)][i32(3)], view_projection_matrix_0.data_0[i32(3)][i32(3)])) * (vec4(_S1.world_pos_0 + vertex_pos_0, 0.0f, 1.0f)))); + output_0.pos_0 = (((mat4x4(view_projection_matrix_0.data_0[i32(0)][i32(0)], view_projection_matrix_0.data_0[i32(1)][i32(0)], view_projection_matrix_0.data_0[i32(2)][i32(0)], view_projection_matrix_0.data_0[i32(3)][i32(0)], view_projection_matrix_0.data_0[i32(0)][i32(1)], view_projection_matrix_0.data_0[i32(1)][i32(1)], view_projection_matrix_0.data_0[i32(2)][i32(1)], view_projection_matrix_0.data_0[i32(3)][i32(1)], view_projection_matrix_0.data_0[i32(0)][i32(2)], view_projection_matrix_0.data_0[i32(1)][i32(2)], view_projection_matrix_0.data_0[i32(2)][i32(2)], view_projection_matrix_0.data_0[i32(3)][i32(2)], view_projection_matrix_0.data_0[i32(0)][i32(3)], view_projection_matrix_0.data_0[i32(1)][i32(3)], view_projection_matrix_0.data_0[i32(2)][i32(3)], view_projection_matrix_0.data_0[i32(3)][i32(3)])) * (vec4(_S1.world_pos_0 + vertex_pos_0 + vec2(0.0f, 0.34999999403953552f), 0.0f, 1.0f)))); output_0.uv_0 = (vec2(f32((u32(_S1.sprite_selection_0>>(u32(16)))&((((u32(1)<>(u32(0)))&((((u32(1)<(0.25f); return output_0; } diff --git a/src/shaders/wgsl/character_shadow.wgsl b/src/shaders/wgsl/character_shadow.wgsl index f08b69d..186115b 100644 --- a/src/shaders/wgsl/character_shadow.wgsl +++ b/src/shaders/wgsl/character_shadow.wgsl @@ -71,7 +71,7 @@ fn main_vertex( _S1 : vertexInput_0, @builtin(vertex_index) vertex_index_0 : u32 vertex_pos_0 = _S2; } } - output_0.pos_0 = (((mat4x4(view_projection_matrix_0.data_0[i32(0)][i32(0)], view_projection_matrix_0.data_0[i32(1)][i32(0)], view_projection_matrix_0.data_0[i32(2)][i32(0)], view_projection_matrix_0.data_0[i32(3)][i32(0)], view_projection_matrix_0.data_0[i32(0)][i32(1)], view_projection_matrix_0.data_0[i32(1)][i32(1)], view_projection_matrix_0.data_0[i32(2)][i32(1)], view_projection_matrix_0.data_0[i32(3)][i32(1)], view_projection_matrix_0.data_0[i32(0)][i32(2)], view_projection_matrix_0.data_0[i32(1)][i32(2)], view_projection_matrix_0.data_0[i32(2)][i32(2)], view_projection_matrix_0.data_0[i32(3)][i32(2)], view_projection_matrix_0.data_0[i32(0)][i32(3)], view_projection_matrix_0.data_0[i32(1)][i32(3)], view_projection_matrix_0.data_0[i32(2)][i32(3)], view_projection_matrix_0.data_0[i32(3)][i32(3)])) * (vec4(_S1.world_pos_0 + vertex_pos_0 * vec2(0.5f) + vec2(0.0f, -0.34999999403953552f), 0.0f, 1.0f)))); + output_0.pos_0 = (((mat4x4(view_projection_matrix_0.data_0[i32(0)][i32(0)], view_projection_matrix_0.data_0[i32(1)][i32(0)], view_projection_matrix_0.data_0[i32(2)][i32(0)], view_projection_matrix_0.data_0[i32(3)][i32(0)], view_projection_matrix_0.data_0[i32(0)][i32(1)], view_projection_matrix_0.data_0[i32(1)][i32(1)], view_projection_matrix_0.data_0[i32(2)][i32(1)], view_projection_matrix_0.data_0[i32(3)][i32(1)], view_projection_matrix_0.data_0[i32(0)][i32(2)], view_projection_matrix_0.data_0[i32(1)][i32(2)], view_projection_matrix_0.data_0[i32(2)][i32(2)], view_projection_matrix_0.data_0[i32(3)][i32(2)], view_projection_matrix_0.data_0[i32(0)][i32(3)], view_projection_matrix_0.data_0[i32(1)][i32(3)], view_projection_matrix_0.data_0[i32(2)][i32(3)], view_projection_matrix_0.data_0[i32(3)][i32(3)])) * (vec4(_S1.world_pos_0 + vertex_pos_0 * vec2(0.5f), 0.0f, 1.0f)))); output_0.uv_0 = vertex_uv_0; return output_0; } diff --git a/src/shaders/wgsl/tree.wgsl b/src/shaders/wgsl/tree.wgsl index b9c17d9..e5e9d08 100644 --- a/src/shaders/wgsl/tree.wgsl +++ b/src/shaders/wgsl/tree.wgsl @@ -75,7 +75,7 @@ fn main_vertex( _S1 : vertexInput_0, @builtin(vertex_index) vertex_index_0 : u32 vertex_pos_0 = _S2; } } - output_0.pos_0 = (((mat4x4(view_projection_matrix_0.data_0[i32(0)][i32(0)], view_projection_matrix_0.data_0[i32(1)][i32(0)], view_projection_matrix_0.data_0[i32(2)][i32(0)], view_projection_matrix_0.data_0[i32(3)][i32(0)], view_projection_matrix_0.data_0[i32(0)][i32(1)], view_projection_matrix_0.data_0[i32(1)][i32(1)], view_projection_matrix_0.data_0[i32(2)][i32(1)], view_projection_matrix_0.data_0[i32(3)][i32(1)], view_projection_matrix_0.data_0[i32(0)][i32(2)], view_projection_matrix_0.data_0[i32(1)][i32(2)], view_projection_matrix_0.data_0[i32(2)][i32(2)], view_projection_matrix_0.data_0[i32(3)][i32(2)], view_projection_matrix_0.data_0[i32(0)][i32(3)], view_projection_matrix_0.data_0[i32(1)][i32(3)], view_projection_matrix_0.data_0[i32(2)][i32(3)], view_projection_matrix_0.data_0[i32(3)][i32(3)])) * (vec4(vec2(_S1.pos_1) + (vertex_pos_0 + vec2(0.0f, 0.5f)), 0.0f, 1.0f)))); + output_0.pos_0 = (((mat4x4(view_projection_matrix_0.data_0[i32(0)][i32(0)], view_projection_matrix_0.data_0[i32(1)][i32(0)], view_projection_matrix_0.data_0[i32(2)][i32(0)], view_projection_matrix_0.data_0[i32(3)][i32(0)], view_projection_matrix_0.data_0[i32(0)][i32(1)], view_projection_matrix_0.data_0[i32(1)][i32(1)], view_projection_matrix_0.data_0[i32(2)][i32(1)], view_projection_matrix_0.data_0[i32(3)][i32(1)], view_projection_matrix_0.data_0[i32(0)][i32(2)], view_projection_matrix_0.data_0[i32(1)][i32(2)], view_projection_matrix_0.data_0[i32(2)][i32(2)], view_projection_matrix_0.data_0[i32(3)][i32(2)], view_projection_matrix_0.data_0[i32(0)][i32(3)], view_projection_matrix_0.data_0[i32(1)][i32(3)], view_projection_matrix_0.data_0[i32(2)][i32(3)], view_projection_matrix_0.data_0[i32(3)][i32(3)])) * (vec4(vec2(_S1.pos_1) + (vertex_pos_0 + vec2(0.0f, 0.25f)), 0.0f, 1.0f)))); output_0.uv_0 = vertex_uv_0; output_0.kind_0 = _S1.kind_1; return output_0;