From eb01ec48775db639df91f885b488d2294fd037a5 Mon Sep 17 00:00:00 2001 From: Halbear Date: Sat, 20 Jun 2026 02:13:47 +0100 Subject: [PATCH] Better lighting --- .../shaders/lighting_frag.glsl | 2 +- .../shaders/lighting_frag.glsl.spv | Bin 20300 -> 13880 bytes .../multi-sampled_post_process_frag.glsl | 2 +- .../multi-sampled_post_process_frag.glsl.spv | Bin 3704 -> 3704 bytes .../shaders/post_process_frag.glsl | 2 +- .../shaders/post_process_frag.glsl.spv | Bin 6248 -> 6248 bytes .../shaders/scene_fragment.glsl | 2 +- .../shaders/scene_fragment.glsl.spv | Bin 4884 -> 3424 bytes .../shaders/scene_fragment_deferred.glsl | 2 +- .../shaders/scene_fragment_deferred.glsl.spv | Bin 9000 -> 6024 bytes .../shaders/scene_opaque_fragment.glsl | 2 +- .../shaders/scene_opaque_fragment.glsl.spv | Bin 4880 -> 3424 bytes .../scene_opaque_fragment_deferred.glsl | 2 +- .../scene_opaque_fragment_deferred.glsl.spv | Bin 8936 -> 6040 bytes .../shaders/scene_translucent_fragment.glsl | 2 +- .../scene_translucent_fragment.glsl.spv | Bin 3592 -> 3592 bytes .../scene_translucent_fragment_deferred.glsl | 2 +- ...ene_translucent_fragment_deferred.glsl.spv | Bin 9244 -> 6280 bytes .../shaders/scene_vertex.glsl.spv | Bin 3144 -> 3104 bytes .../Terrain4J/EngineCore/Main/GameCore.java | 70 ++++++++++++++---- .../EngineCore/Main/Scene/Scene.java | 2 +- .../EngineCore/Vulkan/GUI/GuiRenderer.java | 5 +- .../Pipeline/Images/TextureCache.java | 2 +- .../DisplayToScreen/DeferredSceneRender.java | 6 +- .../DisplayToScreen/ForwardSceneRender.java | 6 +- terrain4j.properties | 2 +- 26 files changed, 73 insertions(+), 38 deletions(-) diff --git a/resources/EngineResources/shaders/lighting_frag.glsl b/resources/EngineResources/shaders/lighting_frag.glsl index b63ee67..5cefbad 100644 --- a/resources/EngineResources/shaders/lighting_frag.glsl +++ b/resources/EngineResources/shaders/lighting_frag.glsl @@ -5,7 +5,7 @@ // also Vulkan Book https://github.com/lwjglgamedev/vulkanbook/blob/master/bookcontents/chapter-15/chapter-15.md -const int MAX_LIGHTS = 10; +const int MAX_LIGHTS = 1000; const float PI = 3.14159265359; struct Light { diff --git a/resources/EngineResources/shaders/lighting_frag.glsl.spv b/resources/EngineResources/shaders/lighting_frag.glsl.spv index 59bdba3d5cc7100316633fbe4146aad029d52ae7..075c77b853a7bdc41bfb50e77e4608864bab51a2 100644 GIT binary patch literal 13880 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 literal 20300 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 diff --git a/resources/EngineResources/shaders/multi-sampled_post_process_frag.glsl b/resources/EngineResources/shaders/multi-sampled_post_process_frag.glsl index 0dd511b..e05f91c 100644 --- a/resources/EngineResources/shaders/multi-sampled_post_process_frag.glsl +++ b/resources/EngineResources/shaders/multi-sampled_post_process_frag.glsl @@ -2,7 +2,7 @@ layout(constant_id = 0) const int USE_AA = 0; -const float GAMMA_CONST = 0.4545; +const float GAMMA_CONST = 0.8545; const float SPAN_MAX = 8.0; const float REDUCE_MIN = 1.0/128.0; const float REDUCE_MUL = 1.0/32.0; diff --git a/resources/EngineResources/shaders/multi-sampled_post_process_frag.glsl.spv b/resources/EngineResources/shaders/multi-sampled_post_process_frag.glsl.spv index 2cf3d79a272ff9ca6409715b5f6f718e50d76bde..1cce2dd893b88a6ffb0ea1f049ac8a4e735226ca 100644 GIT binary patch delta 17 Ycmew%^FwBX0}D&@fhhaUE-WTo075keHUIzs delta 17 Ycmew%^FwBX0}G4gmKS!LU06)G07DlBZ2$lO diff --git a/resources/EngineResources/shaders/post_process_frag.glsl b/resources/EngineResources/shaders/post_process_frag.glsl index e4c4353..b15b7d0 100644 --- a/resources/EngineResources/shaders/post_process_frag.glsl +++ b/resources/EngineResources/shaders/post_process_frag.glsl @@ -2,7 +2,7 @@ layout(constant_id = 0) const int USE_AA = 0; -const float GAMMA_CONST = 0.4545; +const float GAMMA_CONST = 0.8545; const float SPAN_MAX = 8.0; const float REDUCE_MIN = 1.0/128.0; const float REDUCE_MUL = 1.0/32.0; diff --git a/resources/EngineResources/shaders/post_process_frag.glsl.spv b/resources/EngineResources/shaders/post_process_frag.glsl.spv index a4a924fa32132fb8c0adf718156b2defa031fc8a..055aba0b967ca55e2d8a06a68d5527b2733b473b 100644 GIT binary patch delta 17 YcmaE1@WNn21q(~_fhhaUH7sw00Y`=hZvX%Q delta 17 ZcmaE1@WNn21q+MimKS!LYgpb00{}>92c`f3 diff --git a/resources/EngineResources/shaders/scene_fragment.glsl b/resources/EngineResources/shaders/scene_fragment.glsl index 782d2f8..415477f 100644 --- a/resources/EngineResources/shaders/scene_fragment.glsl +++ b/resources/EngineResources/shaders/scene_fragment.glsl @@ -1,6 +1,6 @@ #version 450 -const int MAX_TEXTURES = 64; +const int MAX_TEXTURES = 512; layout(location = 0) in vec4 inPos; layout(location = 1) in vec3 inNormal; diff --git a/resources/EngineResources/shaders/scene_fragment.glsl.spv b/resources/EngineResources/shaders/scene_fragment.glsl.spv index 472a34f65cfa4ba244ce66f18118eed651f05fd1..bf95492eab07958cdd4ae837c70107d6350de07d 100644 GIT binary patch literal 3424 zcmZ{lYjYG;5QZo01-u}45P`TMC?FVbfM_Ic63GVL5FlI%P}gB+Hkqo)%+}7Vg@4Ik z;AcPM@9|Pv#rw>hCR5htqoPkQ@|`I4vlxrd2%ecO|KN zuX~+tud}}1>E7)1hr?c${}PA2I7-4^5RJlq9{sE&b#GrKE=v0GIH(3R6j9wr!)ti2 zX^k~M4@Z$7OVx??78rUE4F=;ZTu$S3RQj5Qk8^GL+5PZ&J|1b^rvAvoe)AH%6+GX` zMKu(EI~{HN@tQxB`Dz{ZlbEAm?c{5eynE?*a|@cS(-b~(AQam(bt~{B%(4}~pKIIZ z+b7?4nEP=Y^_@$nZ>T%;W#{~0ZwmW=O~4qFYJzW4O~5DB1bnxe;M=Vx_$Ji^d{Rxo zcdH4$$u()}{_dRrK@ttro}%{P469croq8QCF$)z^^Nt7`_RC(PGmJ;i8p?P~*l?U} z_4;X&<$jVYA^FxQ5GVIttiM!RKwI<9soG76xg7 z)r+?lC3jMS$QNjilJZJQEiheW^7+YTnB)%QT}H`Lr0o^xsv@Z!W44?;!?*)r)Wb0P z4|cSI)g1PA1*7N0ovvW?8mv{p=rh>43Pz8?E>tjj3wBx3(T&=#87?2Fj`~9{Ym!y@ ztgp5ov*9y{=S=v?g+3!;n0;0{XC;7Y-R&4Sg5ehyd3mg5oG-}h5oKSx1iOu@Q^h+&U62`Q?7<}u9 z0iPsr%Y1yf%UC#Y?M+VNff@IV_C(K!pO#Kfuv^;C0nO|iY~I=Q1dRP2(%h0vNiI42 zuyh8w=m~3)i+jo5z{rKoy9C33-02p7Qa0fSA4sS6W`8K1w_rARm^zvLnRM1*y(>L90;_ZzAB!Pv)5%?xnrioF7$f&W&i798$eS2pWY7yN6QrzGI; zv3VC@w*Fn|RyVl!C4anlu>k+E^HCT0*t{c)=Z^FwEJ*xMQps)c*uKNq-!ti~0iXE3 z^MR8eJ8+oUyhC!DJ#h9lb(3?_V+J|@5<-uO<<0Pa+4jO6Ydd>UQQXNB67DJY`i404 zmG2YyqISwXeMiE(AO;_C+}l$Ue0PaYE^{xaC=Yun& z`K$y^O9BU*IOEJphr`*8^PY4#=Ol2ji8Ido(&11e<6Mvq=ez_CHgU$eC>;*O(9wVNbl1A0*V`u*CR3I^6i!RX%zC)4JCsF9D(GD5n4b literal 4884 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 literal 9000 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 literal 4880 zcmZ{mdsEbA6vm?n+HJknTdkKy(H5$%fM~Udf~aUKUa>l*mWJIdWEzs4B+KYHe4&1V z{@pLt%d|6neo4*}aCv9WzUMsW`kwca?b|uH+i`X{A3J-U6{i>not;7)VFThEXZF#H zNA)yo*2k}oV6o5XW6Evz%W9YSe$lEIMBqgh64rWJHNrrK?pi1O z)r&?)MtWOiUb5_Gm;7kWEbH4?evoxA3?knhtqrdENgBkFtKQUVjW|j(m(u2@UoXzz zdp-a1`MnqJqC;WFut49nPE^Bd!upT_A#51Uc5xgwj#akA=# zz0Ag{X7gUOtde`#U8&mL39{`i$IWs~iRb;d*-RWKP1V?=NG(K5D^?Wy7w;Xg7+g$^#p>TE)_?=}6?8 zWL4&ETX#2w;ef2gK{LOdL&LRg7O3WIEUs<=(}m5kx(a1d-5j2vHDuQHjl<$jPP(JR zMXv48>Uo}<6`xw4;LBBtQM{Axi{UB`iAu?wO`*lAV``ejjlr~4(<^v=$eXHKkM{M|VQU#+Il4dgoB=8ewdQ{cSa z8?D@k#n+;GS&LXj9=;vb8(Zj#c+@ICySCjt1Hvm8w_7vcl`S{7tJ@>p=Bvv$tKazq zyt00uS&tT^&7<&vhRKeI=u#2Kut$&|peE9=6 ztNmdw`$P|R(RHHdrzz>5%%n5)gKvu>Os%G zo)*y)WcCx8fxM)-D*L5O|IxFL=&1pjJwzt{A)(A?^hUB6shNIQt~27vjsC1= z^!S_pym(@mJS3idF!_RbdT(-FJa@t5QSqE*lgGtdzps`&vgxmjxB95#ril6utBOg@ z$5q`O&G>*T8H62maVMOC31zk^K@gnR`e~lb1_*kLjvL5r=hB(^<`|7oRgCe2`s{`J5Av4`;x9z7&rS>%#{bJM;NU zJU;Z#e1^s2GbF+X89Vd&T0B1V*?caF$A`Oz4>ESkbQ%|DbFZwqUFt(n1^(Y+FZv1a(Kx&GA+K!=U#IFAf+Quj|HYNh6dQvO>$ rQ{wTZr{>G~WUvPA;m;y^c}QgO7E9dXAy?x~Nw#>LSH^#;^SbDNZC%~1 diff --git a/resources/EngineResources/shaders/scene_opaque_fragment_deferred.glsl b/resources/EngineResources/shaders/scene_opaque_fragment_deferred.glsl index 97f4884..752ec04 100644 --- a/resources/EngineResources/shaders/scene_opaque_fragment_deferred.glsl +++ b/resources/EngineResources/shaders/scene_opaque_fragment_deferred.glsl @@ -1,6 +1,6 @@ #version 450 -const int MAX_TEXTURES = 128; +const int MAX_TEXTURES = 512; layout(location = 0) in vec4 inPos; layout(location = 1) in vec3 inNormal; diff --git a/resources/EngineResources/shaders/scene_opaque_fragment_deferred.glsl.spv b/resources/EngineResources/shaders/scene_opaque_fragment_deferred.glsl.spv index e0942abef1b1b03b23fb6edd6c6e7da7c8979439..a44dc8d37e3c783d7b3b954ae058e09105cce9e9 100644 GIT binary patch literal 6040 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 diff --git a/resources/EngineResources/shaders/scene_translucent_fragment.glsl b/resources/EngineResources/shaders/scene_translucent_fragment.glsl index 90f945b..c1a9920 100644 --- a/resources/EngineResources/shaders/scene_translucent_fragment.glsl +++ b/resources/EngineResources/shaders/scene_translucent_fragment.glsl @@ -1,6 +1,6 @@ #version 450 -const int MAX_TEXTURES = 64; +const int MAX_TEXTURES = 512; layout(location = 0) in vec4 inPos; layout(location = 1) in vec3 inNormal; diff --git a/resources/EngineResources/shaders/scene_translucent_fragment.glsl.spv b/resources/EngineResources/shaders/scene_translucent_fragment.glsl.spv index 6a4a432f5577038f804d0b87a615dcdb4911e072..6b59bc88f058c72937042c922d7dfef4bb1b0706 100644 GIT binary patch delta 22 ccmeB>>5$o=z`?}8G+Bw`9FW@li9?JP06~%kd;kCd delta 22 ccmeB>>5$o=z`^9eFjI*J0Xigts1XXoG8n@mpteufnLBXt&YfxI4q{mml&xAm zWoEY6E<{GrVyRR{yR_ThpV8CuR8ODJ@4g3qOyjFx&N<(+yxVzycbYC*JU+|DWs|e1 z*1Rcbxek=|lJ3lYUNwPY>XMCRCDs+WfT>jf$G3e z!`GVo+~fYz@ZR#F`p6LTw(_5KTyMQW-rRfWd@WCg_#Fd7{iW*m(jex!d0bB|9C_CH zdM%B--2)^0_L~;-w89T1(v(=U=a%!e^6>DMQcs;_hi?MD{&KxktyX%Hi`~!8=EC=s zsy&UxEgh~8jr7#p<3!pI_N{IoSvmUuzLo8LD_5>P*tZH?v$nr))vC4B@jNefp2B&0 z=Cj}$du+ta#`c^x4h#(S4$C!VbKv%N?8s}(GroLRV@c@NU6yk8l==s&bnN=8qIlsRcg7J=WHS8!nL$yop7-`)ckzp9An+LzOn9GeysbJf4=+H_k8!QZ>;;4 zAM3v5$Ahu%Ti@9C-J0EuFZO?HtUsUaHmeJ8H?_KXRr|1azrtE|8(Gz|z zh$+?fm234puOxf`#3j|>wS`#5}R^QPos~%8~M}l|NjnKvoj5Tx6k^vQgwvS3U!+E@1i~4 zu{)!8oAY|*ZPfEuwh?QN zwI?T^bGKnnNq%|#Q7SPT^7F8#BaMxGd&{-RFG8D%)bG63Hs2Wc@d9KU7zeIQ z_I&iHWv|7)^t-pqfnzo&)rP#3-P>#K&pO2s_IxTX!C_p~d69u^Y5{d$jH+MGJuXE$ zPHTh&~R4Uwc#H zyzkEB8|$v+oL^kVEL)MrFGTm07CYtY`7IM?jmbODFCz7uPky8~(e$eF9X zGjaNNB|YNzU^|!V(0@D9y@{CXRp{yEi4DJ+5EdZ$PZi{39UZk0w3lQ{D^CKHIg<`Lyo?S++jE{|}*A z%XeXYZNDk89&P__F4}%mVt(sA0vxe^zcH>S=6gzKmfaNlJ&WOaM!eski1)7l0t{Hg zDH~^RJB;}UjAw7|B;*$0S!?^2{S6P>H-4;O8-KiD>pxMj{T@7Cu&sBpV0)KOj&APx{0!&(25!#Y-3zt>WAqu< ziM$o)yMNa`vN}vk#b~ZJasARe(93yE*nj6_|4Xn4@i6K z&Z71qba`Xik#~b-K;D=o$TtFc?WxE&gL}a3M_@Q(MQkqJ~;W)X|DUxi_1Ys>`|8$;c0b2MhK`&>t$;A4Pu{L?3<(-5f`7A4iuPSKvO8INy21eG=XJ zj^G|emn-IeDsjc!Ps6zuN92A6U9On>*~FQ@R;m~+q2Yn0;#RfckpH4JJ9EEinc!I z{R(g%eJ7KB178C7_Ej(!IF~ieHOAOuNc}PY*U;snAHR-%5F7!F_=1dj|Xx_y*LY_7Bjly$?j~AEL_}(~kTRSO(;cS%UmA zkk|GOe*(P2_?G#U zX4-x?+`Id9zmfkdboY4xMEyJqJ*iu@xO-H(4t{4P3bJo=x3b**K-e%JCGQr~~*%IkrD3;I6h0>?~n9dVP8 z7bkrRa#qr(A!jFj267JY{4PQIx1zE0fNOC5*1i;&@BI3--HZKt8E~HYz->0Q*(m82j}lKwjH^y&AaZ=+~9# z#>nqX-`AR?mTjs-*%6%`7ixB~9D`(OBR`KTX%-}mmB+?h=9emLB7erLVsE^pG7CF_^5V0W@y$s{)n_F{2rqJ=54IZaZl_%_jWDpvp> z7LAB*5zUG26WuR*K=h>O710XCz(>hNZBeZ9R4Nmel9TyzUfRhetlu{qPZcIr zb2GaE-)?8Fvbg02v+P&m@$lBlaIsj*sK(|+YH9IG#O%l)3Nyu^S$-|qw_Ie=T8(eD z__DPe-*9Z_e$`j5l&WcMLaGv$a;bc9TYI1pwK`Bdda3R_lVGFGH7ps#~^~NO!)oio*VyY5Ea6#w%%2c{y<;AM$ zu#(E>b7|Ae)mmE)D>_L1-NB(;A(Jai#;2+jrZUAs{z!1Bn$3o#S}U$AKX{fckbH{V?Iq+(4XuLdV;=WZ|DE> z(u#ww`4XM|T(pEzs6$(rS8Dre_j9INo|=f>q*S5O8Q5mcq}}$r_o$f7#)oL5ZhUkb zY_-w(oD1sWaQ|nExlHu>cGynn4(cXr2i!9j)waj(pT(12tUFpsL(2#26Vwz+uVX_u z8~1WNzL~)mJ*}N?HQ1>P_w;Ouwnq24`8K*eCPR1K>t@Xj!hAVgB(fErT=>UhlzkR+!pE zh|j$%IlemHW$i$m-Emyy=gFKuwB3I7${JN0zfY;6tb3D#**Hei z_bjsLt+S|q*6Iuzx7?o5==ORWLy3XnMEdJf`D&;zuX=^O*SGoRvk47vv0~QcNKVdQ z+69ZKw>%VE&NZH>CK=p)Nj9inEtR>{7vWOIJH*}GxnC=Yb~9D%Zd{xm*1FHjf_+Nyt5UXFH%OVWkzhSX%X{6)#;rurnpBU%&Mx zT^x^E<+tB`uxoji3XgUv{u0z`=C^Ib?$vb5rK@i=zoAzqRtfj+YW(A+$2!t8o88b; z?Q8rm+t-ur>l>QQ4v6}Prn3VBLyAK`&m@o6PkO#mSiHvA<}AtdDgLs8wIt3KrcX^2 z<6P|REfG)LF6ZMu??PIm-~F7gVi}v(=x>1N6X1MCHP_eDme?iCRwp*<4;Z7_exqx) z-{8&m8+@_-Mz`30qieR`;LY|Me6jsTw_LPvzn3Pi7H;cz-$KQYaj9zkQcG1&TVi*N znW>PL#9m=D>G<5kGpx`0sL5t&VoX^5mo<*Z-)OaulXz_To6Y}`FEPqfU=x;vzHpwi)j%ltxPpyeZgw3Q%sp-h3HSt)3{CI=>M4j9g{aso6 zSVb{f5>IPR72`D>7vFdnS?jaHo9)XBF&^FZ=tClzGtJ+w@f)hYizRap)`}P=Um%_{ zhdiu#jfjCfqS@qKipbeutcxefF~%7OTOl%x^9{!RHLS&9=Xe-r8oSjV##sgnJdAS; zcAei)Im0cYUDClbtR9o`XJF46Mo%nwzkkT|kF{dU zd4^}bcD9MNU4%d9mwwVOWX>)!JwWE1BFFJsqce(3z3BNj3E!W8pYZM3Z?ivBQSe)< z{}UhnZ2g~}1)^0#=@l~iv-JNHH3uTb8vTn(yJl>_n-RWoyjEGqJU+xe*~#P$B%k7B zaP+4-nYE%n&B@^BNaieIYyPJ@J@{H>J;UkAOKkkHVIAjb4n!x2);pQ=WwFi|Pu;8u zy}$02>f2i3=L)^Z*%8MdCZDH>7fXSi#koZMQPFC}v*#tmrPvh zK!2lV>SKMD>!5hnXY!lG`?Z9U+dTc0c-{-MKP;Y@#Lqh(+4M#6mXEsl_L0x}&z-k( zce~SZ#?d4523URg-yt&lI~{NNnC}w3^y2O<NNu*gxXQ=pXZB-iOCMnRrilGJE@UgM7R}=KE{) zaMoUMvaPLOGGmMC-{3mI(GwqdV4?wzC&H%tY0VM zE@6WXyIq>E7oodWvB-Oa!!$+lsrB_D`iU>~AY+FQx!xcm4tqpRypeAd;lmxm2N^r_ zxk)@e?7#U;h{uO}h7U4!=5w=neAs*QNr}g2wFn>Nn?>exNIX8A5%Wol$7j6=A7t#z zCnFvo&X@UQ#p4r-@Il7Td?v-?!x=Q6oOpbuMED?MhtD$2Zx-PLj}PZ)T7=JG5kAP+ znNLAHKJ1nG%!tQ__XHng?CiV@if33|ZxN3@dt>LNBp&>j>R79}A_C)0`nzJzYG(XP zokUj^9Tjo!;4Rli@eIp#t9Wv;rfU{=aO0a*b9%`koqnfR*&Egs46-O z;KyC=4~Yl6Tf~|yF7w}1Ewy}DM2)Ny`(`<*^CQwRs1u)iL}1hj-&p6r^)jHt#&lc7 zGw9XHnm;DG&yznc{(evXg!l(Ub`L%&9v_BbpArvtf`@(DVM{#hA@Rg#nD1xAgZaLn zb(rt_IbqboFyGIM2lIWu;4pm0^eV8%FN&y}I;qR>FNuFhL=EIL{9*CrBR=uKS7`pS zh*CAMfaFyWOUrSuZp;L==cUAqoaaX zUpEqI;`fV1Wo zG=o_k;`via{4&oKX=i^uM!L1%-^S?$s!~B0E9{-}q{C_JR-0DI0>!B`-w^uyFe19jN z^Jenz#dF3?{)2eV75VSf{6|saefg8a$JE{B;{PlnF0t@OPi?PgMrXB*iD&#rw`jA- z@IV-S)GoTT|o$Dg8krQ=W2e3s)+*L=2!{WwQ6ztyolSHu~xTo;IE zuwHV#MnpX7#TMCY*NJD)3(oi&5p}E<;m>_~tq9!i6Y;?U5%=jr%?$1nI%0xRC%oml zNIb)Gb&Dt0dXeSo5f6?H_vunmmk1mi?o+P_9GUynC!$AopZdjP1HMn$>A`>q9Afas zEfHBy&|974U=SbQ4I=t>x7)jo4ja^L-=59lH+gi2v%O3h_UKP`-?i6?C-;a5z10A2 zHC!T|K@BT34~f`&tLbv_)O3%_vqd~M;Ff2rc*}#{@_=)fY>${NZ>M;M<=G~lJpYwF HJZJiUiW#|7 diff --git a/resources/EngineResources/shaders/scene_vertex.glsl.spv b/resources/EngineResources/shaders/scene_vertex.glsl.spv index b8041580590add9acc7371846e76d1940008ad7a..305b9655a3fbbda83946d855a218beac65642f5b 100644 GIT binary patch delta 1017 zcmYk4Pfrt36vgkGcA!+6NGh4KF(Ps8&JeK`2#TQ6g2jJWYZrzzfoasb#PSVD^VTMQ z1=F<)cJ5uca^=p%k6_~Y4KtKUPToD|-gn-8_s#dpmr5xYEKHg?yJRKn3`_O-+h(>Q zJQV7}wy-Na6Iw$1>(LLFRP{dg8@&%^q2;Zn%;8q={bA=oJhTn}E+|*==*Fq6m<*oU z+3dvoZ{z-%#u?rCTvFA9?fTOon&s4PyxQ%jIoiD{@U5#6T8BIT zIUh}N7%cGL#JC15=YQp+87>3M3+!x{9B7R3}Ipx>HtBN(XM29~} zbJVaOP9yAxU(w1eT*}GQ+QmFGP=0W3K(`kQ7zGBA4EMB72!TKYue4H&&Vg|5herOj zR`zCjcstc@Y25fQ2Q&X?@_NYqYNMILZ+D|AovSVhQ^@jUH1HMeysY)EpD&c>mWhOI zsq9!0mId>z;?0oA`C)Ov9~TRQdtxY@Tem_o-1~~r0U!O6Z|J5xz`C$1tO?Z8Nlhy{ zT~f1|=x3bAcqB0Rp?ZQp7F07x64Nq9+!8p9gDJq6*F(>Y8;L$P-Vx`;GUF$TsX@CE_rVrtMcfg~{`jjvl@IG^MHu+x6d~bcU|Ie6=?y%2D?HQIxuDl$1WX3XRVT=D);g zg@!Qae~4iVi~LcXHnD=0gmrD1!@%Q$XQP?qw;MK;xS~{Dp!9 zezS;KgAQkg=|AY_;Y;aG1YRS_O&iTlp zKh>YLL5F8W?y|;>4|C8M|4z;(oOf|FRsQ2DD^kyiwtTZ(zt|=cwv}ZdO9DB*j+Kvx zwyc=^lK)suwf>~S`L*h$gxbizug>|O)p*F5*MwzZRk$jg)w#%D6WH;rKuuTsBfl=7 zwRJWgA-pAx-P{l=0vgu?M`PVBfqFRCw8^Ns6B?4}2sEUbL_5?G$!`fPM#q?YB^QkE zC>}TNigTC2_nzY5ixzx$)ZbW40meLt9U&OsS3GX~P@Fdqj2|fu#%RI#v0~Pu models = new ArrayList<>(); MusicParticle = ModelLoader.LoadModel("resources/models/MusicParticle/MusicParticle.json"); List MusicParticleMat = ModelLoader.LoadMaterials("resources/models/MusicParticle/MusicParticle_mat.json"); - ModelData SponzaData = ModelLoader.LoadModel("resources/models/Forest/forest.json"); - List SponzaMaterial = ModelLoader.LoadMaterials("resources/models/Forest/forest_mat.json"); + // ModelData SponzaData = ModelLoader.LoadModel("resources/models/room/living_room.json"); + // List SponzaMaterial = ModelLoader.LoadMaterials("resources/models/room/living_room_mat.json"); radio = ModelLoader.LoadModel("resources/models/radio/radio.json"); - List SponzaMaterial1 = ModelLoader.LoadMaterials("resources/models/radio/radio_mat.json"); - //ModelData SponzaData = ModelLoader.LoadModel("resources/models/Cafe/exterior.json"); - //List SponzaMaterial = ModelLoader.LoadMaterials("resources/models/Cafe/exterior_mat.json"); - //ModelData SponzaData1 = ModelLoader.LoadModel("resources/models/Cafe/interior.json"); - //List SponzaMaterial1= ModelLoader.LoadMaterials("resources/models/Cafe/interior_mat.json"); - scene.AddActor(new Actor("Sponza1", SponzaData.ID(), new Vector3f(0,0f,-5f))); + List SponzaMaterial2 = ModelLoader.LoadMaterials("resources/models/radio/radio_mat.json"); + ModelData SponzaData = ModelLoader.LoadModel("resources/models/Cafe/exterior.json"); + List SponzaMaterial = ModelLoader.LoadMaterials("resources/models/Cafe/exterior_mat.json"); + ModelData SponzaData1 = ModelLoader.LoadModel("resources/models/Cafe/interior.json"); + List SponzaMaterial1= ModelLoader.LoadMaterials("resources/models/Cafe/interior_mat.json"); + scene.AddActor(new Actor("Sponza1", SponzaData.ID(), new Vector3f(0,0f,-5f))); + scene.AddActor(new Actor("Sponza2", SponzaData1.ID(), new Vector3f(0,0f,-5f))); CubeActors.forEach(scene::AddActor); @@ -96,6 +97,8 @@ public class GameCore implements GameLogic { materials.addAll(SponzaMaterial); materials.addAll(MusicParticleMat); materials.addAll(SponzaMaterial1); + materials.addAll(SponzaMaterial2); + models.add(SponzaData1); models.add(SponzaData); models.add(MusicParticle); models.add(radio); @@ -107,24 +110,59 @@ public class GameCore implements GameLogic { scene.AddCameraFrame("Fifth", new CameraFrame(new Vector3f(64.92f,158.06f,-35.25f),new Vector3f(-11.20f,156.5f,0.0f),scene.GetCamera().GetFOV(),"Sixth")); scene.AddCameraFrame("Sixth", new CameraFrame(new Vector3f(94.52f,172.54f,47.57f),new Vector3f(4.3f,329.27f,0.0f),scene.GetCamera().GetFOV(),"NO_FRAME")); camera.SetPosition(40.0f, 155.0f, -42.0f); - //camera.SetPosition(0,0,0); + camera.SetPosition(0,0,0); camera.SetRotation((float) Math.toRadians(10.0f), (float) Math.toRadians(-90.0f),0); - //camera.SetRotation(0,0,0); + camera.SetRotation(0,0,0); guiTexture = new GuiTexture("resources/EngineResources/Texture/DefaultTexture.png"); Logger.debug("GUI TEXTURE CREATED, ID->[{}], PATH->[{}]",guiTexture.ID(),guiTexture.TexturePath()); List guiTextures = new ArrayList<>(); guiTextures.add(guiTexture); - scene.GetLightingManager().GetAmbientLightColour().set(0.9f, 0.9f, 1.0f); - scene.GetLightingManager().SetAmbientLightIntensity(0.1f); + scene.GetLightingManager().GetAmbientLightColour().set(0.5f, 0.5f, 0.5f); + scene.GetLightingManager().SetAmbientLightIntensity(0.01f); - SkyLight = new Light(new Vector3f(0.4f, 0.7f, 1.5f),new Vector3f(0.0f, -1.0f, 0.0f), true, 1.0f); + SkyLight = new Light(new Vector3f(0.25f, 1.0f, 1.5f),new Vector3f(0.0f, -1.0f, 0.0f), true, 0.70f); List lights = new ArrayList<>(); - lights.add(new Light(new Vector3f(3.0f,2.75f,0.0f),new Vector3f(35.0f, 150.0f, -42.0f),false,100.0f)); - lights.add(new Light(new Vector3f(0.0f,3.0f,0.0f),new Vector3f(40.0f, 155.0f, -35.0f),false,20.0f)); + //lights.add(new Light(new Vector3f(2.9f,2.75f,1.5f),new Vector3f(0.35f,2.69f,-2.11f),false,3.0f)); + //lights.add(new Light(new Vector3f(3.0f,2.5f,0.75f),new Vector3f(2.65f,1.57f,-3.31f),false,0.5f)); + + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-433, 445f, -424f),false,300000.0f+ (float)(Math.random() * 10000.0))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(-210, 445f, 460f),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(-966, 445f, 204f),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(-176, 445f, 1000f),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(777, 445f, 858),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(376, 445f, -2136),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,2.0f),new Vector3f(2163, 445f, 1880),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(3334, 445f, 2405),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(3509, 445f, 1825),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(3877, 445f, 3378),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(4925, 445f, 3430),false,70000.0f + (float)(Math.random() * 15000.0f))); + lights.add(new Light(new Vector3f(1.9f+ (float)Math.random(),1.5f,1.0f),new Vector3f(-2083, 445f, -1826),false,70000.0f + (float)(Math.random() * 15000.0f))); + + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(2076, 410, 1272),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(2446, 465, 2303),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-842, 410, -1141),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-207, 410, -1830),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(899, 460, -2015),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(1775, 460, -3448),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(1800, 460, -4154),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-1727, 410, -387),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-1198, 410, -964),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-1778, 410, -1502),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-2692, 333, -2109),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-2849, 333, -1724),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-2019, 410, -729),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-1727, 410, -389),false,10000.0f)); + lights.add(new Light(new Vector3f(1.9f + (float)Math.random(),1.5f,1.0f),new Vector3f(-1337, 410, 122),false,10000.0f)); + + + lights.add(new Light(new Vector3f(0.75f,2.0f,0.75f),new Vector3f(1086, 425, -3375),false,50000.0f)); + + //lights.add(new Light(new Vector3f(3.0f,2.75f,0.0f),new Vector3f(35.0f, 150.0f, -42.0f),false,100.0f)); + //lights.add(new Light(new Vector3f(0.0f,3.0f,0.0f),new Vector3f(40.0f, 155.0f, -35.0f),false,20.0f)); lights.add(SkyLight); ILight[] lightArr = new ILight[lights.size()]; diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Main/Scene/Scene.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Main/Scene/Scene.java index 1bd780a..6dea581 100644 --- a/src/main/java/net/halbear/Terrain4J/EngineCore/Main/Scene/Scene.java +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Main/Scene/Scene.java @@ -43,7 +43,7 @@ public class Scene implements IScene { public Map GUIReg = new HashMap<>(); public Scene(Window window) { - lightingManager = new SceneLightingManager(10,new Vector3f(1f,1f,1f), 0.5f); + lightingManager = new SceneLightingManager(1000,new Vector3f(1f,1f,1f), 0.5f); Actors = new ArrayList<>(); CameraFrames = new HashMap<>(); var EngConfig = EngineConfig.getInstance(); diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/GUI/GuiRenderer.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/GUI/GuiRenderer.java index 6facf69..c334187 100644 --- a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/GUI/GuiRenderer.java +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/GUI/GuiRenderer.java @@ -1,9 +1,6 @@ package net.halbear.Terrain4J.EngineCore.Vulkan.GUI; -import imgui.ImDrawData; -import imgui.ImGui; -import imgui.ImGuiIO; -import imgui.ImVec4; +import imgui.*; import imgui.glfw.ImGuiImplGlfw; import imgui.type.ImInt; import net.halbear.Terrain4J.EngineCore.Input.KeyboardInput; diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Rendering/Pipeline/Images/TextureCache.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Rendering/Pipeline/Images/TextureCache.java index d5989c6..6e8baac 100644 --- a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Rendering/Pipeline/Images/TextureCache.java +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Rendering/Pipeline/Images/TextureCache.java @@ -18,7 +18,7 @@ import java.util.UUID; import static org.lwjgl.vulkan.VK10.VK_FORMAT_R8G8B8A8_SRGB; public class TextureCache { - public static final int MAX_TEXTURES = 128; + public static final int MAX_TEXTURES = 512; private final IndexedLinkedHashMap TextureMap; private final List ActualTextures; diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Structure/DisplayToScreen/DeferredSceneRender.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Structure/DisplayToScreen/DeferredSceneRender.java index 88ac0aa..1564288 100644 --- a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Structure/DisplayToScreen/DeferredSceneRender.java +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Structure/DisplayToScreen/DeferredSceneRender.java @@ -75,9 +75,9 @@ public class DeferredSceneRender implements SceneRenderer {//dynamic rendering private Pipeline VkPipeline; private Pipeline VkPipelineOpaque; private Pipeline VkPipelineTranslucent; - private float R = 0.01f; - private float G = 0.015f; - private float B = 0.0175f; + private float R = 0.00f; + private float G = 0.05f; + private float B = 0.15f; private Matrix4f ProjectionMatrix; private MultiRenderTargetAttachments MRTAttachments; diff --git a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Structure/DisplayToScreen/ForwardSceneRender.java b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Structure/DisplayToScreen/ForwardSceneRender.java index b095234..06f364b 100644 --- a/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Structure/DisplayToScreen/ForwardSceneRender.java +++ b/src/main/java/net/halbear/Terrain4J/EngineCore/Vulkan/Structure/DisplayToScreen/ForwardSceneRender.java @@ -69,9 +69,9 @@ public class ForwardSceneRender implements SceneRenderer {//dynamic rendering private VkClearValue ClearValueColour; private VkRenderingAttachmentInfo.Buffer AttachmentInfoColour; private VkRenderingInfo RenderInfo; - private float R = 0.5f; - private float G = 0.75f; - private float B = 1.0f; + private float R = 0.005f; + private float G = 0.0075f; + private float B = 0.0175f; private boolean Rb = false; private boolean Gb = true; private boolean Bb = false; diff --git a/terrain4j.properties b/terrain4j.properties index 5e0e4f9..79db29c 100644 --- a/terrain4j.properties +++ b/terrain4j.properties @@ -36,7 +36,7 @@ DualPassRendering=false #3=MSAAx4 #4=MSAAx8 anti_alias_mode=0 -Debug_Shaders = true +Debug_Shaders = false ShaderRecompiling = true #Vulkan Debugging toggle vkValidated=true