From 8c376121c3bc7bc49f52712b10e5e7cbbfd6f472 Mon Sep 17 00:00:00 2001 From: Sascha Willems Date: Sun, 8 May 2022 11:43:06 +0200 Subject: [PATCH] Pass depth range to depth map visualization shader Fixes #895 --- .../glsl/shadowmapping/offscreen.frag.spv | Bin 348 -> 348 bytes .../glsl/shadowmapping/offscreen.vert.spv | Bin 900 -> 900 bytes data/shaders/glsl/shadowmapping/quad.frag | 15 +++++++++++++-- data/shaders/glsl/shadowmapping/quad.frag.spv | Bin 1420 -> 2128 bytes data/shaders/glsl/shadowmapping/quad.vert.spv | Bin 1160 -> 1160 bytes .../shaders/glsl/shadowmapping/scene.frag.spv | Bin 5028 -> 5028 bytes data/shaders/glsl/shadowmapping/scene.vert | 11 ++++------- .../shaders/glsl/shadowmapping/scene.vert.spv | Bin 3032 -> 3356 bytes .../hlsl/shadowmapping/offscreen.frag.spv | Bin 408 -> 336 bytes .../hlsl/shadowmapping/offscreen.vert.spv | Bin 1028 -> 836 bytes data/shaders/hlsl/shadowmapping/quad.frag | 17 +++++++++++++++-- data/shaders/hlsl/shadowmapping/quad.frag.spv | Bin 1612 -> 1808 bytes .../shaders/hlsl/shadowmapping/scene.frag.spv | Bin 5848 -> 3112 bytes data/shaders/hlsl/shadowmapping/scene.vert | 6 ++++-- .../shaders/hlsl/shadowmapping/scene.vert.spv | Bin 4364 -> 2612 bytes examples/shadowmapping/shadowmapping.cpp | 13 ++++++++++--- 16 files changed, 46 insertions(+), 16 deletions(-) diff --git a/data/shaders/glsl/shadowmapping/offscreen.frag.spv b/data/shaders/glsl/shadowmapping/offscreen.frag.spv index 4d3440f86e1825933e1ea26445c40f8c186990c1..4caadfac84d8e015c656dfba02a73e222b134194 100644 GIT binary patch delta 18 Zcmcb^bcczPnMs+Qfq{{MYa?ecBLE}K0}cQH delta 18 Zcmcb^bcczPnMs+Qfq{{MVRKnU|?k6+Q?bW3;-Dq0+Ij# delta 18 ZcmZo+Z(-+TW>RKnU|?k6*vMJU3;-Dg0+0Xz diff --git a/data/shaders/glsl/shadowmapping/quad.frag b/data/shaders/glsl/shadowmapping/quad.frag index afd8389f..86815ca7 100644 --- a/data/shaders/glsl/shadowmapping/quad.frag +++ b/data/shaders/glsl/shadowmapping/quad.frag @@ -6,10 +6,21 @@ layout (location = 0) in vec2 inUV; layout (location = 0) out vec4 outFragColor; +layout (binding = 0) uniform UBO +{ + mat4 projection; + mat4 view; + mat4 model; + mat4 lightSpace; + vec4 lightPos; + float zNear; + float zFar; +} ubo; + float LinearizeDepth(float depth) { - float n = 1.0; // camera z near - float f = 128.0; // camera z far + float n = ubo.zNear; + float f = ubo.zFar; float z = depth; return (2.0 * n) / (f + n - z * (f - n)); } diff --git a/data/shaders/glsl/shadowmapping/quad.frag.spv b/data/shaders/glsl/shadowmapping/quad.frag.spv index 13c24deef5178a8c4a459614e83ed1c1941e83d6..88c56a212b2fc4a6c75cc1dcdbad1dcc2653b9e5 100644 GIT binary patch literal 2128 zcmZ9N+fNfg6vjtr3j%VHyC}Bc1*4)UR}m-|DGx+31btp%fi*4Ll%few7-Qm}W&Epr z(fIvlcVJ+W!<_Fs*EzFO8XHENjJal7OtUGOWObPaF~+o-oZU;C+neLZ^}X@QspojK zn?~!1PlstT8SO|Vh>kE!O6Db<@`G0aX^qNi%x?u{#rpnPd9=v386AZ|EjkU?!fO3+ zY=1&Y@VzeE9+dX1^0aBE5PFC9ot1a$G-q`|Q?13H!`*rm%PA)>eCYK{6n@3-IQpr? zdtupfNjxVjM+b-X?P{tn|~jYTM&-aO;+`J$4D7e2T5!FMVG^ z??d=mJ!76|zc^#gFzDl;QZ0wI)wmp!UNIRv+vsTLLxOX5&hbfoy%ro?@>`HYHK+v@ z?Hh_?1}ysB&|il~Eqj^czB;X6636WPI52TViOU6dHIDiEabV)kBrXo_Y8-dq$AO9a zC2?_Z7jemXxFh_yZ0AQFxK5Abe&BkFH&m^rhU!3*u=qX+z7Y9|*w{$TC_j`PfD&r4YJ3!b$oiGL-X z`(RGQgSj_2{HgU?V$9hR^_Qi=VV~Ai=!5yQ;QokVR^;N|c-!m_^ESZ?vUA1>3FiZI zhA9dCe^eHFnwH=L|6Uxm=Opl~MOCE+967KrO5m_j4?LH~E=lM27XEw66{T}VY+K5} z8CN7lPh9QQ)TZscpS6@@=Faa;$}yiUotU$%ONhrGJ2mN%d1L#lTbq?ISI$A7EZ)J4 z{Fod6514VQb~n>D>HduQo%J!lwcust<@@cG@XhmGyP5T+JpGUl?ED9%}>oVkpD+|#=FvaFYwMMFP)qY7o-#OEsYtGo|nKopHb=5a`>Kf rKgWGxa=1HxARQlg*ULlcRgtl5%#$BQM4ze&x2jGn)JV%vfULvOFI42R=V3e?WKZY4rXn4KYYw^ zIn3SrJlIQ<feb$ za61umXU?4PeQD}(58{`ksRd6wm>s|ozbs8W&wWO}kEN>;4)cN=0cG`g(Rj#Xz9->+VD9ix!u+39g&7`6h=G46 zj@~O0c+M+zr3V}}@IRBl;iDgTJLay*=ADPXh}^nto+-WqRp5@B5_lKyy%l{@f9Khb z+)$2t9y#`Npc`lVG$WsQ{Pbi-_N!0Me(9-gN!Tm*U``J2;HKi(TSdZ-$E1Cye3$th z^KIra-zS(}#Cl)icz1noQ?jW~964b3P0J?tTb%8hY~FKtkC~B8O~RKnU|?k6+Q?bY0stA{0;2!` delta 18 ZcmeC+?BL{NW>RKnU|?k6*vMJW0stA-0-*o^ diff --git a/data/shaders/glsl/shadowmapping/scene.frag.spv b/data/shaders/glsl/shadowmapping/scene.frag.spv index 3f308890d0cc84689dd11c67e8d8e1fdb158b32e..5f723ab7c6ae77099610c6b5f2221cefda743a2a 100644 GIT binary patch delta 18 ZcmZ3YzC@jqnMs+Qfq{{MYa{1uVE`eY13~}* delta 18 ZcmZ3YzC@jqnMs+Qfq{{MV-#3K{`6L2sIl%nhy$b6LZXE&s{2`ULff zT79biX|0~;&fU|E!`hs^fBW_9v(JU$p~*c-@?5en*_&)8{dG7Q0!fnn$!M|9Ei@LU zwtKCq^B2x(aWEM!47GWYAJ+)9*~~if&qMp67odaC81yzY58Z`Upf)tj&k*}x1ga6C z8lwhcoP4J@o44~WY++;EtkZ|IF$Xq_d3UpEOfhq2odE=~__&Xsy7l;pZ%UqCPNlZ|1Gk^M=1U+u8a?ud&snlmTu} z3!Kxz4r0{cpDw0N8yj&)#cmZ)QR7MEokuzRNO6Bzrys=nKSH-fNc-)*at8~hUrpBv z%zFk~rF0>%(c<308XL`4{$w`KyRH76dXB8KvdWgsk;{7@hdjHocdqQYmA!Lim$LV* zY!Bwip$g`_h#dv9 zPxit(yc1{V6yyqdqAwP*--GHMIzw@X+B-kW5zlXia{o?7itmRqsgomEX*WR)o=1KR z&id-malAaEvidsm-jWx;T*}T}==Z@JJM_viJ7Mn}YOk!`In>8|-n;p%_ZYtqv)3Wl znNofUUi*{CN7%I&8;5h|B8EE2x{tA&Q@weW{jP|a=Qw*EGOl@)Pe85{$S<=S*Sf}e zY2KMwl_GDyenT1)NiuCb<*y;v zSt>EkH;^{sL81G$#H#wxeOIyf%=(7zdw6}qPrW+(dJi(Ev5lc^ob^7uwL5o@*{wJ3 z<|lajEbiHr{oaaQHsPkNAV1k68HJ zfESls;j_%G`z^T%%|OQ1Hu`%D-g)*Ot#=O6Ry<~0%s$*<{~WRpw;^MA?gdCZYWbqX z#9dKK$dV;R!VTGU(1JiB=0{Sw}Lio6YYG07Eqe=XnjS76#0 z%WtD{-0u(Yp6fnjeBa>%NIc%xL->1;c=$Ep^{c+iN66ygw+8C>}}k4;Zz*;Cnm{_?C`hqE!5EIW`*q`keowmf@p z)SEqb{;U>T8M+?PvF+@x@#?1#MrHwhTxls&vy4%U7k#gpP#}rl**sy=o z^tXH4`R3MWZMVD8f5LnJ#8U}k%KZ}i{ksM7zSP5fP##*BkFkrXeXzImVcD>q{zl^L zHC%_1q~In}@8QFXLawk zL?-*~($CfAL{9%D?4ys3q?i3e%%=T^WsI<4K(pr)SNd5~-A`S=c@Tbbd;QE^_fyyJ zAqYRYy?)-Q?x(KbKOp?%p7@ou`<~j_MDOo?jBmeu*OR~%daG2EehRtX-^EHdkM_Q8 z{XP7q)XnL+@2PGdrpRjE7B%Rvd=zPdy$OzCZ|&-yH_`W3vizk=cP8Te8DwL}xw>yH z7xvDG_UfKHBc7Yj_cWjNp1{i4kTdrS?E1;+tL|@z+!6E_*_*&vrz`ykvg((aL#z|B6*Lv z>wC!7qHgV%Dn0tlIf&kF!qA-aG3XXWt_06Mmk1W?#Pp<}|i3w2iyoLbi5i<`;JBjknoE zw$Jk3UER5tyTBK#oqci{<3E@NySDcIESLnB(cKRMXZQ-%&boS>`M;d=>zQ+{ewAp> z$1A{@aR#;bPOk#_u<={e#@Pv**OBG_CXPN$pr3sBokZ5J1;TF{Sw8&UKyCv0sP|1| z=kO-6?b%yE&K2C-$a3~8xOXbf-mO;ia2i>E?LD6Xe-YPNIRnhEjWs)OvtSC?5BsIA zUEJw?uF7p}cN^KkkYCw#6V&sSi3 z?6b^%F9*83UIRz7B2&OWr+mwk-fIzfZZ2hc_#x1%Gr;$KXCp5&Bd;|B3j+s`&jiHGlPwwLMeG=u!91WshQC0y H7C;ODy7UEM delta 133 zcmcb>G=rI!nMs+Qfq{{Mfq{=fXd^E(qoyJQGmy=|zy`$D3@i*BK$;1NnSodV$QJ<8 sKrIYxlVus@9Y88TB7#s+JD@rk+ZHGXGKB{!50V3!1mgb%+GzpA04DwiH2?qr diff --git a/data/shaders/hlsl/shadowmapping/offscreen.vert.spv b/data/shaders/hlsl/shadowmapping/offscreen.vert.spv index 886d2353cd9b91df1b4e21cb2dc320f96d7b44a9..3c5406dc32c691a937c8a994489a96acdc164c35 100644 GIT binary patch literal 836 zcmZ9JOG`pw5Qe|Jb}ut8-9&R4NUI2_jd_J-v;%Ka=i97F-k9{Y*+k6w zB|LlUs5jh+<7s@QOzjM|j+)b-MML;Ft`PekG5M-|=dohOHG17eOkd2nj<>ph2;A0fU-noA`Z)X@g zW^Sx=o_*ejC-xnoM9%$1>b<)X=G`uJaE{nBPOY;`m^tGfEQF8!3Gg71oVzA@4&dd) zGxVxO&e)ye64_q7`{kT7gm;d2WIm5qkG$A-Gw19Aog?@%%qZU2nlZdH>?wn%@Yc(l zpT@g0YVhvG>f0f&CUwh+)nKd+anuks&cnOU9b4R@I;{1m>x=FJ-d<}LFzdx?@;edl zg4H~Zxo?m6GABM@uDTa7wfVouseK8Pmve^iv5d*bnJdK3I;Y276->?(xm990wMWj6 sTTVSSItTIVnElq9_dEDxuDK1&y!+MfyUMA<`~)Uv&ifO8vvC{y0XkbS6aWAK diff --git a/data/shaders/hlsl/shadowmapping/quad.frag b/data/shaders/hlsl/shadowmapping/quad.frag index fb90f429..419f9569 100644 --- a/data/shaders/hlsl/shadowmapping/quad.frag +++ b/data/shaders/hlsl/shadowmapping/quad.frag @@ -3,10 +3,23 @@ Texture2D textureColor : register(t1); SamplerState samplerColor : register(s1); +struct UBO +{ + float4x4 projection; + float4x4 view; + float4x4 model; + float4x4 lightSpace; + float4 lightPos; + float zNear; + float zFar; +}; + +cbuffer ubo : register(b0) { UBO ubo; } + float LinearizeDepth(float depth) { - float n = 1.0; // camera z near - float f = 128.0; // camera z far + float n = ubo.zNear; + float f = ubo.zFar; float z = depth; return (2.0 * n) / (f + n - z * (f - n)); } diff --git a/data/shaders/hlsl/shadowmapping/quad.frag.spv b/data/shaders/hlsl/shadowmapping/quad.frag.spv index 10e04bc33ac09f5fd919936584e46cadccc68478..c7fda72a6a8b3360c8575b9624551e76b62060e9 100644 GIT binary patch literal 1808 zcmZ9M+fP$L5XP65wqBvg9TZ#ej@HYAF)>~cp*&fHioTfxoZvAnrzxkXJZX%Hf0loi zFD8D!J!hMxn@o4+n{Q@kX7@CoTPhhdWQ-Xx5B19$Gr0`OTO04FDVbsI=5y=ur;v^u^{H~t*%B~h$Ss0I!_97o|7{0^hX zcDx_9ESAR8b1ORdlx%l`JvHR=G9Qa?#z#{7Iq3D|O&HLO%S)dp>lU&#o|B!{Te5SF z4r|9jx7J+yu-a&By?!9KcqMgXOx#PXb9?7wb7iZ(*0jFiQ+EURyl`)p{R^n;R_JR% z!onu6Z&ULkPA&Y{RS7e~=01Esw(qAO-;a%-wV`axo3)f~r!aDrB^x@&@tCcPqXyz$ z4q$_E@cg)(Y~sF4TrRM|I50ns*%0?f;^M#t?cS`n+_$8R~(5MLW63`BXN2GDj9R z{qY7^*wn*2CkC7I(WwF3olgyqm5DR)v8ds%*nES}#HHq|65_Gbn$q*JnQ2wR`8&!* z-HVcn1pK`i^vN3nCl~9jxb$;P;@;Paxb%8mLjAlC-VEo!y&=KpcsHdx9&g9-Zb`@Y zD?8)1blwv2KQio&ba-GtGi=$zT6dmQow9Eu|DRDlD?%CiIe8jJ|1%iGQ*$ zCVs!OXX@IM3^U(+GjnFV zFMbu0Rdkcm2O=lklshYX__d#uZylD?PJEOIfvyydqgw zEH?Xf?%M;yr#*HR!_yglc*RZoy_3UT^l1moSy9b1ndxJf6~*rHp9_BQlJKlFwWtF> zBTXIr@bl8}%m+Uw%`WgSDC>fBNuC91Y+^1+GY>UN!pqXc4Jn*oz^SD3lzg#%_DcFO_NKeI3c*!ra&cR!ZqZu+^cOnN4k!wkQbeNmcR?%a_O zZ+LeMzZ%1@$MD7&uI4bk)N+{p@U3#+J>8$ZK{n5Q?FnuvaO~@egk2EJdp?!03(I{b zo1C`1?D)Ba9O8DgeRl9df}dE*a%N>cCmtk!*m?M?UfJ+(~~mX*l{L?y>|QTruE3s(wfE7k(gW A>Hq)$ diff --git a/data/shaders/hlsl/shadowmapping/scene.frag.spv b/data/shaders/hlsl/shadowmapping/scene.frag.spv index db20337facf441bd15f5c9dc32cd34e70a72c470..893c37bab90b71a6e9d13bbe89aabf82b4e5280c 100644 GIT binary patch literal 3112 zcmZ9N+j3M@5QaAiNz{Y@5w#t_ZP95^UyxUkAA zuY3nfZ@Hno(FefC@mOW)_w897wyxAqcmLgMt?pjEhvugJZCSP{%d*bw7XP}oXH7Yy z?8R=+T6252GF~aKtWKBvjvg_tGiz4lzOC5<*=F=6FkhQpkk>2M0$KqVW!qqlQE%o? z-xNd(fA^u+7iv>;_0hqz=q>EJAGvyCsb21#F3--_X6iZL#%)=)a-}xCcx|M%G*Q34 zy0)w<-_wrF_pH?Bm*(or4ZbbwK-t(cUi7u*xy~+>uhy2!=c;2P0~IRte)CWKV6{>m zv+x$OH}Awx3|$#iRs@!L-|MNW`KI>jwTg@*TpS(0NFg83ik?-65pWb=L7WhIP z8x0sHD|_XuxwP%|qq)_v&0E_T{pPD}oVGb?8>ekv#r^hoA8_f{?g4S0y)62*!@raG zPV5pezBk$C>^hw6t?2r9k<~V23FuSb4qUsjA4JMIH?emIx+~(l(0{pmw?FKixp)0k z*t>H3=M8&z!~fGBCd?W0d~@-RSlX@u&t-@t>1gQC*b~J9b+o3DSBQ) z{{!nuWIuP?vjf2U!#;@a{b3(M_kL}A_7w2`^RV{$aN;~;luV3yI`R4fUlXtI8Q>Yl zc&2?S1A8<>jJ05Xi1CL(evv)q+XvidKH5it zvnwAl$I#suF)yGSBmXD;JC3xE%3rD3TwVm`Yj0lyCxAZhcp3P;HTr(f=f0D`_tJL? zxbHT(^&n3J{m$KQd=)Q$~#GFI-{D`Td`xf$} z?DKbP6u4Jk%;b4==d20*n0h&u`~6`vmw6X$Q)cZu`=3S;&C&X@5f(q+H(O#(UV zQFn&hkrzM*sPg9KbrG0@a5o@mFxGl)HK^b_?1->x9m3M%=@vf-vU37h} z;NC;`F2BR5`F(VGXD@2LgzkQO6g6K)H&);G-0jTPz-7<{?2mI5bt_|brjp;cb&ox< zPS0?boGoM4;hZOD&slV4Jkxoym&%B7&SI{L^XwdH`wh598GHP8;#)B$zEQu8n5PfW z{RZN@o<)e>vbo*GGoe#0)i?cJ6IC~R)yn=45K4)hZ>2h}TeFWspT|H*!WAx(e z%wd~@a5+0MC-dmeiF;yB7SQG0=Zabu(e=54TSE8T;+%YfEnl3IWo-9bcht9nZmhnT zlT~#2;+#Z{%9xWibbIA{xX1eAjH~GTfbU^k2Q%1>yaue@**E}#zh2-Ep?{m^?FPDg z^mnA+-cQjz;~>y)p5GAf`JVxKV}iSxcyo%LeU2{g3hoPZInNI6%fvZ5@qghuy8DgS SZx2q={Wjz}_?r`sgMR_X#`aYJ literal 5848 zcmZ9Q*>_Y`7RE1x1XN^@NkB0bltC~mMp_$DLqr?`iAjvw?NpEw;!096B;bIG-Qu{k z+j-V*XMOd><%=$#_1XWxc~}nZ)NSkUcXKx$@1+j=`@Vh7KKt%7R6)bk<dsoOPtOj; z?%q`$sPElc9qp@KKRz+0D<5+-HXpOQIy^d58=KUplVvidH}y5;`3{b>?x~KoZtLpV z+TO`qI=}Bw=p9|1T|K^hBiWmGq4#aRw4$B<=X;lYr-aY?)F;OC zBzpU=>TB=WvbirGH|-C#wN@+9`+K`4#z!Z{9p6-F;%)V@;p))unoHYJAF5l3=;s>r z57zef*LI*aCJua6BdQ&YAIZL~U89nP~I95D^+@&S5M z`-6+Ng-W`<#Wu_2&bN%_BX=ITedN|yZmx3cDtDaRTFM3m88W-b}Oqx`O)-K5GhoI9Px1Szz-CJ{xSl3;BBvwwb0+JeTIP2z~@s&39eP zo6G0X>|={~^T9sB7l0iTF&Bd0fA77G!56`^Z2wuokIeZy2l?Vj|J#dM9nYFM_&&yr zNAA;1o=YZS-ggPTJZtJl6}sH_IRooU<`@#73?c?4%kn8-#{&qDe;zsyEe;9{MZsd zuEbX)+&!=|;jY)Jgqz>$68{h_>f`v2O8n!58}E~ZyH`Ig@y|;9^Ai7}#J^0q^M93a z&ye@O`E6u9Jrk>Gu6^+1!S1KvYryWO;A_F|CwT>X0?l~c?4p&}R+=%5<5>IK=S*gC zZvE{nrcOuyR>^SF<+b3e2 z1U3ergE3Bqs7H)-U}Jbc8AEO#v1h~Yg{Z+PaJ2)>Z%x|3YJQhQyi?(kljF>LJ(_yG zsO6u)YSzm*r-6;7?!2BswV3yGa60dw;cDr;8{qLCG4B~@>M`#|uv*M}CfHc&&g)rM z6SrXfeieJhqsE?ZYZY^x1y{SJc-OPRYL4^l%YWjIYsY%mX=CgruziAefQ|JAb!lgg zbHMgd|DO0euvgQ3eunGcOj9?uIAWa(PV?FVS2Hi~Ah~&+hjpwr#-0zhPw)%CX>QxtzgfCd3g89^|=qWftw5NzUcy6pIEM!lQ5`@P-|Hnu+V^iEb2@508uYoqTF-1k@jjvR*J z>Teb6I09B%OrN-8>hSWoQ8e{8i*eV1)tv8@LK}k{Pu~yZb0^lv{h)6*P0hNC&B;4w z9PFJV_qW&t-0yvP1-l1sK3&{z)?hDK&E})AufFRc*5tOLUN?a4uilUL0ex-+JE!wp z!i`=*y9umre;@BD*L@#cpN}>6J6tVlbu-x9();)pxO&w1R012_t{yf2JJ@mRQS;lu#@A=f@4)(4bA1PBYSvsF`(z<~JY(V0%42=Bk?UPx_m*S* z%_0xqC1ADSmx5bp*5CKM46J59$LmwGzvt*L;N`Ua^q2n?tQL2^J~eam9Qz*H7=HzL z1ue#3308~o`qa|<#IrBI8f!dl#H)fm*AZ_!SS{k|Q*(Sf*6};A@%{r~-!bCVz`jGA z@oT_panJ7rJ4W65tj4NEydSBFn)}4x4L{M!zZ-ro^yu^7q)+Ux|Dma;`}7yMdi-wq zKUgho@w?$ybmy^;d47yl6Z<>PfA@*+CfD>1x({yObYI_(rXJ_xA7Hig4*Dm&JnjKB z^*9d?g4NPH=pnfA^m!g$#rk+2^gT>dbKS(&**oYFaC!$l3QzB#$Kd7@chKW-HJgvd zSl&TTK&**pK>j4${_1fDJq317=ZQP$X|THeec}#!2CmP?8s7s}i?w|gY;Nh=K8L0r zHU1Y^Exm*O4L4TAc^+J@`3q?3QS%qUj#H02=q0f6^;z>*us+sY-^(;LYc7s`5_eGe zw4SS2A8nk2*TC*A$KH#ThtJ~Y8h5#O&J_42tY=4`WBj*?y6?IHJQchO>u)FH`0s%R zH1(Opkxv8j$u<{0<9u4^5vP$3#);ZHt_e*&;!Fqg$>ZoV&S!A-h%*ChoH!@OIRs5T z;v5R*lgH6#oX_Fv@eYT9jU9X@+?;3f-D%9j;e7bNCiXW#|EdVOeTRi` z=dh1C`R_iph`$J|CO6iRaMwS^FNWJkJ`8S$J3cXjy){U{ zoUKh7r(X1Jr+kQvwLz2=r9`?QXcAo$T^BWr68eXISAj|WYmr?2aa78l?p7o!uEAl* zKuP)Eko<8mlr80CY)8kHucf_exuTm>^1_F1&dR0l*bQ^_RrX5<4y(me=Rx`Nm+IEh z&Rz-M8cyvFFIG+@Ugn_Q^FnFo*u&`WeAPj&My64#x6#d^e3(7kInEZtt@Z8ou;AvG zR7UQIY)fH2+{6IR9T8p#H#ZjYGJrF~%4yXlGXpqtHQW*<<;|=O-(LB&6o#A2qr$MU zgShQwWMemR+nBR8T-k9>9nd@e9CYT{@3fjukLb)EJH4UfhfYtvKfR!{KkW42$5Xc- z&)w+UgFmw$5OGY;)YM>2xAQhQgEe*qqn38jn(~+*c`c5bh?|dL@i_eaIC>}ULS(tX z;&EVp95W*BkI3S{;&EVp95QhX(c+jpSi6U@JFu<@dSn-^;1V&vwlH0`7q9NUe z%&c_gOz)`am-d@ZznJTlf2U+(s13a<(i7s{(!0geB9-Fe(R)PPO@8!V5&ow4N%sA3 zN#~gTwq)+>)89Md)PUZvSH*t8e6kv;vp?z`zqF$6ic<^oK))x>-SmNOZ;~A7_r<9d zd#57P;u#?sab$c3#K}nw)X3cNCl31qaqQ%rmQD@4Z!mOfz_-rR>Ce~MyXn-(&WRzO z8hJ~;&iCi*e1E>q_h&l!YQN(_Fsw|}`B22W;4MJNW_#peaogj_2F|;ITig@RW_E1M z?Wu@6$xRM?C-t4D#hDW)Bl;`tnfQ$QX2wGz`Y?T1GP5)NxnyRypotBLXGP4OHwNLy z{Vzn=%x^@p`SCu@Z&Wfi^W(SH{CMZ)Hzpa|2i?v)92Ze5$FK>>VC>bf$q1w8Vzi4_ zl8MJ3J9GW5yzFU8gq`~gdmZ7_YSKdqZW&qkxUG@ z#mq_uhdA+=Ibp<*$71FsgF_sPDQZuH(icS3LhgAHeNf+`h@E0*2Yg#gBHIDK73_fi zmLr?pxe{UE9J}*ZlzUYeKJ27Lxw$VV!Ves~>>-Zj`Wd~;bz%6}J9#JBYUKCN z-pPB(*lbUE$>an#Y(p|Q-^i?9drF*rBJ4<05XQ&$uARh=LlQ^=31;j70YVm&i-?em#d0h;-o=|(ysqsPS!8>x_1X~+ z5s~-@c!!8^pW(hwbKm!U-}mv%3liUNrps=PXsfpB`>LzDy1IMZ)VQ`K2pWPQXb=9@ zFJo!Y7&EOwbF6#&OZ~a2`e<(RmTvs*K@%$WEeV#ycB6jB%hd@0-i#zGX_jb#V1Zp3Yn8PkcQ^Ls{svU@G|1Q)T@!YK`rpqJfm9h8yEL18m(v>bMe$XMt!Bp@YLyiafiT+e z&0*FhANPd&!7$vJz+kVcv3tAre>nDbf@H7q*gW!D9D5>ecZy5LG0%@<@5CLEST4A9 z9Go9VkBFO*)&F?czeodS$^*zH-4X!}Nq{_Y$%ViV8n&1;1rlt;^F5fxk!21H1)7tn?iX{`QkPapEkF~%nCG^GcD%s>Ve6nnR z{wcx?^RJdoZHCv#=1#5>8%k3L{tk7OGY?Zj%^j{^i9ZvZDvp}yVW{X%Y3_CCFnw;2 z5KB+akfuk(F#mLE{P5s2rP&j;fY&)p{BlK|CEckRXG>#uXf@s}esZ7@V%JM^Kk#=7 z@0O;=@c8r6_~F1k4%^zj4qLtfVd}QM7ab0z>EVntbE%(vhozYhw_TWC@h0KGozh(r z`UR#}#5OogZ#WOb__HZYtoi93`ymJU)=BeC@iE^NAM;J|G2ax!#yv!<+%%RpuAgf9j_HVCGpr9+RE!$K&GQ{eCE-rsk;<^4dIdi;0tp)mZ_uAYx%69?a>{ZZq`686lU#c%mOkxiYf$ytM$ z%le$zrxMQJ`uLgS;2GA(t2Cc=K9?}Z@_!+l{Pd6fVCLBO<4f6H66?!Xvi-gkg};`- z+ZlwizmdRO+_$pRao>r9_wVHQ!thq#53*(?49jx+y7&d3|Ei*GlK%j)c5T`K diff --git a/examples/shadowmapping/shadowmapping.cpp b/examples/shadowmapping/shadowmapping.cpp index 0592b4fc..b0345ec9 100644 --- a/examples/shadowmapping/shadowmapping.cpp +++ b/examples/shadowmapping/shadowmapping.cpp @@ -56,7 +56,10 @@ public: glm::mat4 view; glm::mat4 model; glm::mat4 depthBiasMVP; - glm::vec3 lightPos; + glm::vec4 lightPos; + // Used for depth map visualization + float zNear; + float zFar; } uboVSscene; struct { @@ -384,7 +387,7 @@ public: // Shared pipeline layout for all pipelines used in this sample std::vector setLayoutBindings = { // Binding 0 : Vertex shader uniform buffer - vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_VERTEX_BIT, 0), + vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, 0), // Binding 1 : Fragment shader image sampler (shadow map) vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_SHADER_STAGE_FRAGMENT_BIT, 1) }; @@ -409,6 +412,8 @@ public: VkDescriptorSetAllocateInfo allocInfo = vks::initializers::descriptorSetAllocateInfo(descriptorPool, &descriptorSetLayout, 1); VK_CHECK_RESULT(vkAllocateDescriptorSets(device, &allocInfo, &descriptorSets.debug)); writeDescriptorSets = { + // Binding 0 : Parameters uniform buffer + vks::initializers::writeDescriptorSet(descriptorSets.debug, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 0, &uniformBuffers.scene.descriptor), // Binding 1 : Fragment shader texture sampler vks::initializers::writeDescriptorSet(descriptorSets.debug, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, &shadowMapDescriptor) }; @@ -542,8 +547,10 @@ public: uboVSscene.projection = camera.matrices.perspective; uboVSscene.view = camera.matrices.view; uboVSscene.model = glm::mat4(1.0f); - uboVSscene.lightPos = lightPos; + uboVSscene.lightPos = glm::vec4(lightPos, 1.0f); uboVSscene.depthBiasMVP = uboOffscreenVS.depthMVP; + uboVSscene.zNear = zNear; + uboVSscene.zFar = zFar; memcpy(uniformBuffers.scene.mapped, &uboVSscene, sizeof(uboVSscene)); }