From 1d0938a001020d5a3c2e987afec6b797f3660867 Mon Sep 17 00:00:00 2001 From: saschawillems Date: Thu, 23 Feb 2017 21:21:20 +0100 Subject: [PATCH] Shader parameter [skip ci] --- data/shaders/pbr/pbr.frag | 6 +++--- data/shaders/pbr/pbr.frag.spv | Bin 8560 -> 8604 bytes pbr/pbr.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/shaders/pbr/pbr.frag b/data/shaders/pbr/pbr.frag index b102a5c8..cd69d6d0 100644 --- a/data/shaders/pbr/pbr.frag +++ b/data/shaders/pbr/pbr.frag @@ -86,7 +86,7 @@ float PBR_Shade(vec3 N, vec3 V, vec3 L, float roughness, float F0) // Visibility term float Vs = GEOM_SchlickSmith(dotNL, dotNV, alpha); - return dotNL * Di * Fs * Vs; + return Di * Fs * Vs; } // ---------------------------------------------------------------------------- @@ -118,7 +118,7 @@ void main() vec3 IBLreflection = texture(envmapiblrefl, inNormal).rgb; // Fresnel part - float fresnel = pow(max(1.0 - dot(N, V), 0.0), 1.5); + float fresnel = pow(max(1.0 - abs(dot(N, V)), 0.0), 1.5f + roughness); // Reflection part @@ -134,7 +134,7 @@ void main() // F0 based on metallic factor of material vec3 F0 = vec3(0.04); F0 = mix(F0, lightColor, material.metallic); - vec3 spec = lightColor * PBR_Shade(N, V, L, roughness, 0.2); + vec3 spec = lightColor * PBR_Shade(N, V, L, roughness, F0.r); reflection -= spec; // Diffuse part diff --git a/data/shaders/pbr/pbr.frag.spv b/data/shaders/pbr/pbr.frag.spv index 84480b3cfedbaf4a9e0a46180e442d808b8f18ef..2faaa6b5f127bacba4655586193b08bcc8cea814 100644 GIT binary patch literal 8604 zcmZ9P37nN>6~;ffb4NA>M3hBw02kbFM+w=N0UZG)x5{u}W|)gJb8%+CN>gx2Gqd$) zrDak^dsbGoSTSUlrM9PKi)C8bzL_mr|NnQtGrn^_=lDL)bIyC-^Df`}T}s1e?vrK1 z_-{nEW>}U#Inw!mz8XC-`H$q)&SPJTPr>4 zyRdt(r6gO8jU!$^1A*#Io>uK*=x3ROUvhmVc9VgD?54}v^ zk+d88Yj_lR1r?R4b1ZoEvK8x_n=c&fVE%p4+p7JmSJIaGZ$H}Bt}UId>n`gBqKwQY z(l#$&bN2dT#C6@3{>~zcBb#S`V$9Q$_i4x`6#V>xA3&Su&H1S8P};Ri&RxH*v$d^# z*0zq5=Y70Cy9yrjy{zC7zpchwYP^(P z0bf?BjeR9}OKWdyH?6f?HH4S49q<)QOy4y_d=1%kLwG5>0e*fFd*cvaLv~Xgzj+8R zXSc$;Dw{g{*H&Fd#w%yHg|@WXRpmr@mhM1n@7dPfx}~zAtGB(wxx1cs(bo2=oS*SZ z&+2M#cdPE)|3TW?`joN{gU?&ChHQ;FHfBq2b#wd1{z{d%q>&!R@ET;@)wXt%gy#FP zt)RMf$J%qMuNlRO$qho7dyL}t8htUT2M-N>6d$m}1ES4F)A$t_PxKrSz z>`8cAr91aM1+L{XM?>~Byk~27cV$Z-yqrA)PZQdIA`4J^_ZqTk;Jz*G`8wFY37($y z8Fl=yI(|eQpEZP+vlHN~Q*k#(3{mdd~AWX3f;)nVuox2|gX{ z9?8A4y;JDM9ndg%X3IIRomF5q)Bo|TWL(d$kN5gGEc%%v?I*Y2A}so;)%WxKr2XXf z+m1y)wHNx;YH$w5?ZKLvk#!m8ynIh)U_Qa8*J#e~0XuIW$JkqgdA>1;7IUc0vlizV zj_chYeWR91iRQUC&O6=u9K*iW<5`}8`2@GV@OwT}zg)ld81LRk{c`tRZvP4V-*!4< zT9^1hP$O+qZVmZbx}Iv&ng56at7+5mjIYzw4`Qr?3f6NPx$vupMc!kG zcg)({wl55RBwCi;xhVK-*kfZ?4e~j;KO5xp;SW97GT47X%|FOD*LW8B-j?&Gf#7ei z@x{kdjq`a2W{jq9GQSUQr?pn+nLaFa{!GR5PLOe~!@Fv7uFWg>9fcO-+zGeVFxPV@ z+;KcF=6N5jV_27YZY=>BFi#{zju zzB4|thd!87G|9JPDG1-@;UI>`z7EK+D^>6<-Y4`&g*P2fBE?O z<-YrBb9j%0 z7dD2IDE|Ov{Blg6ecVs=#f<6u{0YoE!1p}ze6rAke+uq`)SM=^%(0j;22B4 zV|iB8BhP2Su0in6fz!O7ha00FdA|UTy!y?%n^ryYd=czeR~PH>C9qofzYKQXW7rAn z--DU688cSDc|E&(FxTdO+OJ{vVctvTYNY)-rf&Q|!6W{gaO1tFBK|?Jy78WUxjy&* zTiC+|x2|tvyRbM9-vJw=9_Qh^V0F#MdH9Z--*-uWY7iQ-*;1g0^<*3Y$i3^PXE{Z#u2X3hpozh_GQr`QZkzx$;2GtAgo znEuU}W9fSw8^CrH{eJ=W{(l^c{=WpeWu)6iy=Wm$x9*x;wf3=wJ z-@*E09sdC~b{eM7y1Wb3V_yFRJ1@EW|15Sd7U%0Z`>HC|ur+5f=Cs7Fo*Omhx{o3lcn;ouTxjQTl6o`yo#6?h81@t4iUti|z-^(QU3d zV70KQ=@2yj@|qmS+{Q*7`eWQf!HyezI@~+V*e0+%d^5q`XZmJ<<>5OVyu0xE8$qtm zbAKdwpzs|5mOIaV(2fGT4sll)e>7a(ar`|YpUbabeaC1dE3&3&yUDt(h z-_00z5nL@S&emcy{_?YBUh^1hUH-PyA7d;7s|8;UPRCpUe;^sN8Lk!RrHb>0$WU!j^jee(q?W-^5b1GQfxLA|Zz_BL!=U|cJbgh_=yOfv>6%Q0`;5n89rjP~gajV|c6|<{_1}-4jWaOY;LGZGOTl9;7Q)RFH7^1$ zz|>>ji^21;MOe&x2{`7h-+9LzmxA@HdA6-dEyi39c22=pfQ^a$Xa>8+>QUE9u>JH! zzg1xSMV)7YjZ=?W&H|fDpS8FiYLVk?uxlE8H8`zh4cz|fQOjDe{q#k@bHHgW=faIs zk6PA&&85#;+zYkH@nW#`1wRjLOpJRz*cf%sjyyd(ey4mUW1gK!v{Mp1HNgiL*t2p- zg8e<~nQEeqGjtI+JyRDa+%Z}cZd^wl@2caM)$wh0{E9k$WgWk&j_;`B*VOUr>i7+H z{Kh(dQyss#;IS_+fxBkGUs~|krjuod489TUe)=BhZ^MjHkAKIvgNI?hL;B6@zNtr^O<>PU@J_IKE4||{ z#msvQrhhZ$88^S@K!4=x2B-OZ;LaoRSHZ@pNB%9~$ge-m@43<+`Fp`>{yw;KjQssz zW7H%6R&eCkpXT?R>W}=FgI$l{uK=g{UkNuxJ@UT_9QpO9`91gg&F5Oa8goq7?#hCP z?`pW`K%eJdK9^qh+m4OJ?4!?^D`>Z4(f?Yo>!r{4Lms~C!P5%gb+q!x{TlFS%s%?; zzk^mi`o9+3QTTk9s7K73!RCpWw}6dP_gb+ zKUC0)T5*dT2Nuxc0L6)l0~spfo;X1N|8vh9zT87zzUO(~_j|wh8|OQ>b^FX7on@o= zZ%lU9s4Rb`Wc$Fg%=Sdu@mWL8TiZ6Y%^e)-n0xXm#~U~?tFy^{ld`c{Jy`2)FZZe6 ziG3PdO0qU=GV%Hu5L8F@EV~cAgqrp%QOkIIT?3tieVsiUHh1@wH(xTR>x2dTp_k}8 zmUi<{6^{e2qM{OYP6Dr8v1(&$>jlFd%)c*sM`dX3YT6S2O{8t_>F;jeaOnULWo$N$ zwsqyYvo;nZZs;u!br)G2**yCZW1hCWPklDE;O7;5f7(26&c|hk(5_#0&c+Sh?H!$S zws)PhAZ&O#&xC4gy!lDrESEwAH!SWv7EL zDfAVzt#mZE{aZaupU>N?eDUEp-SJq3^XURv;o-(KZyRbH1} z4qs8Oj(r8VzkQ&+m)2UY9Kq|do$ysmOyAWbeD&G2BY0hQJ^Z{P_J$F@`s~IUe$xnE z%5H`Cl(%#bt*^L@j91ET3vGF&r^1QwEbT(;?AzYk-e2C-Gtk-P++EMzwAH;T#cNjnj|#ekL~5o z%V>r*-?+`~y?N!<@-g_fO%<|~@^`J=cYbA{r(@WEH~u!v*n4Qt$#E&WpLXO~DrH|m zTfc3vdwHdAaEO($W;LHQHuSva&Y|`mUQc5h*f-;?+m|Z1HE&6HJ$Msl&3kEk+lM*_ z%CUZ>?3-#yUgN%vwq{vdN4cwO+hC`C8?uMdhWAGgT>S^tSa&Rz8NELH33_p-!0WOn z;T`4P-1ii?n#&yZ+0*d8ZN0ta{y}&t`#U^MX#f3Lfa<$fpB)Sy?C;Fi!TwF~^sKkk z@I!0(;Wd2D2wuwO!da){bXIFT4J{VL8og&L+eXHC@0R<{^*Cm&)U}JYMZy!j8SEa( z@1*rkp&NHV{qUJB<-B@Uf!S>T$FrJo<6L{MPtLV!KXau0s zu;{1uLceMa&cV1nSSvHKF5{e+?@0^h6TG=fbMAM_dHXnq=h(-56R^-?4%K;9epJzF(Pi}qTf2zhW*Ka+}$GwmGk@Hqv@N$?}OWEt<`y^4@;dtv+%qVWSr~puBx1C3ktrg&|;iB;MN-EdcFtlIGz{t zyr0%Ftjj!d-&3{e@DJ14$M{BidhXT2>}Q^j(z^Hh%_H}{P@4w-IBgSVUe`r_7Z&^a z39zwg9lkflH?rfNXX~yt$Nnn1zuAm&Z28_oi?JSn`xyTI4`;uCxL zSkCq=b`2i~Tfg<1?+Mz`n0oa09rAJRzol)G@R(2jOwOwPe+Ra|Im7=)u=P0JD1fy( zUeq%UZQLWX7sg&609Ol(xI@r5yNl%JKMo#w6OIc~cGdyPf*|ZU?vZyPa~s+rb^*?{>=l zX3H0``mVM2%tF@Qd*j{MF6?}E#Ql9QrgjImj(gPi?tPfL=0m!CPtE6E={KLTAHcjP zCU7$4AHDQ^F@3*3iFqgZ-bbEK6?*W`zu0dn)i!vW7H$>m%x!%zj-}#>XGNmV8^EwH-ro_)DK_y0TC z!v(jl?_%y>oQLm$jZu&D@O`kl=Honk$Ib7%q(Aci5WK74=6?iB^Zy8LjC$n%F<4#m zN%Q+|>Nmgn9>sPi{HI{|;TG1?dMnvrqBIQ`vvAWb1?l|vGDy8tZyb} z++&z?^FYn=kOju>-4xLVkRV$7*%{N-bs(>%t;nEJ(j zJN*q4;~xlC3qBou8+qdXn*rYoPw&5(XzEeZEU;Qw)N~LUe|b%gV{T)k4*fB1BiM0+ zH^Xkw%z-qz}9T6Is6Tx7IhpARttU%*nN)g?Xhq*bu~_1M2t!REHFKI`!}k9yQUAMCd%_>17i_z`N zG3H9RT3C#^3XQ*fOmmvY*vQ)oc0YF(^IZ+LkGe75Uu(erj$g+)lAi%qGqxUH!d!cM9hJnpzd;ofoT5px*W zyb*Ia*ckQrR(nrVV*ahxe*_kH;*ntU8soZHhu=tR(f2$x%G0?`g8QU%+ZP`5oCtPq zlWC*QW5Mddj|1B$`0)jgx=w%_qaHCQg3S?gJqfJle52pVVEgKe`J4h)H!jxXRB)_` z{&`sBI1TK*Z_EwFn#>0~2Ys%IJYAD%aGxnytiyf@o|@qO!LH8%wEp|fvvE3R8+=6# zZ!37L#bUU5qUI&wMVNZbdntG!wgiiLF9XNC^*isF<8rWmHP5y+sl}Kp!Oki8DzGuJ zAFW{5SUu`m4Yr@Y=(h%Jzo_#JuyN{9%b8$v>9ZEsLoITg1$Iq?uLY;Itb^NMJ!)AG zwx7P}cQ!b!QT!Eu(|YEi+iCKIbIC5zToGAjfrv30~@36*^#Gb$M2NS49v4L zopxq|XC?Tc0(({tPH-dGGu1>JXXrw3dZsQ)xMQ>@+_N2i_~kYHiW+`p z4c}SAuddvU9{VdO#fEQGj4v*f&R$X3r_R*!JS9suYiqFkNo}M$ge-m@43<+ z`3Jyh{z15NjQm4jW7H%6HgM$EpXT?R>W}=FfnAT_uK=g{UkNuxJ@UT_9QpO9`91gg z&F5Oa8goq7?uvqk?<%!r{4Lms~Cz>S6P zT3UJJehqj$W*>d_-$|<;{a*|2Dtx|6^6ymWS{4VBZ6C`i{xxbJIAdo3Uw_ z`Ru3PINx1;k>d?u#}58Ruyc=h=}ll`)FbB2VCN7qZvh*p9x=Co9V=qq3N}vNyI1br F`+sM)12_Nx diff --git a/pbr/pbr.cpp b/pbr/pbr.cpp index edbbac87..962b3e67 100644 --- a/pbr/pbr.cpp +++ b/pbr/pbr.cpp @@ -196,7 +196,7 @@ public: glm::vec3 pos = glm::vec3(float(x - (GRID_DIM / 2.0f)) * 2.5f, 0.0f, float(y - (GRID_DIM / 2.0f)) * 2.5f); vkCmdPushConstants(drawCmdBuffers[i], pipelineLayout, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(glm::vec3), &pos); mat.metallic = (float)x / (float)GRID_DIM; - mat.roughness = glm::clamp((float)y / (float)(GRID_DIM - 1), 0.05f, 1.0f); + mat.roughness = (float)y / (float)GRID_DIM; vkCmdPushConstants(drawCmdBuffers[i], pipelineLayout, VK_SHADER_STAGE_FRAGMENT_BIT, sizeof(glm::vec3), sizeof(Material), &mat); vkCmdDrawIndexed(drawCmdBuffers[i], models.objects[models.objectIndex].indexCount, 1, 0, 0, 0); }