From bf2371eca08efd89c3f0e4d67c892d1527347fe9 Mon Sep 17 00:00:00 2001 From: Asuro Date: Tue, 11 Feb 2025 20:58:50 +0100 Subject: [PATCH] it works?? --- src/game/Level.cpp | 4 +-- src/game/compiled-shaders/dx11/frag.bin | Bin 4498 -> 5319 bytes src/game/compiled-shaders/dx11/vert.bin | Bin 774 -> 1072 bytes src/game/compiled-shaders/glsl/frag.bin | Bin 11926 -> 12449 bytes src/game/compiled-shaders/glsl/vert.bin | Bin 10463 -> 10541 bytes src/game/compiled-shaders/spirv/frag.bin | Bin 3002 -> 3891 bytes src/game/compiled-shaders/spirv/vert.bin | Bin 1266 -> 1724 bytes src/game/rendering/Rendering.cpp | 7 +++-- src/game/rendering/Rendering.h | 2 ++ src/game/shaders/frag.sc | 34 +++++++++++++++-------- src/game/shaders/varying.def.sc | 1 + src/game/shaders/vert.sc | 3 +- 12 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/game/Level.cpp b/src/game/Level.cpp index c89670b..1b3ace4 100644 --- a/src/game/Level.cpp +++ b/src/game/Level.cpp @@ -3,7 +3,6 @@ #include "Global.h" #include "Instance.h" #include -#include namespace { @@ -65,7 +64,8 @@ namespace Game double time = TestY <= 5 ? globalTime * 1.0f : 0.0f; if (TestX == 4 && TestY == 4) { - bx::mtxTranslate(Transform.M, 0, 0, bx::lerp(-20.0f, -32.0f, bx::sin(globalTime* 0.5f) * 0.5 + 0.5)); + // bx::mtxTranslate(Transform.M, 0, 0, bx::lerp(-20.0f, -32.0f, bx::sin(globalTime* 0.5f) * 0.5 + 0.5)); + // bx::mtxTranslate(Transform.M, 0, 0, bx::lerp(0.0f, -32.0f, bx::sin(globalTime* 0.5f) * 0.5 + 0.5)); } else { diff --git a/src/game/compiled-shaders/dx11/frag.bin b/src/game/compiled-shaders/dx11/frag.bin index f72be6a2bb22c13a14468c6f16df2f5169ddc153..07ddd9b1ef49e45283ac9648781052f25b0f1321 100644 GIT binary patch literal 5319 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 delta 273 zcmdnM(Z&`U7VN>zz`($;aJmO0BLjbFd~SY9YED>YYI#6WeijP@0|N*%FkE0_U~q|W za`ySY^2qdzIH}8Jze6(n+j1EhAacwM3=BF93=DG^7#IX5rk4lhFfcHH1UVQO7y>{x zFfcHH6obS-Tz&=yh8Pe7ib3Kad60M#R18Fc#F;>5@l5t$RF+``na0SF$H2gl)xp3R z$-uzk)~5hc$iOnWozb5)gMopGdGd2cc}9lG>`d}3ATuYgW0INd#w5c6G6>9RViK7= Wk6CQ;8YZ{NmzZ@X3$e&DG5`R*sVsp2 diff --git a/src/game/compiled-shaders/glsl/frag.bin b/src/game/compiled-shaders/glsl/frag.bin index 2fcde08fdded377795981f159fd82b9a018e63c0..9d01cab83a5444b1dcc1c2aeac523c4b285218f2 100644 GIT binary patch delta 610 zcmbOhyD(9}E!cy*E8)}^1~BL|*eI})NjsAr&{tB{geT#}fVoT`DW3!*_mOTj?Tz;N(+#6N4Q(T zRv{TR(2xwN*M^uYiDi-}OIsRNBnO=~U`*BIy- zDQH7OksB0?;BdFF-n>Qo5TlBTo`HhCLUBQ2a%Nt-H5Zhjpk)iy0n#vevhH6Y9V7uw JYpz-@1^}{`%%&J`GB?_qvqrT+Om@+ qbp)ZTP#wX^#X1I?H|y?ZWHg+duP@1LsAn*FlKx*dO>3@NE(QR379AS^ diff --git a/src/game/compiled-shaders/glsl/vert.bin b/src/game/compiled-shaders/glsl/vert.bin index c51b68558902df34a3a00d40bd763b08134e872b..72079f3c8079cc0d8ae3b91caf3c1436aa4ac44d 100644 GIT binary patch delta 110 zcmcZ~xHd>2EZBpafq{XcE8)}^1_mk3jRJd_gc6G?GxO3F%2Jb!70Tkv3-XIMpJEbH zvw^S`Y!x&VG)m)h^HWlDq77m-6|@vI%2Ja}G!o+r@{2P|GV}9v6b$tYG&L18^(rc> Jths8r7y!G1B0>NF delta 34 qcmZ1*bU#oaEZBpafq{Wx;dBp128J^l8wK_H>s!gql2-53}c&Yn4AC&IwQ;Etru z6QT~T&kM|Nu!rdjWnf_7x~^;k%wS+(0EvMxOicq=jRV~7J}|$* z4ko`B%=d88VPInb`RxD$0|Uq%APka|gT@gkTof2s7>+PN!VQ#8tf72RIsk5Y-u}e&l_yDP6gr>90ObiTW46NX^2TEfguYt_| z!N3I0m$nQnVE=_MLh>+(4{~b+G(S5suz|yH1|tJFZ-BxUl-@w;k1HkbENpD>$7kXJlXir8ST|4+A^ct*lItk`a_&K=L3z!^~!5 zVqgHtgYrN#)DP^?FbB!;FmQm);DDN;&A`9_k_Xuf3V)b6s~H&>Kx#l~4CEG2n5|)C zU;w2-kX#=$FRf=}U;xDdDD9nx#>oao1_qEgOwDE_H5Z_2wlFd0i%7)V_J13NgK9sz|VBLf4-43Hj> znki7bjx#bafaF0K7Jnz9@dqkbLGFWv%^5}p29SCXhKZeHWMBa0FOVLX*ab!g29P*N z3>Fs`85tNr`ayEA_`C$QM*~`>fYiX;a0MzS&%nR{QU^2V7Ss(Oc~BUF((P?V1_n^R z0m*^f01~^)$iM&+2bFmsGeKhakjw3I#61C^N|b$JXd44`uG4I={sNG_j& z1)NsjGcquM#9)5^z{tP=QV$Y`srd|512Y>`Z-e4qmVto*BnL~2U!iFcBo9j0pzx4q zVqgG?gTkm6ny!_Y7#Kj}pfU_(FG!sV69WTC9Hb7WR}HEcqzD6Ll zU;v3D>(znk1(k^~y?RUx3?Ol2y#`DS3?Ol2y+%;Ipt2LD*My0I0VIyB*NlmQ0VEF6 z3yVJsCI$vj7=r3NSb1QDR33ojVdVkH{h;`@VPaqai9_NKQij+f=>f^3>#>LG0hLoQ zdmNDTfaGC%VDe5-c|B+y4XTGhZiTtsg^7Uyqz07sVCgoEiGcwWH^})v14#^~HBdFtJ=DF__*wCI$wOT96zl?m=Oa&&0q0G7}^ROLv7(_k;2)NFJ7t zikTP~Kyo1W!^|vUVqgG?gX+Q^46NWbP8kye14tay_E`z7o64CO7(n8num^<~Our`+ z0|O|0Kye2X^JZdT0Er`qPc0Jz11S9=hfh6{7));i69WTCEl3U)7EMrf$l=q1BnH#l z%EZ6`QVWuUg-;t30|UrRkQ^+0I*`H#Bo7OpE+z&BkQ~VUFf+TE7#Kj}$l=q=#J~U& zM-HDpCI$wOI4pc%Wse`!E>PJ63PX@OnAw5Qumh!Gm{>3q0|Q7LIqaq|F))DgA9C1D zLlT4OozBF-08$H*gN5Bps5<1Zn~fv}(>sTWfdQlzBnJz-xl9ZUATvR7u&|pC^$#d* zf#hLfw~&c}0VD@Bz{p?$?#&7?003NrWqSYs literal 3002 zcmZ<@_TXMP-Gh+<43=;+FfcPIvoo+UGH^3+FeEU6g&71Hm>57xxEa{Mw7XBRk6v*} zik^w70Z0WO12c#M%keX?Gq5l)fN^eOW*$gFkdc8wj*)>ufPon-&d$KVz|6qRz{*#g~?WEMR3|1M5#pPpgP`D@sgvNi0b;U|?`(U||5MlVe~2 z+YRD_>;dsX_6jpFF@U_F2)2y@%obx{W?*ArU{GLSU=U|uVc=k30P{g^2Jv~Je2_kE z1{ScK7056K1_v15mVtrc?3pumA`DCnb_@&*FmVTnIym1E%x|!V$$NwO4E8zjnF+ZxITg&#~_mJt*$4B#*U$%FWy@C3y!%*`=O3=ANDfiO%g7Agkv z2TUxE3F0@9I!0)i$1^c7m@%+|;{g=jAg6-N{=vWmP7AgSEMWf#F*1PTwGSFjzKjeE zATf~N&qLMtF)}cK#9?Xzkgj0i+Ks&HzeP3=DBlF_2pV zp%5ooG3CdFo4|G3RRoM$iM(n55h3997YBPQ2c`Qz{K(x85ls~AhBks-h4&|29SP` z91jCK*q#EYJsJ!Q44`xhQUh~C5mZi|fq?;}4rWdT)D0kcP#A*JO(i1(11KIrav(Q= z#Htw?7(n8n^b9f+BvylDCP*F@j&+O-3^2J4sCyehVhjunAUTkJHUKe(qspU;v51{MpOMzyMMY5{Ido z096Asdm_|qSq26MkQ^-CO@gL7kbEOFy>4b?U;v4O!lM@|wvCa20VEE}KOlQSVYGvh zfdM2AQU}w!3#u2S4yJbxBLf3S93%$QyN{890VIyB_W)EcC_lpV9%5u*0Er{(J;KPq z01`*mdkm@KR0EvV2g5n<(S7#U*7(ihND!X_XIKb)c95lSN z85kHq@}M*aiYt)&L3%DQLc~F0Fg+KM^nm2i^<0MP0hPxvJy($QfaGC%VDi_X@_Nv+ z7F3>s+zLyNpBNb!K=FW_uR(PZObq77uZ#=~AhjSlnBMPDy`cOL6Z?rI2GjeCk%0lE z793v9 zYC&=^y?ju0$YCLXBnHzf$i%<^QVWuUg@q6k0|UrRkQ^*5M3^9T6(}q~^02TFV`5+c z$${JtGgF+2fdM3r92SyH3=AM~eqrrd*uJE%+ng%?O2%3v9;>h7-z{J1+5=RavLna0WkT`lcJwXa5 zP?&+#!OVUR4JS~3g!$E+iGcxBULc2)C6X9SuN4ym14u1M4yM-zst!4v?2yD@dhMAQ z7(i-4aZ z){U|;~L1L=je9cC~xFo5Kdu^j_5xa|v)`^&({ LU;%FFGB5xDlRxgg diff --git a/src/game/compiled-shaders/spirv/vert.bin b/src/game/compiled-shaders/spirv/vert.bin index 1d5348c0ecbc9848de1ef3db982a53b2b5430219..38113030dcd653a2331f6d4ff1a64c422f1bbe47 100644 GIT binary patch literal 1724 zcmWFw_TXkHNESQ!`? zzA!Q{urjcKT?5n0%D~2;!@$50nwOcDUzF>Vlb@UoGLwyg6)X;7Lp{R4#=s611GyC{ z2JZ{tPHGR_aw$A=jY@Xf&Bmy1Gz6Tz97Fivm`S=59AhBuzM5ZOHwP6 z^Ye>R3>a7$xWMjrNX;uLstm}_%q#IPEh#81(M!*X4}fcBU}fM0`w>%J8QfM@1`co- zU{h0C2C|D296s3O%M0?0L4I*(U}4Z^U|?WlU|?_nhch!c444=g7(5tQz-*8@P<(hG zg&8{o1A_oq4I&(sK?=cQ5PhI-#)?pLKyCwtxe^i|ln&&O z_@FQc@j>Q*)PvFoh!1ipO{jSwEgeTXnca=8ziQ{z`~%*0Pz3V#s}qn5Fcb; z0#rTBJP;ogr!e^xs65O)AU-ILLGoq{tl&5Wg(WEbKw>`_n80O;Ei`UD!0Cp80mKKH z;R7v)Kzxv$0njojkO5TEFfddzFff4BfXsu5)j-8SeuRnDLd8Jg9KgU1j?+2@h<=cI zkUS_II5My@fa0K@fdQO1KxqYJHz+&! zft!JYp$II>z#z!L#K6eFz`)JG2BzJ8f_?OgOH%YqObtLv_!yW$6j+X*fd|Y6nV6fH znFr!%FfcHfGcYh%GcYjNGcYiCF)%RrGB7X%GB7YOGcYr-GB7ZFVPs%nWnclj1g4Lb zfsH|pfq@}3FEcH_DAy?`KRFv@9vcHYSRBMg^9%zk12Y52K9C$M11s3x#Q5a=octoN zTR~zVcO=Fa}3VJD>1$#wIVq`zbM6kft7&^>`sT&ypp2Ifc(t7693YY zg3=Pb^qlwrxK;*M22QYFFx8d8ZDnQP0Q(i2n$j`@26qN#uz#2s7#KVlSio$M`$1vo z!N3aVvokO-2!Pcf#FRk_85kJc8CbynRz%|~A@MUg#(BWid&F=P~3p{Aa{WH zpm+i&9H{xAI0MOpi~z}l;t#|J=@({TVgTt=1ji@?m@US@%)rLLz@Wguz#z`R!T@qV zh!64?h|kHu0G0=(9uOa77f2ptjwk~QgBVmV$b4-E7O+|gkmU>w_8>k;ULMS6V31&7 zVNhjY0NVjFUk)0kATb3776x?&h?_v^$r{QBr4x`{AbCxwJWRbA0|PicgWL>K58{Ku z59Ah*dMl_r$PXZS5FZqtFnK$uJjhQVc@Q5IzA$-DaN38s7bFkjgTfmW7BD_2yg_`B zeF0GQF!MlsQ22x7%@|n0;SKUPC^$f3KNy(6`N|d=?iSEI2;zg>Yy-`YAU?=U2WZ|5 zWB}zl1_n?@1E~R-2NTO-U|;}=f&2gy%Y}-8!ZCn>9UT6kOb^lzQV)^`#hD`mD+4Hu z^BEYx=@b-iAiF`~UBJM=01}_TzzWu1$iTn=G6N)T$G{BEhafQ!8x$rWzkt{v|AXB9 Umw}PN0u)=!tPG3{0t^le0MSZtjQ{`u diff --git a/src/game/rendering/Rendering.cpp b/src/game/rendering/Rendering.cpp index 2987aec..e7aa717 100644 --- a/src/game/rendering/Rendering.cpp +++ b/src/game/rendering/Rendering.cpp @@ -126,6 +126,7 @@ namespace Game | BGFX_STATE_DEPTH_TEST_LESS | BGFX_STATE_CULL_CCW | BGFX_STATE_MSAA; + Materials[0].Uniforms[Material::UniformTimeIdx] = bgfx::createUniform("u_time", bgfx::UniformType::Vec4); if (!GetInstance().IsInitialized) { @@ -179,9 +180,8 @@ namespace Game bgfx::setViewRect(0, 0, 0, shared.Window.WindowWidth, shared.Window.WindowHeight); } - // This dummy draw call is here to make sure that view 0 is cleared - // if no other draw calls are submitted to view 0. - bgfx::touch(0); + float TimeValues[4]{0.0f}; + TimeValues[0] = GetInstance().Now; for (int32_t i = 0; i < GetInstance().GameLevel.Cubes.Count; ++i) { @@ -195,6 +195,7 @@ namespace Game bgfx::setVertexBuffer(0, currentModel.VertexBuffer); bgfx::setIndexBuffer(currentModel.IndexBuffer); bgfx::setState(currentMaterial.State); + bgfx::setUniform(Materials[0].Uniforms[Material::UniformTimeIdx], TimeValues); // Submit primitive for rendering to view 0. bgfx::submit(0, currentMaterial.Shader); diff --git a/src/game/rendering/Rendering.h b/src/game/rendering/Rendering.h index 85c013c..c159b31 100644 --- a/src/game/rendering/Rendering.h +++ b/src/game/rendering/Rendering.h @@ -88,7 +88,9 @@ namespace Game struct Material { + static constexpr uint32_t UniformTimeIdx = 0; bgfx::ProgramHandle Shader; + bgfx::UniformHandle Uniforms[8]; uint64_t State = 0; }; diff --git a/src/game/shaders/frag.sc b/src/game/shaders/frag.sc index f33b6ff..23cd5fb 100644 --- a/src/game/shaders/frag.sc +++ b/src/game/shaders/frag.sc @@ -1,5 +1,8 @@ $input v_color0 $input v_uv0 +$input v_wpos + +uniform vec4 u_time; #include "common.sh" @@ -13,7 +16,12 @@ float circle(vec2 uv, float radius) return clamp(1.0 - result, 0.0, 1.0); } -float circles(vec2 uv, float level, float subLevel) +float calcBrightness(vec3 lightPos, vec3 vertPos) +{ + return clamp(1.0 - distance(lightPos, vertPos) * 0.01, 0.0, 1.0); +} + +float circles(vec2 uv, float level, float subLevel, float brightness) { vec2 offsetUv = uv + 0.5; vec2 baseUv = (offsetUv % 1.0) - 0.5; @@ -27,20 +35,22 @@ float circles(vec2 uv, float level, float subLevel) float step3 = clamp(step - 2, 0.0, 1.0); float sum = 0.0; - // sum += circle(baseUv, lerp(0.5, 0.25, subLevel)); - // sum += circle(step1Uv, 0.25 * step1); - // sum += circle(step2Uv, 0.25 * step2); - // sum += circle(step3Uv, 0.25 * step3); - sum = circle(baseUv, lerp(0.5, 0.25, subLevel)); - sum = max(sum, circle(step1Uv, 0.25 * step1)); - sum = max(sum, circle(step2Uv, 0.25 * step2)); - sum = max(sum, circle(step3Uv, 0.25 * step3)); + sum = circle(baseUv, lerp(0.5, 0.25, subLevel) * brightness); + sum = max(sum, circle(step1Uv, 0.25 * step1 * brightness)); + sum = max(sum, circle(step2Uv, 0.25 * step2 * brightness)); + sum = max(sum, circle(step3Uv, 0.25 * step3 * brightness)); return min(sum, 1.0); } void main() { + float testRadius = 50.0; + float testSpeed = 1.0; + vec3 testOffset = vec3(0.0, 0.0, 50.0); + float brightness = calcBrightness(testOffset + vec3(sin(u_time.x * testSpeed) * testRadius, 0.0, cos(u_time.x * testSpeed) * testRadius), v_wpos); + brightness = 0.2 + brightness * 0.8; + float baseScale = 10.0; float2 dx = ddx(v_uv0 * baseScale); float2 dy = ddy(v_uv0 * baseScale); @@ -53,12 +63,12 @@ void main() float2 freq = sqrt(float2(qq + discriminant, qq - discriminant) / 2.0); float spacing = freq.y * exp2(2.0); - spacing = 1.0 / spacing; - spacing *= 1.0; // TODO: check reference to see how to calculate this! + spacing = 4.0 / spacing; + spacing *= brightness; // TODO: check reference to see how to calculate this! float spacingLog = max(log2(spacing), 1.0); int patternScaleLevel = floor(spacingLog); float patternFractional = spacingLog - patternScaleLevel; vec2 uv = v_uv0 * exp2(patternScaleLevel); - gl_FragColor = circles(uv, patternScaleLevel, patternFractional); + gl_FragColor = circles(uv, patternScaleLevel, patternFractional, brightness); } diff --git a/src/game/shaders/varying.def.sc b/src/game/shaders/varying.def.sc index a925eb7..2cd00a9 100644 --- a/src/game/shaders/varying.def.sc +++ b/src/game/shaders/varying.def.sc @@ -1,5 +1,6 @@ vec4 v_color0 : COLOR0 = vec4(1.0, 1.0, 0.0, 1.0); vec2 v_uv0 : TEXCOORD0 = vec2(0.0, 0.0); +vec3 v_wpos : TEXCOORD1 = vec3(0.0, 0.0, 0.0); vec3 a_position : POSITION; vec4 a_color0 : COLOR0; diff --git a/src/game/shaders/vert.sc b/src/game/shaders/vert.sc index 2def252..0a95563 100644 --- a/src/game/shaders/vert.sc +++ b/src/game/shaders/vert.sc @@ -1,5 +1,5 @@ $input a_position, a_color0, a_texcoord0 -$output v_color0, v_uv0 +$output v_color0, v_uv0, v_wpos #include "common.sh" @@ -8,4 +8,5 @@ void main() gl_Position = mul(u_modelViewProj, vec4(a_position, 1.0)); v_color0 = a_color0; v_uv0 = a_texcoord0; + v_wpos = mul(u_model[0], vec4(a_position, 1.0)).xyz; }