From 590da3a1a0c5ad7e6c2da211e4dc07b94f5a4878 Mon Sep 17 00:00:00 2001
From: Sebastian Gaida <gaida@ca-digit.com>
Date: Tue, 8 Jun 2021 17:37:30 +0200
Subject: [PATCH] [#69] Fixed triangle, but not buffers

---
 projects/particle_simulation/shaders/frag.spv | Bin 612 -> 808 bytes
 .../particle_simulation/shaders/shader.frag   |  11 ++++++++--
 .../particle_simulation/shaders/shader.vert   |  10 ++++++---
 projects/particle_simulation/shaders/vert.spv | Bin 1184 -> 1496 bytes
 projects/particle_simulation/src/main.cpp     |  19 ++++++++++++------
 5 files changed, 29 insertions(+), 11 deletions(-)

diff --git a/projects/particle_simulation/shaders/frag.spv b/projects/particle_simulation/shaders/frag.spv
index df52203662c6efe30f9b311f06075e73074edb6a..d926fa4b4ad738f5aaca2f00fbb92a91d024fd12 100644
GIT binary patch
delta 456
zcmaFDvVx75nMs+Qfq{{Mi-DIxWFqg^JQfCC1_p*w=lq=fA_fLF239bifq{V`86w2M
z%D}?F&%nR{Rl>l^z{(&9(i4zhoLQ2YpT_{w#|9Py=_^18gVhQ%FfhQBPBvhas0UdH
zQm70f7#JAb8JNMAGJ)9;%aq`95WXUm?*X+O#6{K*au7^E$U<cOAU;SxBLf42Fay)%
zbVlELZ3Y$wHU<U;E|5VC4fZfTH<-`Bpu@n<z|O$HzynnS5(i<BdO4_jLGlU=EDU@M
z3=AN<LH@Fa@<9Ox5))@&VGsZZ5Ca1<0|Ns{uOI`15?BzVSqQ2b<N=Uo5Fg}Vrpdfa
W@*;K&%nY1RXZ&SgWUydhWB>pk;v#$i

delta 253
zcmZ3%_JoC(nMs+Qfq{{Mi-DIxXd>@dJyr%T1_p-Y{Ji3l#JrMX1_lN;28b8~0|P^;
zbAC>K5d#A&12Y2;0|Ue40!9f*kOq*XGKgScU~p$(1{=aOnUN_tQVz;vXJBAZU|?b3
zW?*38WMBZRu!izMMuEgc8CV#2!RkP6VqnmQ^7)`9gY@%5^|Md@$|P^$$iT_~5)oiv
k06Pez(w2dR0c4vX0|Ns{+>U`6Y$J&Omw}PNf`O3%07K#vLjV8(

diff --git a/projects/particle_simulation/shaders/shader.frag b/projects/particle_simulation/shaders/shader.frag
index d9fd4602..215fa788 100644
--- a/projects/particle_simulation/shaders/shader.frag
+++ b/projects/particle_simulation/shaders/shader.frag
@@ -3,9 +3,16 @@
 
 layout(location = 0) out vec4 outColor;
 
-layout(set=0, binding=0) uniform vec4 uColor;
+layout(set=0, binding=0) uniform uColor {
+	vec4 color;
+} Color;
+
+layout(set=0,binding=1) uniform uPosition{
+	vec3 position;
+} Position;
 
 void main()
 {
-	outColor = uColor;
+//	outColor = Color.color;
+	outColor = vec4(1.0f, 0.0f,0.f,1.f);
 }
\ No newline at end of file
diff --git a/projects/particle_simulation/shaders/shader.vert b/projects/particle_simulation/shaders/shader.vert
index 3985a850..6c78c446 100644
--- a/projects/particle_simulation/shaders/shader.vert
+++ b/projects/particle_simulation/shaders/shader.vert
@@ -1,13 +1,17 @@
 #version 450 core
 #extension GL_ARB_separate_shader_objects : enable
 
-layout (location = 0) in vec3 position;
-
 layout( push_constant ) uniform constants{
     mat4 mvp;
 };
 
+vec3 positions[3] = {
+vec3(-0.5, 0.5, -1),
+vec3( 0.5, 0.5, -1),
+vec3(0, -0.5, -1)
+};
+
 void main()
 {
-	gl_Position = mvp * vec4(position, 1.0);
+	gl_Position = mvp * vec4(positions[gl_VertexIndex], 1.0);
 }
\ No newline at end of file
diff --git a/projects/particle_simulation/shaders/vert.spv b/projects/particle_simulation/shaders/vert.spv
index 1d8d780bcb1a3dff229389902f9d624e83500380..9e89006811ae50bbd74619623632a0d5e4423ddb 100644
GIT binary patch
literal 1496
zcmZQ(Qf6mhU}WH8;AJpkfB-=TCI&_Z1_o{hHZbk(6YQf`T#}+^Vrl?V!N<T1qQG+e
z4D4Vw3j+f~ZenI0h$F?oz@W;&z`)GF%)rFJz;K9>fq{jAlfm65-Z982zBsiYu_&=5
zHNH3_F(tJqK0hfdHMyi1q=pNm#@*lF-N!XPxu77vxTG>CH9jXZFEu_TvnVyWB(p3P
zq>ckgU1nZ#PH76V0#*hV24wfJGO#l6FfcF_<QHd_Waj4;GcYi)GO#g7FfcHr=fnr3
z7KNo2m84dH+|C9S2eCnNP%R8>4D4X_pl|_;XXcdzXI7<x)WPIHeofDbch1QyaLFt#
zNz6-5h3f-_7)Y)(CkHOa%D~J33M-HqAUDb}Ffb(N=Ye#Bf`fsLfrSAi29nP$D_{Vr
zR{(LK?gxc&dQLpV@t%1pARl-zu!7wQQpOD;7#J8}Vj#DJ#6UDm4CH2z7|4AvF%TOh
z1`0!W24=8%Aax!{?qP+R3v-_`l3g${P|6TsU|;~50TKh5;m*JUP8%TewHO!}gc+E?
zX+#m6S{T4=F$QJ^HU<U;kYB|aSimU^#0R-cl!1kT11blyQX9(W1gAF!1{nqx1}+8$
zupW?@0s{*J$S#n6khnFJ4@wUpF_3-`%?mP&fnh(4&j;b#!}$DQe#3qpaEvlAfcyp0
z15yW)gNX|=Fff3`Ko}$r(=P<p&%gjvC(OXW01^Y40a6DN2f0s#0b(}D9FQ82|3w)X
zz~KRk50H5v|BEqzaxKKa;!t^zm>e|y!t{XTKo}GblF%>$rF&2~fcT*F2MbqeXt;vX
z2gn`}Uk2)K2?iDhSq26Mkhvgt$T2X3(<Vp^WVSp50|O|$LGcVS8^j02A4m)&uLzZg
zsaJuzA7lqeJ%|rV&mg-&>eZos0;M64TR?FHN-qoy4fY^;P(cK7Hv@wi11mV)fZPRg
zE=c?b0}}%%joL9VgY!NpTpbx$89?q(g8CEWH(RK`K<O7G4&sB{qy{a+KzcxK(O_Tz
zn*$ODsR6l5lYxN&BpwJZO&A!o85kHqVjwrb#B`uyAb-KcbfIFP{1Cvv4h~a228e!;
xdXPNGuM-(q!E*Wx3=AOmfz*K91M<5e0|U710QmvrM-U&R?k@u)g9QU40{{wWb>RR2

literal 1184
zcmZQ(Qf6mhU}WH8;AK!|fB-=TCI&_Z1_o{hHZbk(6YQf`T#}+^Vrl?V!N<T1qQG+e
z4D4Vw3j+f~ZenI0h{Makz#z%Mz`)GF%)rFJz;K9>fq{jAlfm65-Z982zBsiYu_&=5
zHNH3_F(tJqK0hfdHMyi1q=pNm#@*lF-N!XPxu77vxTG>CH9jXZFEu_TvnVyWB(p3P
zq>ckgU1nZ#PH76V0#*hV24wfJGO#glGcYiu=fnr37KNo2m84dH+{p$N2eCnN`Nf$f
znfZAPYz*vR^`I~Si)ZGQ1ZP&Ig4Ds}K>kY4iFeM)EO5yzE=kNwPKE0Og$_urG$#ix
z$I8IW016k78LSMf41x>{49WR<Ae|tuGq5qRfW<)axn%_mAoao^4g&)NNIfV#3t$dp
zU|{fIU<JDoqy*$Q5DgOpxf>(~qG4hn_kzSgZi9(|*dQ@bSh+JWgUth}^FVS7E7UHK
zdqH-<(g?^5m>4Jp2rw`(fXo1ify{7cU;(EAIglm>1_ogUCU9C%1g8oHFk6g)nSqUg
zfkA<RfkB*s1)P#Ve2{xY8CV!NpmHE1w4r=X22g5cV31*8Vc=q50P6>d$wA{1<Q9+_
zAUP0LU|?b30jEV!dS+m-hVnsi0rEe{9zLi&pzs3O1LE_8EM;I|kYHe80Qn7MF34SS
z49wto0*Qgl7Ghvv0ND@nH^^)d9~5sOF_63nR34-r<VSI+n?ZJi<Rzf~0f~e3gZQAh
zhPegg7iq9t8tg&p6`_6sxyOuw6&#KrcY&0E%>2Q?!~lvjM+Q~~klmu-uxDTZ`NtOO
z7cm9~29P+253*MZnqLDMKsf~zwhRm)F_4)sF<AzP7|2~PF;Lus)PdqVfPozxfAS0v
z{UG%qd63&DGO&W>K=BN+8>9y0K9FCO7#P6$0^~kB24)5jAEfRt10#b410w?fYA#~M

diff --git a/projects/particle_simulation/src/main.cpp b/projects/particle_simulation/src/main.cpp
index 4b798ed0..c1c0b59e 100644
--- a/projects/particle_simulation/src/main.cpp
+++ b/projects/particle_simulation/src/main.cpp
@@ -49,9 +49,9 @@ int main(int argc, const char** argv) {
 
     testBuffer.fill(vec_data);
 
-    auto triangleIndexBuffer = core.createBuffer<uint16_t>(vkcv::BufferType::INDEX, n, vkcv::BufferMemoryType::DEVICE_LOCAL);
+    auto particleIndexBuffer = core.createBuffer<uint16_t>(vkcv::BufferType::INDEX, n, vkcv::BufferMemoryType::DEVICE_LOCAL);
     uint16_t indices[3] = { 0, 1, 2 };
-    triangleIndexBuffer.fill(&indices[0], sizeof(indices));
+    particleIndexBuffer.fill(&indices[0], sizeof(indices));
 
     std::cout << "Physical device: " << physicalDevice.getProperties().deviceName << std::endl;
 
@@ -78,6 +78,7 @@ int main(int argc, const char** argv) {
     particleShaderProgram.reflectShader(vkcv::ShaderStage::FRAGMENT);
 
     std::vector<vkcv::DescriptorBinding> descriptorBindings = {
+            vkcv::DescriptorBinding(vkcv::DescriptorType::UNIFORM_BUFFER,   1, vkcv::ShaderStage::FRAGMENT),
             vkcv::DescriptorBinding(vkcv::DescriptorType::UNIFORM_BUFFER,   1, vkcv::ShaderStage::FRAGMENT)};
     vkcv::DescriptorSetHandle descriptorSet = core.createDescriptorSet(descriptorBindings);
 
@@ -91,13 +92,19 @@ int main(int argc, const char** argv) {
             true);
 
     vkcv::PipelineHandle particlePipeline = core.createGraphicsPipeline(particlePipelineDefinition);
-    vkcv::Buffer<glm_vec4> color = core.createBuffer<glm_vec4>(
+    vkcv::Buffer<glm::vec4> color = core.createBuffer<glm::vec4>(
             vkcv::BufferType::UNIFORM,
             1
             );
 
+    vkcv::Buffer<glm::vec4> position = core.createBuffer<glm::vec4>(
+            vkcv::BufferType::UNIFORM,
+            1
+    );
+
     vkcv::DescriptorWrites setWrites;
-    setWrites.uniformBufferWrites = {vkcv::UniformBufferDescriptorWrite(0,color.getHandle())};
+    setWrites.uniformBufferWrites = {vkcv::UniformBufferDescriptorWrite(0,color.getHandle()),
+                                     vkcv::UniformBufferDescriptorWrite(1,position.getHandle())};
     core.writeResourceDescription(descriptorSet,0,setWrites);
 
     if (!particlePipeline)
@@ -108,8 +115,8 @@ int main(int argc, const char** argv) {
 
     const vkcv::ImageHandle swapchainInput = vkcv::ImageHandle::createSwapchainImageHandle();
 
-    const vkcv::Mesh renderMesh({}, triangleIndexBuffer.getVulkanHandle(), 3);
-    vkcv::DrawcallInfo drawcalls(renderMesh, {});
+    const vkcv::Mesh renderMesh({}, particleIndexBuffer.getVulkanHandle(), 3);
+    vkcv::DrawcallInfo drawcalls(renderMesh, {vkcv::DescriptorSetUsage(0, core.getDescriptorSet(descriptorSet).vulkanHandle)});
 
     auto start = std::chrono::system_clock::now();
 
-- 
GitLab