From d18195fb9131265fa439d60ace1abbefd453dc90 Mon Sep 17 00:00:00 2001 From: connellpaxton Date: Tue, 6 Feb 2024 11:58:49 -0500 Subject: [PATCH] unfocused camera light!!!! --- Renderer/Renderer.cpp | 1 + Renderer/UniformBuffer.hpp | 18 ++++++++++++++++++ Scene/Camera.hpp | 9 +++++++-- assets/shaders/gooch.frag | 1 + assets/shaders/gooch.frag.spv | Bin 3312 -> 3356 bytes assets/shaders/lambert.frag | 8 +++++++- assets/shaders/lambert.frag.spv | Bin 1964 -> 2348 bytes assets/shaders/terrain.frag | 5 +++-- assets/shaders/terrain.frag.spv | Bin 2108 -> 2124 bytes assets/shaders/terrain.tesc | 1 + assets/shaders/terrain.tesc.spv | Bin 7672 -> 7716 bytes assets/shaders/terrain.tese | 1 + assets/shaders/terrain.tese.spv | Bin 4628 -> 4672 bytes 13 files changed, 39 insertions(+), 5 deletions(-) diff --git a/Renderer/Renderer.cpp b/Renderer/Renderer.cpp index d1790e9..bc8a47a 100644 --- a/Renderer/Renderer.cpp +++ b/Renderer/Renderer.cpp @@ -346,6 +346,7 @@ void Renderer::draw() { .proj = p, .time = time, .cam_pos = cam.pos, + .cam_dir = cam.dir(), .viewport = glm::vec2(viewport.width, viewport.y), .tess_factor = tess_factor, .tess_edge_size = tess_edge_size, diff --git a/Renderer/UniformBuffer.hpp b/Renderer/UniformBuffer.hpp index 851df66..c20ef40 100644 --- a/Renderer/UniformBuffer.hpp +++ b/Renderer/UniformBuffer.hpp @@ -9,6 +9,22 @@ #include +/* Uniform: + * + * layout (set = 0, binding = 0) uniform Matrices { + * mat4 view; + * mat4 proj; + * float time; + * vec3 cam_pos; + * vec3 cam_dir; + * vec4 frustum[6]; + * vec2 viewport; + * float tess_factor; + * float tess_edge_size; + * }; + * + */ + struct UniformData { glm::mat4 view; glm::mat4 proj; @@ -18,6 +34,8 @@ struct UniformData { float pad2; glm::vec3 cam_pos; float pad3; + glm::vec3 cam_dir; + float pad4; glm::vec4 frustum[6]; glm::vec2 viewport; float tess_factor; diff --git a/Scene/Camera.hpp b/Scene/Camera.hpp index bb8a310..15b2f54 100644 --- a/Scene/Camera.hpp +++ b/Scene/Camera.hpp @@ -14,7 +14,12 @@ struct Camera { glm::vec3 pos = glm::vec3(0.0f); - inline glm::mat4 view() { - return glm::lookAt(pos, pos+glm::vec3(sin(theta) * cos(phi), cos(theta), sin(theta) * sin(phi)), glm::vec3(0.0, 1.0, 0.0)); + inline glm::vec3 dir() { + return glm::vec3(sin(theta) * cos(phi), cos(theta), sin(theta) * sin(phi)); } + + inline glm::mat4 view() { + return glm::lookAt(pos, pos+dir(), glm::vec3(0.0, 1.0, 0.0)); + } + }; \ No newline at end of file diff --git a/assets/shaders/gooch.frag b/assets/shaders/gooch.frag index a60982a..51bd1f1 100644 --- a/assets/shaders/gooch.frag +++ b/assets/shaders/gooch.frag @@ -10,6 +10,7 @@ layout (set = 0, binding = 0) uniform Matrices { mat4 proj; float time; vec3 cam_pos; + vec3 cam_dir; vec4 frustum[6]; vec2 viewport; float tess_factor; diff --git a/assets/shaders/gooch.frag.spv b/assets/shaders/gooch.frag.spv index 92ef58f0effc2af048e7a9774973ebe714b61f69..5d080700fae6286d7b5dc357f514083fba67ee07 100644 GIT binary patch delta 172 zcmew$IY(+k1fy+oVs3m&W)TA$11p070|Nsq0|P@^QE72WX)XgB0~=V3je&uoEHkyd zAit=Dfq?-o&OW)3QJj%u^GwF+jJ6vX7#KXDhJZ9EGcYg+Fe1d*85kHqViHJV98fWt b&5_K8jKbVt+qfAR7(f_g2>a%lEa4mgcjOiG delta 128 zcmbOu^+9q&1fyVDQE72WX)XgB0~>Dtbmn)1#CXd zepUun22KVBhMdgwjFR|*{9*I(m4SgFt*ErPq%@a-je!kp zFB<~`1IXTj{Gt+wnGkVMIF+Op7ssb1CYR)c%wPwr=U`x90E?%lq^HIgXI75 z1kw!lBQt{{0|SE(lnsgpkndR;m>Dz~7#ND6;(8!+z-$(9JmuvV<${a=g%K#u+=>#@ zo%3_@A?jJdaafXC;hdjelmb!5%-{(!BejCToq>gckAZ;!yZ;22?SSUy=2J!W|S=Fnu6CNS_0eK9CqfA0!SzaRXA65D_z2J#O`On?#LUXYz2F$p9wP@I6oWEdG3+!>g`eh0Y)6fU56QG)sz#s|d@ zNC?CS#g7~V12{i`_@F!k;=|-Yae>SSH+B&g|b2Bf#gB749MXO3=A;7 zJeaTG2vQGwg5(CL=FfhQw4<-+aKaf1kJY%qV4fZg;DVVR{z|`A=)iXGN>~moNmC_6hpl|`H2k}Aa0c4*f11EzUG;Be9h&Bib z<4ZFzGq^J_fYpJ_^MFW$#X#nP_@MLy5;kLC1*aWQJcIZkH~nB>VgTh6kXleW0hOx?81_qECka!2w94iI}29Q}GIgr~yX$B+)GsBjFfdM22 z`F#Vu90we~?H!wAhP&F`nL16o zaQBIK_xE@Aag9$dD2OjEsmw`@&&kY7jZeueN=+`wEK3Ec<3LiEnU|bXnu4r=m4O9p zKFoer237`61_p+l%=CJwaW~5dy zcp$l(m4Si51L|&&I%N=nCI$+30VFYy|3K;-ki=0vMW?*ArU;x=G&cMO|@*ju~N|g!>EDRhB3}7*kI7pt0fdQ-@lujiWSQxk& z7#KieAif+l>_B25GeCMkX7ED&14C~ zvt?ibrw?HU1_qEg4+9&RF9P*5DBeMGFukH!^olVsFo48idc~o7LFoo07r?*%g)`WRTj>SY)h7(jBMv|`7=3@+C|Vjwqz^nvmbC@f%n zP`&}Bn`WqfP`(1G0g1!x0_Ag1ynyTi$%D)Vg&#;9W{w&I1K2JYUmcp>VdiQuFff4B zfW$%Og3^j6)DNI^0g?xq3yKGjILsVv1_p3>3FGTR>xwB1tl%)$1LqG029P)p0|!_P zROx`+3(^ac2Zb9bt+zt;7%?y~fYgA}JIGv+TZ|bP7(jNz_$E+3Ophr80|Q76NW24T zju`_31IR3p9LVjUGy@WYnPJJmzyK11@vWeIn0^}u1_qEAC?CPp*h1C7?6qTHU;v4M m)C4fFgUca%1_lO@*&zKOd63^g_Ji^#NbWBKBZCD4BLe^j)p3CU diff --git a/assets/shaders/terrain.frag b/assets/shaders/terrain.frag index 5998114..105a75d 100644 --- a/assets/shaders/terrain.frag +++ b/assets/shaders/terrain.frag @@ -10,6 +10,7 @@ layout (set = 0, binding = 0) uniform Matrices { mat4 proj; float time; vec3 cam_pos; + vec3 cam_dir; vec4 frustum[6]; vec2 viewport; float tess_factor; @@ -19,8 +20,8 @@ layout (set = 0, binding = 0) uniform Matrices { layout (set = 0, binding = 1) uniform sampler2D heightmap; void main() { - //vec3 light_pos = vec3(10.0*cos(time), 10.0, 0.0); - vec3 L = normalize(cam_pos-pos); + /* extract L (light direction) from view matrix */ + vec3 L = -cam_dir; float r = length(cam_pos-pos); float t = clamp(dot(L, norm), 0.0, 1.0) * 20.0/(r*r); diff --git a/assets/shaders/terrain.frag.spv b/assets/shaders/terrain.frag.spv index e8baa62dec7c7e02e56fb3467cde7b03722375c8..86a08089233bb83414fc6357f0d7cbd2d03ebd9b 100644 GIT binary patch delta 1145 zcmdlZa7KWanMs+Qfq{{Mn}L_XVIr?PuRH?-gDL|9gAoG*gZ0G3_o~T>x$!BPMGR~V ztPBDS3=FIc3=C;SrNt$sxeRO!Y+y0A$%%~OlI#o&3?-?>#qnv0$tC$99qeFPj>!`l zm1CtC7#NDc`k5I(mK5X{Gq5r+Gbn>}fyG(C7U$&`*H;xj_k+cPjQD1j8i_>*TcuNCG7`-ae-o;frSCY z2YDUl04oMiB4J?QhsuNapr8O*D9OOdU^BUpRaw!Nfq}sW>SQ~x=?n}YF_05MeEZ2; zS*a0xU8Z>iEVPItdg|RvV0|Q76NSud(11zQm4JuIZg5*K*pvl0%&7#S=W7#RRswoyj_ delta 1108 zcmX>jut$KGnMs+Qfq{{Mn}L_XaU!ofuOtHlgBk+^gE0dGgU!Um_mfi?1teJ+7#PYj zQ_BnTi%J+67#P?X*cb#r^yFSfaYpvZOBt0tK^hD4iy2rMm>J|47#NBe7{F{51_lO@ zCRPR(u)%rxMY$j|SQ%KsmbeuqraR~7G` zatp{@ki0AdM2?MtfdM8D3SyAFHUkR-NL&+YFO07R<~P{G_&N*>UJMKj3micP8Zj_1 zfE>dGH4wxHc@887lDCFBh#x8s;)6U3vQUzNlficKT2^I6I|c>@Td0@p!PYS_fW$yf z1o0gve`GZm1vwrRXfV%#_$rfa*|h6z8CbwxmSSLF0C~5WffdY`W?*0tXJB9eiSsb9 zfyHE?E^=jHU;xS6F)%Z5GB7ZJ#2pz}!9gm|z`!8Hz`!5^b{E8K1qKENkT}dPMTA}T zV1q&N1yTf(09ghKOHe8SdDRITpCHRXUI2;13{qua06PH2SBED1DGaRO_|RZrU;wEB ziSsaUfW@?-o&eDr4D}2QphyEnR4Y`IE&~GtNKyyt1CV3%pot7*5s0r3<-_zCFfcHH z)PTf0pyn7dFff430?C0Kufo8<01|_lVZy+`pi&RD1Qao*P}lcCqri-TfdM22QWyv| z)SQ8V0VEEJX_%M=R16eaFfmK07$}7YFt9U#5}6eP0|Q7uNIgg%9(t Kk->t2kpTd#21-K! diff --git a/assets/shaders/terrain.tesc b/assets/shaders/terrain.tesc index fc7a229..0d63ac0 100644 --- a/assets/shaders/terrain.tesc +++ b/assets/shaders/terrain.tesc @@ -6,6 +6,7 @@ layout (set = 0, binding = 0) uniform Matrices { mat4 proj; float time; vec3 cam_pos; + vec3 cam_dir; vec4 frustum[6]; vec2 viewport; float tess_factor; diff --git a/assets/shaders/terrain.tesc.spv b/assets/shaders/terrain.tesc.spv index 720e58b951b3c1b5844702ecfe5a3683eff1eb29..488d37a447e1c1eaca5cbbc53d5351826316b438 100644 GIT binary patch delta 204 zcmexiy~Jk2A4b*W#N7Cl%pwLh237_&1_lOJ1_p+-qSE4$(p&~M1~#x5+hkrQaY=Rt z28NQ<;^O$U#N?8EkPddREXQVBrs>SK8yFZEJfMcKF)%PFGcYg+Fe1c2+CgFxNMamN zbuyd(vaVzj<_4Rmz`(!&!XQHwCvWB0&B!*nkkg)#WAa8$c}Dil7dgur8Cf@ba@Pwo LhHO45qt6HcQ5Yg6 delta 150 zcmZ2t^TT?>A4b8nqSE4$(p&~M1~vvY1_lP!$%;(kl57kN3?-?>#qnv0$tC$k3~UVS zU|IIfflSkxH5nKg7(5tQ!9pOV$_xw)97tm93=9k)F`mt;Y%7@%|a>_HZZT`zy&dA8Jxsn|E?Xa{vGztQ)HU delta 116 zcmX@0GDT%W1M}o5%mR|E3=9lqnW^Ok`9&oR3=9lx3~UTNAbRp%W^qRL%~zTAnKT&~ u85lemSRoP&3=GN)3=AAdV(d^cp3RPI6PfwBzzRDV7#Kj9ZSzykXbu4UWfKPg