From fb5851020f5091191d9cc72fe7953854c6c05edc Mon Sep 17 00:00:00 2001 From: Asuro Date: Mon, 17 Feb 2025 18:25:39 +0100 Subject: [PATCH] fixed texture loading --- src/game/Global.cpp | 8 +++++--- src/game/Global.h | 2 +- src/game/Instance.h | 2 +- src/game/Level.cpp | 6 +++--- src/game/compiled-shaders/dx11/frag.bin | Bin 480 -> 5370 bytes src/game/compiled-shaders/dx11/vert.bin | Bin 1410 -> 1410 bytes src/game/compiled-shaders/glsl/frag.bin | Bin 12960 -> 13100 bytes src/game/compiled-shaders/glsl/vert.bin | Bin 10648 -> 10642 bytes src/game/compiled-shaders/spirv/frag.bin | Bin 798 -> 4362 bytes src/game/compiled-shaders/spirv/vert.bin | Bin 2162 -> 2302 bytes src/game/rendering/Rendering.cpp | 7 +++++-- src/game/shaders/frag.sc | 18 ++++++++++++++---- src/game/shaders/vert.sc | 3 +-- tools/remedy-session.rdbg | Bin 404 -> 706 bytes 14 files changed, 30 insertions(+), 16 deletions(-) diff --git a/src/game/Global.cpp b/src/game/Global.cpp index 4db822e..1865573 100644 --- a/src/game/Global.cpp +++ b/src/game/Global.cpp @@ -109,14 +109,16 @@ namespace Game GameInst = &instance; } - void* AllocateScratch(size_t byteCount, size_t align = 16) + void* AllocateScratch(size_t byteCount, size_t align) { size_t offset = GetInstance().UsedScratchAmount; uint8_t* base = static_cast(GetShared().Game.TransientStorage); uint8_t* current = base + offset; - uintptr_t ptrAligned = ((reinterpret_cast(current) + align - 1) / align) * align; - uintptr_t newOffset = ptrAligned - reinterpret_cast(base) + byteCount; + size_t offsetAligned = ((offset + align - 1) / align) * align; + uint8_t* ptrAligned = base + offsetAligned; + size_t newOffset = offsetAligned + byteCount; if (newOffset > GetShared().Game.TransientStorageSize) return nullptr; + GetInstance().UsedScratchAmount = newOffset; return reinterpret_cast(ptrAligned); } } // namespace Game diff --git a/src/game/Global.h b/src/game/Global.h index 6dbb8d8..2983719 100644 --- a/src/game/Global.h +++ b/src/game/Global.h @@ -76,5 +76,5 @@ namespace Game void SetShared(SharedData& instance); GameInstance& GetInstance(); void SetInstance(GameInstance& instance); - void* AllocateScratch(size_t byteCount); + void* AllocateScratch(size_t byteCount, size_t align = 16); } // namespace Game diff --git a/src/game/Instance.h b/src/game/Instance.h index ffdd77e..9a90389 100644 --- a/src/game/Instance.h +++ b/src/game/Instance.h @@ -33,7 +33,7 @@ namespace Game { bool IsInitialized = false; uint64_t Size = sizeof(GameInstance); - uint8_t UsedScratchAmount = 0; + uint64_t UsedScratchAmount = 0; Time Time; PlayerData Player; Level GameLevel; diff --git a/src/game/Level.cpp b/src/game/Level.cpp index a719528..5e7ee8a 100644 --- a/src/game/Level.cpp +++ b/src/game/Level.cpp @@ -141,8 +141,8 @@ namespace Game void TestEntity::Update() { - EData.TestColor[0] = 0.6f; - EData.TestColor[1] = 0.9f; - EData.TestColor[2] = 0.5f; + EData.TestColor[0] = 0.0f; + // EData.TestColor[1] = 0.9f; + // EData.TestColor[2] = 0.5f; } } // namespace Game diff --git a/src/game/compiled-shaders/dx11/frag.bin b/src/game/compiled-shaders/dx11/frag.bin index b01d0798d481e2eb54926ee191b6f7af58d45c17..9f39df50c675510b6f5b868755a3a95ab6b547a9 100644 GIT binary patch literal 5370 zcmZ<@_Tcst|C7(az`(%Fz+D<&l3HBioS&0lB*ehLzz7m%;3|$UNv!}28ZhD&Tq452 z;1c2Fe4AAxIrJXWFK+XT?$_?c$$`uP$uTo9Fz7HaFx+5ZVBle7VDJof_gliiz`)AD zz`()4z|a7;4`KyKEr`p{z`)Q0Vn8uS9Aq9yd=gX)M1jPa7#JAX*%=sSf&`!#Bo4;R z5OI)RkQ7La1*D#Vfgw07KEOZNGsM&1kHOjB$3KX{&p*i5(T5?#HNx57Kgfk)^=kiM zcR!HZLHa>%RR9?R#UQglOpu#`!{S36gWO$17*?+i_Hd1uAk4rJz`(%pgoS}2tAl|t zl7WH6tq-CbWL6X?;1dKu+8H7w7+4qzAnedk28JX72Ie9G0S1u2Kx`uc0S1s=sSFIv zpA;bKG8h<`K>jdeVBjcXfQT_UfQ_@CHFKsN14Dy7h-b#YzzUKF+36+(F;jqnfn5ly z$BhZ17es^9m>|hH46$@j9n9n8x@k12@1FI2( z062|3enlMsXV(#C|qLxcO{OP<>hq0u7F!0Eb|9SeR%*<)xrB$UK-HE2tQZ z2FZcK7vxu%dPvwefWs7KCQJ?#2Oza(3=C{Ya#-B~(*tu4D4vn@fL#r-i-EzLfq@lW zjubm!{^4U_fQJLjeyAM|*z5rLAKhMv`UVGNv!G)3Ff)<$fx-mj8JL_t7Qf*0yCVYw zD=dCsW=JE6!NO0Qfq@m4W?*8VFoKC$;Ybg#uz{HkG6!ZK%p6H9_JRBeO1B`tEraG8 zSe^oXqfv!Y>1iI;{YTN(+g3DYB$V0SR8=VqpE|b2gLzM4iu)axCi+i z76u?WTycP|9%dHE51{w~>4n${4tG%agPIs146c`8c7SM@UQiss^n&~V3QMRNps)vV z!5EYeK=y;|fa!&*1It6|-3EJ5SpYH*RBu1yg5(2`9#9;>^n?5h5(Ak7QU`NChz&6l zlK!Dhqy|tvK-UXV2elep=R?vr$P7>%z}x^)2MK$a8$tdA*$;{XkU9_>7PlZ8WCkb> z(B-hHhnWTP1I&#OJ7MVv9v9$z0J00F2V@tB4~hejUXX7Ogw1 ztAqG+sKo)uPasdi`~*uEpg2I61H}Ql7)T!|Oo)jCTzWy~g6boXIj}kkQr|i_fa*<9 z{RWZ))m0!GBFDgB3~fV!#6Wc%h=#~D*n{dgP`v|6ParW+z5~S#OpFU!SAyh0O>>wy z%nndp1(E~V50it5fy@Ji8OVO@auEALbs@+Mkb02YK=#ALq|oe#`5$IKC>%g~LH47| zfy{&1k6jL27QoxQptKJ4Ke&wrG8bwFsGI_~mq21LJ0WrncA$6xxff&?NDfAW)Plkc zT@Ip;0hCw3W`fj%!VE;i^n=U4V9^^n==UFgchQ za@!3i2GR#|3oIT$Y*;*i*dRMV_Ji0kwGclw*n{E$yBs7PVwZ!&1G*fjO$5pdApe2# z4~Pc&9p(qLvkG2Aoqc2m_CsCAT}uNAk!c-LFoe|1~L~fIs#4d+D9+2DtPV=C=21@fF z8WaY|W`WW!)D1+3E69A1Suh%8CM;Y*VF8kZ(I7v=!frT)D=58!(j6$hf@n|}z`_;e zPf!@3hbu@OD9m6qC{2L$fx-?X2GWO2gXBPEJxC0cUXf`~xWe?o_Bb=>4n(~>QjQ$Ba6Ytgs_Q$+QBfrFm)h1xUMVPz%a-TP&xvs1F@&EL;TGK^%u+x zkQ~Si5DhZJ*tpmphCyPWv;Z>$rVd2I-3uKP1BrpugWTH$6$8Z$sJ&|k9$pk+003>zoNem6ddIUpLO9$D`)DO9~o5DP$hwZWEyG{Fo3 WX%=K)V0U5=U;rsZ$W6Y%vI+o|SQ^Oy delta 203 zcmZqTZsMNcBv7SM`0$tZ>=zQ>c)k_Qwz{z~=nivz5rY5&3j+fKn}7fVBLf42Tay9< z3|KHQaDe1l85kJCL{a5IY8e<9*g^6j{ccPUb3immJ+j_qQmA^FAQpi1YJ)8YX@VI7 W(k#Hh!0yB#zyMN+kehsiWfcHv+OkNzK+jZ1 z!9dSgN5N3fKy&j9Jtk(OlGF<4{G9wE1zUyE_>$D(5-?A%LcvbKK+jOY9#yomO2KM! zgORk8UPWbrDoq6~1p_?;Lj`Sxl+2Qh)FK5f1vDj-XB#ytZJ)Xj*fn=ft}eC8mSL6l^Ek8A-ERbJcP&008laFwg)1 diff --git a/src/game/compiled-shaders/glsl/vert.bin b/src/game/compiled-shaders/glsl/vert.bin index 53d0194a24816f332b83a5bea5936b81a0584755..64b1441f4bfe5521643c6e7e65cd2734133ce1b6 100644 GIT binary patch delta 28 jcmbOcJSmtzEZBpafq{X+PyA0l14I2r{$$O`6`BeFaP3@NE(QQWD-odp diff --git a/src/game/compiled-shaders/spirv/frag.bin b/src/game/compiled-shaders/spirv/frag.bin index ef58272a9e29a100a31c2f63ec3daa222e21f5e7..77f42cf80937b273b353c8ae4ed51adae888bd20 100644 GIT binary patch literal 4362 zcmZ<@_Tcst|C7(az`(%Fz*ZVxl9`(-#K^$F2oho7E{!iqEiQ4+&&e+mVibUiauvsy zq*j0h4H%d}3YnA`b_g&qFf%E$Gq5o-a5Hc)q%nge7#IW@n84b&8Q8$IyHBu>UU5l^ zo{6aeNCh7QL?OsReg#U|?9q$iT3Uk%8e5BLjl~ z12b41JJ{vS46FV_;=q2D=-i zmX(1O?EbR&y!@iv#2kni3)nwp@ug*;z+h!y1N$v0J*^_%ttc_wC9x#YfPulCfd%Xb zMFs{2AqE6r31kSA4+Op*jJTutMAUO{t_bWs7!^A-D2Z;$l%>;!x$V`wp z$V?C)VI~XMKXMF^!~&8B#SMrLvIoQm#S@4RvPPJJ37l3G8JNK_4pJkK*n%)9oIWxzfa4LAH$dS8;)Bu!C>}uapP}*~Kf>%~Wn^HOHFGB19yUgZ zUqIrZaFAeNVGv_v0Q(bU4osgZD6knC;QlFPWMDXZ=8UZf0~13TBPc#t7%CVc?g6gRI)lYk5;Fq>$X_4~6HA7Qf#MG)mck4P2aq~OXdXyqW?(R5 zU&NGe-4B#>W#0TXU7ic*N;)DFQnh{c7g7_f6tcRAJ zQy4%cA_GGk69cHIW&o+U;w2@keWVd`r~I}U;vxJz`$@Gn*Rit z7#Kj}Fg3zRYA!(4h%hlQfW!kBSix~D%f!F{(gzX`gt|omDhBc^OiU3f1`2nWm=Y5M z14tjTI%TLBNL>H}J2+lcm>3v9W`fKB=>e&M`CFZdfdM2B!aNLYV1H{u{S7MXK<;aW zx=V+NfdQl*gkfTOObiU5bP3V}6Ek39U;v4O#G0Xc4Vf4iK>9&)u<$j4+5-z;kQ$g9 zOrUb|3=9k)bue?Rpl$%kgTfFLm)1-S44`xZk^{K`BxcLRzyJ~ll@lN{L1K1DW`g8l z;po7`zyOo$fV$V2iGcxBUV!94W`gps8xsQqNF0gX!6Wqz5FAu4f-q52*fu>DiB@2P6;E1Cu`pmDhvTYoN3Tax2X3 zhnW}{Kx#l~50-A9GBGfK;s!bYKSvUS>3zY(zyMMUl7s1e1yu(sCtzZ4ki=km-!d^U zfYgHIKyeQWlXpxE3?MT>a1760K+FsbAURl=urM<)fXoER!NP=%8B%|M!UQA_3lk1z1_qEE z$o;S|;eytOAURl=a6|Qj!UQA_3lmrwa~2wApfUy&ejxQQH(r2-7bva5#4a&0Fo497 z!%L8vfdQ1yki$zDNere}gqeW>q!uIx3okLKI#Afa#3Yc!V0tB)85lrnL2|J0l453H z0GSDrgN2t2)W4wc0?EU|OOBa=0VD@R(WJf#hM~Wx~wB0Fnc_9~NF_(C`Au!NSWN zsvi_yAbIrgx{DNEps)j}ho!yyP&riw1_qEiQ2FS{z{UV-@5V4e`lq1&0H~c0YIA|g zjaViI29Vq?23Bx;HI9ja0VD=$$2u~wg4?d~NP0o~K<&x|CI$wOxIY62xLuye#J~U& z17T1+fWi~hP7Y&W1@}Abm>C#A?LSbPFr0xE+y-)BW?%q`gW7B`b5fZY7(n76jBL(I zX!}2niGcy+Mv#3VwXimmD>DNFNDkCL2!N{fVrF0fiNi3c-UYQgGnp6|KysiqI7}>u z38EhqhA^>QCI$wOIH+w7igS?OJSGMPkbaOHEDcpLF))C{LGFc#RYS!<;Q$k>fr^2` m1=bF%Wny3e=?AF?$%Ep|j)586#|Fv$Wng5m0FO#2FaQAI!*+xK delta 494 zcmeBDn#VT5OYjU60|PUYGCKnsBLg=B2Seh-Xj6Gk1{MYeFwRZP%wu3+U~pt$U~pkz zVA#RPz;I^bcKv#gKyiFYYK3!tPJU5vVs1fBY7qki11keNSRq0#B( zEWWhN0L*7&IK#-mkd&TQ5${%%nC_BTl4!ud;LgATwos9QfkB7?!B+yg1j080TLMzR z1Q7u9kraR}l4D?CfXSbk9M4oKGUpniv=uS{WD^ zm>HNESQ!`?zA!Q{urjcKT?I3Pm4S@`WLaolW?Ftxu2W8aayH0pHU?I(IEW4P5Caz`)AD1@@OiYF*D~~%>s@aMW{I-w}IkH35gF%M{-DfP+WodAag+KLGc9QgWM0|gVGv^ z4@#jRJ}BLRvj^C(EZ}$m$%Bjp$%Dci#D|#&N}C`)%sfy!1@S@V2{SM;fW#HSDVG7v z7Gq!rhou4o1A{mN3j@f%ps)pn1BlNF4Qr5o5Fg|gkUYp7Q3e(UaRvqkkY14e+EBg( z0|Pj3f%qV`k|4)2G}wdqAoXfsJ_CaU0}F!=0|VGjkbNNYbfM;flz`NO_zDh3JznAkk17$}|s7}&vSVm<>zKS(`D9+Zw88CV%Wakzki0i5?hX$@pI zC_Wc5Fff3`Cor&r^)F&zU;vo`5{KEd5^4{!dsackklnKyDu(QyH4F?4ApIcqAbE&; z*ud^t3v~}DZG$k(P3ssK7(j9`H?3!2U;vo|68C4|0H?hT3=9k)aS#T%3*-)vy^ahJ zvp3@~dkX^t14s_!H&A-r%D}(?5(Ak5GkY5Y0|Q7LghApkvtfF+L-l~fVS08jFff3` zK^U8!olrd>H^TJnVqjnZiGwgUJ-eZLKxqu7XAc7d14tZ%k@bM$ACxcmGB7ZJ+z)aO z$b67`SUB!uU|;~HMUWaEa1F}9upgS&Tp1V`K=L3zg36x*3=lbx9Wb$jP%)6dVPc1% zVjzD7FtCB+<}d>T14uteJxJb;ff-z9g3=a<4a%FKJOW~a@*zk)hz-hfpu7NLgYp|F Xj{h<+GFX60Mix-MV`LCuaNqy{dDP@x literal 2162 zcmWFw_TXkA8fWiiw8koyi892aUhfPgs8OS}H;BdtzUtW-34Dy>h0}F#b z0|Nsa0|SEt0|SFQ12Z`6m>3usJQ!HOY>+xoe0m^-H9G?Xg8*0!BK(y>3c+F!eW371 z)(7IF>jQ~_^>KjgW&y{IBGep^+dy%pgv1A>BRM2KD6T+!kU1drpm+lDLGB0fL1_)d z2c=LDAC&IE*#qoX7H~X(AV0=)y1LA|sD~GCw*$?7_(f~}p8Y&O755xzh36MOSz+0|Q7LghB2CxdUXcBLl?j zwK&XP$H2eJXa6JWzPY@fFA3*66#0I5(ka`dsl+Hov55xwgaZtGaWng5m R0F_28ptR1&Ai&_j0RUAP(un{7 diff --git a/src/game/rendering/Rendering.cpp b/src/game/rendering/Rendering.cpp index b7b7776..2e0ab6b 100644 --- a/src/game/rendering/Rendering.cpp +++ b/src/game/rendering/Rendering.cpp @@ -37,7 +37,8 @@ namespace Game long fileSize = ftell(file); fseek(file, 0, SEEK_SET); - const bgfx::Memory* mem = bgfx::alloc(fileSize + 1); + void* rawMem = AllocateScratch(fileSize + 1); + const bgfx::Memory* mem = bgfx::makeRef(rawMem, fileSize + 1); fread(mem->data, 1, fileSize, file); if (appendZero) { @@ -126,7 +127,9 @@ namespace Game *_orientation = imageContainer.m_orientation; } - const bgfx::Memory* mem = bgfx::makeRef(imageContainer.m_data, imageContainer.m_size); + const bgfx::Memory* mem = + bgfx::makeRef(data->data + imageContainer.m_offset, data->size - imageContainer.m_offset); + // const bgfx::Memory* mem = bgfx::makeRef(imageContainer.m_data, imageContainer.m_size); if (NULL != _info) { diff --git a/src/game/shaders/frag.sc b/src/game/shaders/frag.sc index 0526edf..341b596 100644 --- a/src/game/shaders/frag.sc +++ b/src/game/shaders/frag.sc @@ -24,6 +24,11 @@ float calcBrightness(vec3 lightPos, vec3 vertPos, vec3 normal) return diffuse * clamp(1.0 - distance(lightPos, vertPos) * 0.01, 0.0, 1.0); } +float calcBrightnessDirectional(vec3 sunDir, vec3 normal) +{ + return max(0.0, dot(sunDir, normal)); +} + float circles(vec2 uv, float level, float subLevel, float brightness) { vec2 offsetUv = uv + 0.5; @@ -57,7 +62,9 @@ void main() float testSpeed = 1.0; vec3 testOffset = vec3(0.0, 0.0, 50.0); float3 lightPos = vec3(sin(u_time.x * testSpeed) * testRadius, 5.0, cos(u_time.x * testSpeed) * testRadius); - float brightness = calcBrightness(lightPos, v_wpos, v_normal); + // float brightness = calcBrightness(lightPos, v_wpos, v_normal); + float brightness = calcBrightnessDirectional(vec3(0.5, 0.3, 1.0), v_normal); + // brightness = 1.0; // brightness = 0.1 + brightness * 0.9; float baseScale = 2.0; @@ -80,12 +87,15 @@ void main() vec2 uv = v_uv0 * exp2(patternScaleLevel); float dither = circles(uv, patternScaleLevel, patternFractional, brightness); - vec3 color = desaturate(u_testColor.xyz) * 0.01 + dither * u_testColor.xyz * 0.95; + vec3 texColor = u_testColor.x > 0.1 ? u_testColor.xyz : texture2D(s_texColor, v_uv0).xyz; + vec3 color = desaturate(texColor) * 0.01 + dither * texColor * 0.95; vec3 smoothColor = brightness * u_testColor.xyz; vec3 mixedColor = 0.1 * smoothColor + 0.9 * color; - gl_FragColor = vec4(mixedColor, 1.0); + // gl_FragColor = vec4(mixedColor, 1.0); + gl_FragColor = vec4(color, 1.0); // gl_FragColor = brightness; // gl_FragColor = dither; // gl_FragColor = u_testColor; - gl_FragColor = texture2D(s_texColor, v_uv0); + // gl_FragColor = texture2D(s_texColor, v_uv0); + // gl_FragColor = vec4(v_normal, 1.0); } diff --git a/src/game/shaders/vert.sc b/src/game/shaders/vert.sc index acb1f28..f831c3c 100644 --- a/src/game/shaders/vert.sc +++ b/src/game/shaders/vert.sc @@ -9,6 +9,5 @@ void main() v_color0 = a_color0; v_uv0 = a_texcoord0; v_wpos = mul(u_model[0], vec4(a_position, 1.0)).xyz; - - v_normal = normalize(mul(mat3(u_model[0]), a_normal)); + v_normal = normalize(mul(u_model[0], a_normal)); } diff --git a/tools/remedy-session.rdbg b/tools/remedy-session.rdbg index a9aaa044d6476120c3cc6d397130fa9b1d6eecf9..f3d051b4daadf72e4e533a31010f1cdb207d2bb0 100644 GIT binary patch delta 166 zcmbQje28^|7Yi2y1H;4vRud0s@l?bV7bVA(WE7<)rcB&p#Ts9rmmxjTU!2`1wJbG9 zFJq#g1Q&#vTu@*!@t~$KL`Pa?PHI77Nrql>L4m@=0!g;;%)FHR@`=616Z4fO`YB2> zFfcGMGB7akGB7ZtB$g!V+JQ(NW24DTjJA{c8963TU}TxB!zeL1o{^K0ak3(#3QQCL Do