From eb569a4263a267140aabdbdc8e73f411e27156b8 Mon Sep 17 00:00:00 2001 From: Brandon Mak Date: Wed, 2 Nov 2022 14:21:27 +0800 Subject: [PATCH] Shader updates --- Assets/Shaders/DeferredComposite_CS.glsl | 27 ++++++++++++------ Assets/Shaders/DeferredComposite_CS.shshaderb | Bin 4997 -> 5501 bytes 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/Assets/Shaders/DeferredComposite_CS.glsl b/Assets/Shaders/DeferredComposite_CS.glsl index 833180e7..5af585ba 100644 --- a/Assets/Shaders/DeferredComposite_CS.glsl +++ b/Assets/Shaders/DeferredComposite_CS.glsl @@ -57,25 +57,34 @@ void main() // normal of fragment vec3 normalView = imageLoad(normals, globalThread).rgb; + // light layer index + uint lightLayer = imageLoad (lightLayerData, globalThread).r; + vec3 fragColor = vec3 (0.0f); for (int i = 0; i < lightCounts.directionalLights; ++i) { - // get normalized direction of light - vec3 dLightNormalized = normalize (DirLightData.dLightData[i].direction); + if ((lightLayer & DirLightData.dLightData[i].cullingMask) != 0) + { + // get normalized direction of light + vec3 dLightNormalized = normalize (DirLightData.dLightData[i].direction); - // Get diffuse strength - float diffuseStrength = max (0, dot (dLightNormalized, normalView)); + // Get diffuse strength + float diffuseStrength = max (0, dot (dLightNormalized, normalView)); - // Calculate the fragment color - fragColor += DirLightData.dLightData[i].diffuseColor.rgb * diffuseStrength.rrr * pixelDiffuse; + // Calculate the fragment color + fragColor += DirLightData.dLightData[i].diffuseColor.rgb * diffuseStrength.rrr * pixelDiffuse; + } } for (int i = 0; i < lightCounts.ambientLights; ++i) { - // Just do some add - //fragColor += pixelDiffuse.rgb * AmbLightData.aLightData[i].ambientColor.rgb * vec3 (0.5f); - fragColor += pixelDiffuse.rgb * AmbLightData.aLightData[i].ambientColor.rgb * vec3 (AmbLightData.aLightData[i].strength); + if ((lightLayer & AmbLightData.aLightData[i].cullingMask) != 0) + { + // Just do some add + //fragColor += pixelDiffuse.rgb * AmbLightData.aLightData[i].ambientColor.rgb * vec3 (0.5f); + fragColor += pixelDiffuse.rgb * AmbLightData.aLightData[i].ambientColor.rgb * vec3 (AmbLightData.aLightData[i].strength); + } } float ssaoVal = imageLoad (ssaoBlurredImage, globalThread).r; diff --git a/Assets/Shaders/DeferredComposite_CS.shshaderb b/Assets/Shaders/DeferredComposite_CS.shshaderb index 8d7a83271b3d684965b4a639eba7e74329c9469d..6e0ff2a40f9907e1126db4f89f94de2523310b2a 100644 GIT binary patch literal 5501 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 H+t-dYB8QE`3^aG z`1y0n-KiXvxHcZf$0zIMuq0J=cBHjc;;}+%8mykG6~iQ|RR;%Bdt0zld^$Q)jt8QN ziJ6A7v#&LHP&|ys%cUB6TacGNU28;a9*xSUr3%jl-5%a>*n075tv(gTnJ4i!%wmmn zUyt;OdRXbN#kG36uO-+l9;I?F*eN~~RVI`E+DtWRsDh3Z6CAj!s#U`{bs=w?{;`LC zPS>Jp;w*;KgT{2tV0pKv{&Y5+8js4eJF;`_5*~Z`bMo&OR!ZX@NlzD@E6?6D_c@TY zaJH^vNqwf6WVK;u&DJiN+Q6wfYV^78-^Ho9I1_6;Du=_y$+TwtskxN3%dSs%+7TQO zKDUN}FbM^xxv;acGh`Nedr+A6r6)6g@L_zjJUU9bT1h6ArzI!}&-&CJOiS+b?(goI zGn>qIzq7S+ZuW8Rh6R>vIOm>wANX@_|32smv*YKt`iX^&6?!M*Txtn>JT#m6%fcIt zur?aTI%j)u)#>}lk8k`C%?tSEf>#`+by;4pxn7DU@#mvl5c(z>6Dk*68`991S ztrns4w$_PSJ-tgZ=f>VG?%UC^v#|4)d^>S?;_r;_nx46ZMMNXERLAEb0Se zAO6g;UmrU4k)Qp{5zF=)X7yPu_*s3+B%7brw@MiK-Vvw1ya*qgIg3wyU{)Wq=huf$ zeKrfs9Cly#?bqkn(Xr=5)bootv-W_~?}+>H(DA39r8*&J?2?9#yj(HtJWbM9O4lFG z6vLjE&a8kz_|Hpm{ilUL`N4>ZKRqWF_)e$uCM^CU$>hX;h5qNh^CDs`7e}{PDo9PLxcm;W`(_{avPHyND~-3v-TK77=Y?@*?Bqx1ZGvIn?PT^X z6WS+Eya91)v3T6Y8r?SU4%=GE2gK2dQxGR67BwIg6 zC9{{jW*?W_B%(gvq4no(jVf_$@#@FzQ239ESb8lc|SZUlB(ppTCH~ zT(ajQXTX=3=vN&^&D8ao)3GyOyh|4IbweBafe_>b&59e zB@Ppt#qM_)_ckIw>RT$p7u#;#1m^}L58sW4M0_*Q@n0>%XI%T4&$S|az=w5n%>Tn8 zaEL`d?wk1BBX;6-i9aIZ`(g1PmF&lV%=v&@{KqAOLo7djUOIM*|AgcXPN)8jB0v5n z>G*(K{3j)YLo7c&ea6mNdc=F3On3b{x0A{Y~BVotNplSt9?}ROCqZs+X)fA%;(D@?AF^?90ty^-r`RUuZqYw;?DY- z!@!{{s-N?{E+Q6oJL4OYnQ!xXQ!;+w<})Ulxw+)xyd@b7Uz;f~=7gD{Z*cZAC!vV5 zU(|l|qQl0;*^dp(pF{eOjc*El#a0$4Hk=u)h);@G*duZ5aLfI+WMbHio|Ft`Ga5@~ zM(zHY(J2wQ&1h9J`@oq|^a&C9$%kxrRg=tpTK*ZyLT!XN8duKg)McvgJE3`GUyuVdKv6Wp3UTVYj(?&tc$@<#}H+xv;aBS-L3l zXX28>@U@u$qc8M`dxBe?A4sN7n~4u4gV{`A1M~aNeY5|H_{XBFPHz|gMARv=Z~Ui{ z@d4-W3+Me@1kR$y%i>^mA74lYvol_k%o(q_x&Jbig8)A}BN+ax#J>_