From 7aa5d04e4e2f2ff2fe7f3ac60e1c6ca10f24be82 Mon Sep 17 00:00:00 2001 From: connellpaxton Date: Mon, 5 Feb 2024 13:53:37 -0500 Subject: [PATCH] small displacements --- Scene/Terrain.cpp | 3 ++- UI/UI.cpp | 2 +- assets/shaders/terrain.frag | 7 ++++++- assets/shaders/terrain.frag.spv | Bin 1280 -> 2304 bytes assets/shaders/terrain.tese | 3 ++- assets/shaders/terrain.tese.spv | Bin 4536 -> 4672 bytes 6 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Scene/Terrain.cpp b/Scene/Terrain.cpp index ffede70..00c8cef 100644 --- a/Scene/Terrain.cpp +++ b/Scene/Terrain.cpp @@ -73,7 +73,8 @@ Terrain::Terrain(vk::PhysicalDevice phys_dev, vk::Device dev, Texture& tex) : ph - moores_heights[0][2] - 2.0f * moores_heights[1][2] - moores_heights[2][2] ); /* fill in missing component, first scalar scales bump */ - normal.y = 0.25 * glm::sqrt(1.0 -glm::dot(normal, normal)); + normal.y = 0.25 * glm::sqrt(glm::abs(1.0 - normal.x*normal.x - normal.z*normal.z)); + vertices[x + y * patch_size].norm = glm::normalize(normal * glm::vec3(2.0f, 1.0f, 2.0f)); } diff --git a/UI/UI.cpp b/UI/UI.cpp index dc3accc..8a84fb4 100644 --- a/UI/UI.cpp +++ b/UI/UI.cpp @@ -92,7 +92,7 @@ void UI::newFrame() { ImGui::Text("FPS: %f", info.fps); ImGui::Text("Time: %f", info.time); ImGui::Checkbox("Fly Camera", &info.flycam); - ImGui::SliderFloat("Tessellation Factor", &info.tess_factor, 0.0, 20.0); + ImGui::SliderFloat("Tessellation Factor", &info.tess_factor, 0.0, 100.0); ImGui::SliderFloat("Edge Size", &info.tess_edge_size, 0.0, 40.0); ImGui::End(); diff --git a/assets/shaders/terrain.frag b/assets/shaders/terrain.frag index c5bd585..333da3b 100644 --- a/assets/shaders/terrain.frag +++ b/assets/shaders/terrain.frag @@ -18,5 +18,10 @@ layout (set = 0, binding = 0) uniform Matrices { layout (set = 0, binding = 1) uniform sampler2D tex; void main() { - FragColor = vec4(1.0); + vec3 light_pos = normalize(vec3(cos(time), sin(time), 0.0))*10.0; + vec3 L = normalize(light_pos-pos); + float r = length(light_pos-pos); + float t = clamp(dot(L, norm), 0.0, 1.0) * 20.0/(r*r); + + FragColor = vec4(vec3(t * 0.8) + vec3(0.2, 0.0, 0.1), 1.0); } \ No newline at end of file diff --git a/assets/shaders/terrain.frag.spv b/assets/shaders/terrain.frag.spv index 13e9814c08e00cbd9ce79328f39e5f84be96a84f..ee0651b9997b1268db4865dd64b3308b94dca568 100644 GIT binary patch literal 2304 zcmZQ(Qf6mhU}WHC;AQY(fB-=TCI&_Z1_o{hHZbk(6YQf`T#}+^Vrl?V!No zaQBIK_xE@Aag9$dD2OjEsmw`@&&kY7jZeueN=+`wEK3Ec<3LiEnU|bXnu4r=m4O9p zKFoer237`61_p+l%=C~vg)9bgcS&Y$DzX?TB$5+z!M3n5uz}43g$KyIg8ZTqh+2p^D+2>VNosL% zd|G01Nq!Ln8v{F7JsV6sH6=YYzBscg735xK27Zucu-lm#+VDMmI0lN(%&cNV-6jsV0K?YPYP}~ZD#UT1X;Ro_BOdp63(&qqH0||GK7(yRJ z3>3y7bqz@BKw%6Ln}8$+3S*Gi0wghzeIT(FNMfL{1&OTzr$uJ4pFnoFGq8ZeR|)DD z7#|e2AR!PR#0G^sOg$(~gZMCcP?#d~L1`Vt2l)%69~73z=7abkGePpg3{2pBpa{+p z3}Chx12Y52y$TEr4B`wd44|+9@j?DqU|?b3U|;}?fy6=bTnr3g^`NkjU|?b3W?*0d ziGlbac^;@d$o+B*oM69$)POL^T#z|1H6T974n78mTR{23nt_D@#0RBAkQt&3EDWGH z2DuO92W=={5UK~HUkJ(unFo>w(UPD5V_;x_@nyh#1xJv2m{}mVfb0YDVPOQ4SB3f+ zWDZOo6b~@_LE_*-iJ`$BX1)>F`~_h1Ex=_CBwRrHL3~iWfx;A~-kO1d;p`b7xPChb z-wq~k59Xh-)dA;N1_n?X2B`u03nT|}ryB#P6lGulg(t`!5FeBtK<<=e;AHTC#s!EE zb{>>~@ueA<89c%1mVp6eo)=UeBnC1M#0RAxkgyp8D>%J?;u*vT`Q--#69XvygVci3 z38?&og(-*+N|!J`C`>`+1~MO1c7XVf46F>GI22}J0Ot=-+}bj*fYX@>0|Ns{oQDBa z(lIcILj4R%BOp1LUNJ0s#TghFK;kgH5>UOMbOw?OfQGFU1H@dAJScoY>Ot<3hN^dE zU|;~L>0@98=LJ~?1_qEEC{5WhFoVl|kQm6#Abs)-3}7)BACw8ly4A5=Dg)PTfc zcBvrQ1(FAu3kpAwILsV%G;=i=7{KK+%v?s zkT}d-9R>z)Sr6muLF>{f46NWd&}U#^0I30q^DuCL#SEe5g5nS)4+=L>o@j;YF=k+3 z0I31x3y`@Wx0o<6Fo5ia@lBz8m>x3*1_qECka!2w9CHQ+29Q}GIgr~y_JPD;W>|sq zI0FOB3>yXp29Ovif5GC{mVto*Bo4!k(0FiUU|;~rf$~-$)ILx+fy6;+946+>z`y_! u1LYf-mDS-$^B(uWUydhWB>qS<&%H_ literal 1280 zcmZQ(Qf6mhU}WHC;AN0zfB-=TCI&_Z1_o{hHZbk(6YQf`T#}+^Vrl?V!No zaQBIK_xE@Aag9$dD2OjEsmw`@&&kY7jZeueN=+`wEK3Ec<3LiEnU|bXnu4r=m4O9p zKFoer237`;8{CQ#)1C8k@{1T47(i-3ZpzCq$_2R*qz2@^lGF<4{QRO6h!`{2y#@Kj z3?O+C1_lP-#FC=SZVLF)%ZL>{DQ1U=U|uVF39J#0R-mfq{jA1Dp>Sz~a_W zJ}A9{{HM*p0@lj~w!gt%hk+fej+=pj0VIZuL1yzXFo4yA^n%RhWdP-71_qEg$ZQZF z6yG4Xg4FXv)r0&FQV)tNkQ_)Hq#ncvr3a80h!4^aN)I5u1Op3$FayNhAiu~laDu}T zBnHADKZ5K9nFV5lFvt#321vMo@(##M5FZrgAU8-da59KP-2}1&>}@Ck<4ZFzGf05L zl7Rtao+MNrBnC1M#0SL*NZ5>l6&wd3_ksAJaQVT&!~jYYb_~qmyZ{QzzYL5F77UCG E0H=IiDgXcg diff --git a/assets/shaders/terrain.tese b/assets/shaders/terrain.tese index 614c8b3..3d4813f 100644 --- a/assets/shaders/terrain.tese +++ b/assets/shaders/terrain.tese @@ -23,6 +23,7 @@ layout (location = 0) out vec3 _norm; layout (location = 1) out vec2 _texCoord; layout (location = 2) out vec3 _pos; + void main() { /* interpolation of UV coordinates */ vec2 uv1 = mix(texCoord[0], texCoord[1], gl_TessCoord.x); @@ -39,7 +40,7 @@ void main() { vec4 pos2 = mix(gl_in[3].gl_Position, gl_in[2].gl_Position, gl_TessCoord.x); vec4 fpos = mix(pos1, pos2, gl_TessCoord.y); - fpos.y += 5.0 * textureLod(heightmap, _texCoord, 0.0).r; + fpos.y += 5.0 * textureLod(heightmap, _texCoord, 0.0).r + cos(fpos.x*fpos.y); _pos = fpos.xyz; gl_Position = proj * view * fpos; diff --git a/assets/shaders/terrain.tese.spv b/assets/shaders/terrain.tese.spv index 2c6ff04c0e8d3a86bfdc66f145c9e845892d7bc3..12f4f3c71b8bbfeb7c8241122a79e1dc66f644fc 100644 GIT binary patch delta 1145 zcmdm?d_aYlnMs+Qfq{{Mn}L^M{zTq*&MpQ9hJFSHhIt!H|1%1Lc<}}K#S9D#46F=n z484=rGKw?yPM*sIBJVOvGxkot$OIzaGD&-a^g&dzGE8J(VDL>WDauSv1?y&GfQW(Q z%Q92TK{QN^k%57speR2JE;c!kSy&fj0y6^xLvms+*a>V5Y+zGa7#J8pCKTisl|Xc` zF-)91ky)H^;^dXg(!7&Ff?)SDGt8TOk@>nR$QN=93=B*R3=AF&tPH(S72Hr7EH>GZ zMVPU7@7#Kjl0EvN2b!T8<0ELqh)WtBqA`*YzW>L1+OuV4L16e8uj(%QFamzji2Cy?g z!DP+A!T{ofq8_A5f`NqrhUpti|1%1Lc<}}K#S9D#46F=n z3~iIwGKw>{O`gjHBJVOvGqz2>$OIzaGD&-a^g&dzGITL8F!&~x6lEr-f_1YoK*T`u zWtpkvAQ~pd$iTo*P?Vnq7n>Z&EUXJMfti7UAvrM@>;yIjHn6EI3=9k)6AJQ+N+3Ge z7`i4;WEN-an!J)(nzsie2zDw)NJ0lNaEl@)3p$fY2@GKfGEV`pGs5CDro^nv_} ztPjKo>2m<90f*7#Vpc(0keML+KynQTIR=osKw=Y+#6WHYi7kMMO+Lsf>Ora`7+4rO85kIX7#J8p&XQx`1P2#LtaEZKr?hJ~G$KGw0qF+uK~4cV zOM!ufp%*F-(gEU6h1v!(5v1N6lsGr<=>BA{6?r5Amdx0^8O4Q4B`w746O_d3?MNO z1_cZ#u0YNN>1}3Us0S+m84hxD9|Hq8NJXFqg52NFz`y_!hp7QY8pyAp1Oak5NX