From 25e296be55e87862bbacb17b9dc9ba712b3deb67 Mon Sep 17 00:00:00 2001 From: saschawillems Date: Tue, 4 Sep 2018 21:18:14 +0200 Subject: [PATCH] Updated shaders, UI --- data/shaders/conditionalrender/model.vert | 25 ++++++++++-------- data/shaders/conditionalrender/model.vert.spv | Bin 2576 -> 3060 bytes .../conditionalrender/conditionalrender.cpp | 12 ++++++--- 3 files changed, 22 insertions(+), 15 deletions(-) diff --git a/data/shaders/conditionalrender/model.vert b/data/shaders/conditionalrender/model.vert index f25f22f5..9be6be0c 100644 --- a/data/shaders/conditionalrender/model.vert +++ b/data/shaders/conditionalrender/model.vert @@ -4,16 +4,19 @@ layout (location = 0) in vec3 inPos; layout (location = 1) in vec3 inNormal; layout (location = 2) in vec3 inColor; -layout (set = 0, binding = 0) uniform UBO -{ +layout (set = 0, binding = 0) uniform UBO { mat4 projection; + mat4 view; mat4 model; } ubo; +layout (set = 1, binding = 0) uniform Node { + mat4 matrix; +} node; + layout(push_constant) uniform PushBlock { - vec4 offset; - vec4 color; -} pushBlock; + vec4 baseColorFactor; +} material; layout (location = 0) out vec3 outNormal; layout (location = 1) out vec3 outColor; @@ -28,14 +31,14 @@ out gl_PerVertex void main() { outNormal = inNormal; - outColor = inColor * pushBlock.color.rgb; - vec4 pos = vec4(inPos + pushBlock.offset.xyz, 1.0); - gl_Position = ubo.projection * ubo.model * pos; + outColor = material.baseColorFactor.rgb; + vec4 pos = vec4(inPos, 1.0); + gl_Position = ubo.projection * ubo.view * ubo.model * node.matrix * pos; - outNormal = mat3(ubo.model) * inNormal; + outNormal = mat3(ubo.view * ubo.model * node.matrix) * inNormal; - vec4 localpos = ubo.model * pos; - vec3 lightPos = vec3(1.0f, -1.0f, 1.0f); + vec4 localpos = ubo.view * ubo.model * node.matrix * pos; + vec3 lightPos = vec3(10.0f, -10.0f, 10.0f); outLightVec = lightPos.xyz - localpos.xyz; outViewVec = -localpos.xyz; } diff --git a/data/shaders/conditionalrender/model.vert.spv b/data/shaders/conditionalrender/model.vert.spv index a0c685966bdffb774ac3ea251ed549548bfa51a7..4ab97f4c3d4da3e4e524d01f79a9c70d21777ab3 100644 GIT binary patch literal 3060 zcmZ9OYf~Im5QdNJ0#P(E#$3Eb5EV5MZ%K?|5+E8-5jMu)B^t6UD~v8Xsbx{WnJRyQ z{v-WWezD5unVHt9JyhrP`=0JT-F=oZE| z+MOXT#yt+d-yU`cS#cFiBRvIoKR-Zk7WrrW7RdM$X@-5bx7F$nHoJpi_ZJ{+$*X&o zA7sNU?-#MG-DTXD*l#ay6!z+_`-A+4Zl^GZA1`d|>rYwtXU~JPU;Ft^x9mqF&4CZM zb3B^q9rSh1*a~~Gi@F9G8ESJ8+^=k`djm|1+C2+p$=#95cK3#5xdrFD(c?Ag&2FdQ zd`GxVQj~&g7Vnz%%cocY`-W!`m)Q3cTbtOo3%p8%c%$go3jLC^Ztb0;h^M{p;4-dD zdpYe_v5)?a7r5*zYB7uM#t0iefb@95m44<}_Y<4fA`*Ubqki69_Y>>)00}?2@H1y~ zkh4bL^aaEf*qU6{6z>{$1dg70M{xB!i*vDWEEo39j`qes%5HprL(alF zGjiVLn;KhAU$Ni2+)3~g?9+&`&sF#Yx=a5j*|m*$XVA?{Y&>&wF2mnEo<&l6aLrt1 z(8AZAo3ot0;@OHj1AY-*+p>;wHswOh=Vh=xc4mwro~t;|U#WC`qMmc;k)QRxQQ4TE zbD^!i7b;%P*kWhH`#fJ@H-B?9-;dbsg`DT#R9Mct?ZvkUr%QpqEAgM_Io0kiqK&+} z_c|ZWpm785)UZ8w2CeB5^KO1k#HG*QFn%BU`d;eU#s}AIbYd0JLam*>xldx#1YRU z`pJi%|2Z(WGZubtq05Kg+vxhrhu?Q2 zN#6IhjvI))E9PniU0!j;T!qgnoIdj5^D(--;u`h&1Wq64D11Iemsecj(_%vX=GPE& zF}Aib%b%f7A-=^V`#Pene0)oC(VG_fXy0$b$%oD7l})|xx8UTXe_x>MCm(*d(MS8f z2`3+ZU!vso!D0i$wkR(B&dl8(sV8>o&Ta;)=fhR`sg` ocMs9d_*?995wDA0kM})TPH{!NU#s7-T{vxwwZks{2dm4-zkMCQh5!Hn literal 2576 zcmZ9M+j3Mz6o#8jCZHG&A_q@#LPW$s1Ox;T2ti1|feawgJ1c|%MklkWnMvuLSe6ff zFJzTZ<&9N--`>4o7oGa2*ZO;%dad4ROw4UhXyt&Gp_u_ z{CLzIzv8^lMh>R$KJ;fb-zIf`AXkjaT;8iU=%AT31NHrBXVJnB|`X{685w;mRpHq#Ac zuDRZ~K$cuvuJ`2WxGJ;coCAGpORse|O3t~!t@XOUNTp?Z=^SQ&OWhf$TZ6j&uj|fQ z-Px`X)!w`2s_iAGzuX?M%-yxq$C&msavH;)y3Fm;Uarb9S@uM}3AB&i)pG{NLoai# zkVnos>V8qzB7DS>3qNz~7q!~^!@ya(R*>Gs*XG=S&!IQp}XD8`xP)N|znNK@=B za1eX*s(ao--;rhci&=L@asDQ9)a$vreUl6OX=Lr=+?jc9KIdURzsDJVor|0>|J&^5 zlhC8n=zYpI)uGf98!s%n5!)FOuUbw=i!vy`_t^sRV1lqR_DS0f^?d} diff --git a/examples/conditionalrender/conditionalrender.cpp b/examples/conditionalrender/conditionalrender.cpp index 3e831fbb..ff3be6ab 100644 --- a/examples/conditionalrender/conditionalrender.cpp +++ b/examples/conditionalrender/conditionalrender.cpp @@ -38,7 +38,8 @@ public: struct { glm::mat4 projection; - glm::mat4 modelview; + glm::mat4 view; + glm::mat4 model; } uboVS; vks::Buffer uniformBuffer; @@ -57,8 +58,8 @@ public: settings.overlay = true; camera.type = Camera::CameraType::lookat; camera.setPerspective(45.0f, (float)width / (float)height, 0.1f, 512.0f); - camera.setRotation(glm::vec3(-9.0f, -55.0f, 0.0f)); - camera.setTranslation(glm::vec3(3.45f, 3.15f, -22.0f)); + camera.setRotation(glm::vec3(-2.25f, -52.0f, 0.0f)); + camera.setTranslation(glm::vec3(1.9f, -2.05f, -18.0f)); camera.rotationSpeed *= 0.25f; /* @@ -267,7 +268,8 @@ public: void updateUniformBuffers() { uboVS.projection = camera.matrices.perspective; - uboVS.modelview = glm::scale(camera.matrices.view, glm::vec3(0.1f , -0.1f, 0.1f)); + uboVS.view = glm::scale(camera.matrices.view, glm::vec3(0.1f , -0.1f, 0.1f)); + uboVS.model = glm::translate(glm::mat4(1.0f), scene.dimensions.min); memcpy(uniformBuffer.mapped, &uboVS, sizeof(uboVS)); } @@ -373,6 +375,7 @@ public: } ImGui::NewLine(); + ImGui::BeginChild("InnerRegion", ImVec2(200.0f, 400.0f), false); for (auto node : scene.linearNodes) { // Add visibility toggle checkboxes for all model nodes with a mesh if (node->mesh) { @@ -381,6 +384,7 @@ public: } } } + ImGui::EndChild(); } }