From 3c0f3e18cdee7aa67e5e9198b76a24985bb49391 Mon Sep 17 00:00:00 2001 From: Sascha Willems Date: Sat, 25 Nov 2023 15:35:54 +0100 Subject: [PATCH] Code cleanup --- examples/subpasses/subpasses.cpp | 19 ++-------------- shaders/glsl/subpasses/composition.frag | 23 +++----------------- shaders/glsl/subpasses/composition.frag.spv | Bin 3632 -> 3152 bytes 3 files changed, 5 insertions(+), 37 deletions(-) diff --git a/examples/subpasses/subpasses.cpp b/examples/subpasses/subpasses.cpp index 6219412c..8486c353 100644 --- a/examples/subpasses/subpasses.cpp +++ b/examples/subpasses/subpasses.cpp @@ -48,7 +48,6 @@ public: }; struct { - glm::vec4 viewPos; Light lights[NUM_LIGHTS]; } uboLights; @@ -766,7 +765,6 @@ public: // Update updateUniformBufferDeferredMatrices(); - updateUniformBufferDeferredLights(); } void updateUniformBufferDeferredMatrices() @@ -794,16 +792,11 @@ public: for (auto& light : uboLights.lights) { - light.position = glm::vec4(rndDist(rndGen) * 6.0f, 0.25f + std::abs(rndDist(rndGen)) * 4.0f, rndDist(rndGen) * 6.0f, 1.0f); + light.position = glm::vec4(rndDist(rndGen) * 8.0f, 0.25f + std::abs(rndDist(rndGen)) * 4.0f, rndDist(rndGen) * 8.0f, 1.0f); light.color = colors[rndCol(rndGen)]; light.radius = 1.0f + std::abs(rndDist(rndGen)); } - } - // Update fragment shader light position uniform block - void updateUniformBufferDeferredLights() - { - uboLights.viewPos = glm::vec4(camera.position, 0.0f) * glm::vec4(-1.0f, 1.0f, -1.0f, 1.0f); memcpy(uniformBuffers.lights.mapped, &uboLights, sizeof(uboLights)); } @@ -825,8 +818,8 @@ public: { VulkanExampleBase::prepare(); loadAssets(); - initLights(); prepareUniformBuffers(); + initLights(); setupDescriptorSetLayout(); preparePipelines(); setupDescriptorPool(); @@ -843,16 +836,9 @@ public: draw(); if (camera.updated) { updateUniformBufferDeferredMatrices(); - updateUniformBufferDeferredLights(); } } - virtual void viewChanged() - { - updateUniformBufferDeferredMatrices(); - updateUniformBufferDeferredLights(); - } - virtual void OnUpdateUIOverlay(vks::UIOverlay *overlay) { if (overlay->header("Subpasses")) { @@ -863,7 +849,6 @@ public: if (overlay->header("Settings")) { if (overlay->button("Randomize lights")) { initLights(); - updateUniformBufferDeferredLights(); } } } diff --git a/shaders/glsl/subpasses/composition.frag b/shaders/glsl/subpasses/composition.frag index a111d455..c060fe6f 100644 --- a/shaders/glsl/subpasses/composition.frag +++ b/shaders/glsl/subpasses/composition.frag @@ -18,7 +18,6 @@ struct Light { layout (binding = 3) uniform UBO { - vec4 viewPos; Light lights[NUM_LIGHTS]; } ubo; @@ -30,40 +29,24 @@ void main() vec3 normal = subpassLoad(samplerNormal).rgb; vec4 albedo = subpassLoad(samplerAlbedo); - #define ambient 0.15 + #define ambient 0.05 // Ambient part vec3 fragcolor = albedo.rgb * ambient; for(int i = 0; i < NUM_LIGHTS; ++i) { - // Vector to light vec3 L = ubo.lights[i].position.xyz - fragPos; - // Distance from light to fragment position float dist = length(L); - // Viewer to fragment - vec3 V = ubo.viewPos.xyz - fragPos; - V = normalize(V); - - // Light to fragment L = normalize(L); + float atten = ubo.lights[i].radius / (pow(dist, 3.0) + 1.0); - // Attenuation - float atten = ubo.lights[i].radius / (pow(dist, 2.0) + 1.0); - - // Diffuse part vec3 N = normalize(normal); float NdotL = max(0.0, dot(N, L)); vec3 diff = ubo.lights[i].color * albedo.rgb * NdotL * atten; - // Specular part - // Specular map values are stored in alpha of albedo mrt - vec3 R = reflect(-L, N); - float NdotR = max(0.0, dot(R, V)); - //vec3 spec = ubo.lights[i].color * albedo.a * pow(NdotR, 32.0) * atten; - - fragcolor += diff;// + spec; + fragcolor += diff; } outColor = vec4(fragcolor, 1.0); diff --git a/shaders/glsl/subpasses/composition.frag.spv b/shaders/glsl/subpasses/composition.frag.spv index 9257020ccdfef2c0cd9afcbea278e251a0cfc769..8d620d0c0a8fac8f8f9d83e43c40411c28875e08 100644 GIT binary patch literal 3152 zcmYk6+j3M@5QcXSlYogp^0TZ-GBe9yH~HhrmJ(TH_JM*zU)xe%-U-p>jcR%^*MB3 z)|30Q<(2YyvsE3xcYB5LOpiv+NHFlt7Do z{lmmIb}O4pjVAG)tRKHw+1jbE@9s33wN|aMo$osdzTMc}s?^QXlbt%?EhISSy$W8b zudP=bZQkGkZ#u#7O4(U(>ppJO8}?kH&o|Ju+%9Do&608ei46f ztwFRqo5ZfxnwHM}8FZ!9TK5vnwSZRSE^AjCt?2t6ezmr-fg)bY@2s)cx{=0^?{OZr z?bW+-X35cy9@SxmKhk#h{qqIiyD9SZ&p+{J1X+^<#!_T_2q}}-MH5^N5?Vy zu{N}i$q_qN;F&|roaX)j-GdAx=JFm~k!v>HP1N=tMsr4czrMY8A?EW93?VLkXBqx+ zPGFu9*z&bcVMYDZ@O?A-#)t6_p~aLlyp|Wx#+BkSm&-kUZ8PUyO}=;NI*ES-J&bf9 z=aYXF+hq^VOO81&FcbX&M2;foCA2;Go}-5M>avGd(Dp1Z;?CS&;Kk>%6}bO zzI7+?)!y?Ia)M6YMGvLBHm6*348rve{RZR@F}Vq}n0Y@$dk!)C(D%;7j9*T+IrTq9 zNA8%-XNhC{X0ojv=a|Q))2Z;k%>8HA!@r&T2eZD9-+`F#0oq=ysqg=fcW*!TtM4}@ z=G=GC){g#vz&4k-eEr>oU1nbLyd#%6{st+b<@#+MMywsa|FhwHhyI_2FW>*o@Vztt zGs8FTe`NU1(*LTWKU47KFBE+F%LU)K|5xsxq+h@N7ZJbZHBRA-jwfsYy~v5=o=CVc zm-BHB*O-9kH6Hm+WBc7kzL&AZiuumqiz}{TKIdgT^1X&Vh(tc$zL@!}?>xoi+y5{k z7QK%oOxzWi-ou*6Q)JKT#%zliiQ(MdE`gV>)tYA-2atd5_SvQ zoW|_Uvx&ud7P0*{oq^|BLgGBe+_RAI*t3E!7XBS(iZC<~L+lU-< z`;Lv7%UOMe#H=1*e~rYfjNM0~?l&o}?;H6RDZY{K5+?4lekbyC`aT|Fn?s&CoZ%zH zp5h%zJZ9zbH6b$-=A;MH>7sI zGulL)(KGhzKS`LgalbLK;`?^)QU7~vYb>Yxs$+|}0^7nCb7p~UC(Icx(YZ5kAnuoM Q+;7hwo}!KYM}{lN|IR1ICIA2c literal 3632 zcmZ9MYjadZ5Qa}kHlRc2_RK| z@{?cmU-%dNQI=X|mCti_I-Fuob#?dK@AUNaoSDvbL+i7wBU_(s$R1_wu{B! z=#5!-?vIX5jSV+j)!{>j-;}v2>r~~j&1C4pRu(I@CGoq+PskQ{;w*&KN!Bd;lLbnk zMZW%1#1@t-*C!iI;@w#fezUT8vp&Ckv(c=zYK^6Q-VX4k#`0pNZl3OJ=VRV@f^*&r z;FbE^e6`W$?S9NFCm3ES+XL>p*BbT4GIohNUq;t*yObS3kI$UHI(ByS%=A<{{s!1s z9`DL*$XMvXe{Tzj%ysn%AS?c4|PXHHF!sg!9uZrA4T z*q6Y}Q+LfY=MetNT!R^1*$M1wt!X*=Udrf8x!skWLswd@c@N2bUPh0n*k{_+Ml1F; zi(joRETD2O?anUdc2{-_Ew}BL^7C%2v`(iM=5=`fwWS%C&PJ)L2R*362!EjMuKD{5 zzUNxx>&tiV&exY8zUN!y>&v&l^7ZA1e*oLLjx$so=Qh-a)-X9@TM9gLh?&#eZ=t)9 ze#BgHZpB<;#ayHGUo7hJ3wkd&?o(^ zh#W=EvuJDZeTX$YYlk&FkG5uc5%(M%uIb!CTfXZa#8-RvBgl3tc^%!C z&flDJ&9NJ<=jwkUzYpK@k|S>Jx6$rJ+*(%$a60`RY(5~ei`47<@h`4-x z|2wfG^h}=TSrE z@Qt4<_{M$jf^Xb6FMQ*(Px$qMFaK8ZkF!7T%QJ}o{~Wuvr`rHY@bQg zK0vHL32JSvU)ZmE8$#p^BIfh_#I!v-@AN+B(SH>&mvgma?h$O~mZ{P^cNFnndKZmZSM2#+Y~!)#_prqjNAy>| zdp?GEZVyur-p6*1xcl}W6$}1JY_T40mUn9eG3P17m~;G(N02f(t=E|K7VA8n@Tl_x zd@;rGWSt*^73=&6-#Oy0Sw@RRouk-d*6BXaAm)^BEar&EoU_=mH|Kne#2jPM4{_&s zu471?%{cZ15@%z~_fM|9nna9;e*xQG^-!VlDa7@BON{w8-lvDgW)S1k$j=G8gl$e^ z*5>;l7W?@G+dC9J_!K+#W6U|1(c&@Zb8NBjzreO9zos?6#Fir-bzj9cumA29M2@+A zkBphiUR99j)g1OUBzk4c|2fvJrntU$c^>h8$N#dBFmZ?LuR|VDr)PH^F^4>J*uxu$ zHN}0eVapQ_&R5v>F*sji%M*7`vuLrXa}nGA++z*bT|&en-oUn>_R9E8#9BuYxyH>~ zM;nWI%h+P!H?hk|oI?v+j(D8I3bwi99ORh$7TQ?kx{WM!vKMj59`2YX_