From 1c27849121cb94007829879bdc9879eeb5547db8 Mon Sep 17 00:00:00 2001
From: Sebastian Gaida <gaida@ca-digit.com>
Date: Tue, 8 Jun 2021 18:25:25 +0200
Subject: [PATCH] [#69] add uniform buffer for color

---
 projects/particle_simulation/shaders/frag.spv | Bin 808 -> 832 bytes
 .../particle_simulation/shaders/shader.frag   |   5 ++-
 projects/particle_simulation/src/main.cpp     |  34 +++++++++++++++++-
 3 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/projects/particle_simulation/shaders/frag.spv b/projects/particle_simulation/shaders/frag.spv
index d926fa4b4ad738f5aaca2f00fbb92a91d024fd12..2bda54b389e0b6a615e819f05c1ac07bbd714f86 100644
GIT binary patch
literal 832
zcmYk4%Syvg5QfLb)JxTRcUM}w6p9NKK@?OZE((f1K!|O?NNhrr2)>?A<wo%T(o}QG
zWHSHx=FH4VokoAjY{6D--S%y^wyYt=tYyv8d&B49Aj`*tlhb2}4RcBmrY&Ys9(xa>
z2^%Z2O)+RXTyKs}H2YG*qISKZfBkghXJHylgFN)J*I*n@{p95>9OW6zDvbB=;0^Em
zQJVT${uzgU98E%h98E<<A0gawjf*CuxER*~S46!p*W9wVq{wfRIGL&?DO58nDy1of
zm^G>(m^H=oB+l7UTs$UOlt&3eH}ykfrT?->*Y>2<Q1f&ichmvay06vj&m=KU*$4Lq
zPyNHcy;<C=V)Ey;>-lK&e0r$o6O+$3+z|!WE5Fn%XJ7A4X<gZY>hm3mxzDbi%kumS
z&@ZZ(nb10Va)<1}w&Xb<4VIXB(DoFs%Xei9vZE^A&^wF#wmdB7(aW|xy`WKxIniKu
wD;<qm#LNnNrhCFO1B+h2rMU9fdQxXoMsL)=6iLl38Tyqnn34EL-JZ*S0Ti@MI{*Lx

literal 808
zcmYk4%}&Bl5QT@IB7*WGMt1~csUa@Zn3!nPn7Sar=mRteO{_sm+G66)XY;Atn0USd
z+DnG%Irp49Gq)||dmCmstJt>f+Hy55FUG8Dr8K*Pr$IkXCjFDsV-z(jq(U@xX^P6k
z+bEc^v8iZC1E<6FRM3fLUosT6>kho@#~Uy9=c8zp_+I=nn)s0yKEL|oBt}y~;|_=J
z;LaP*=U$wAOnq+}%zSSWL{bIsKDu&77tF@f#Uv|mq{#N=n3MJvE|S}D8b)eKOi`1Y
zEmllP445@uiO|%A*Cx(s3NIeQI7ot!p-cL~vF87@l#aE;Wu)fnJnpECSnEDhv$v$A
zDWrXHZ|JFi@VB?b-4({auATM6t^M?n^@H*A4qH;8>!xpN>DkkBNnA&<ull@4F!$Nf
ze_5HY0RCcynF;Pt7;Qyi_Ib6&)fAf@$%SuAfd-!7xvdkpfA*<UQ>HgK>VUZmIQnWR
qQ;WKInHdi6jxstpykO>rJJX$!nTLh{Ta2T8Da0)F_hUIbSNsBx&P+A{

diff --git a/projects/particle_simulation/shaders/shader.frag b/projects/particle_simulation/shaders/shader.frag
index 215fa788..87ae41a7 100644
--- a/projects/particle_simulation/shaders/shader.frag
+++ b/projects/particle_simulation/shaders/shader.frag
@@ -8,11 +8,10 @@ layout(set=0, binding=0) uniform uColor {
 } Color;
 
 layout(set=0,binding=1) uniform uPosition{
-	vec3 position;
+	vec2 position;
 } Position;
 
 void main()
 {
-//	outColor = Color.color;
-	outColor = vec4(1.0f, 0.0f,0.f,1.f);
+	outColor = Color.color;
 }
\ No newline at end of file
diff --git a/projects/particle_simulation/src/main.cpp b/projects/particle_simulation/src/main.cpp
index c1c0b59e..1d5f4de5 100644
--- a/projects/particle_simulation/src/main.cpp
+++ b/projects/particle_simulation/src/main.cpp
@@ -4,6 +4,25 @@
 #include <vkcv/camera/CameraManager.hpp>
 #include <chrono>
 
+uint32_t findMemoryType( vk::PhysicalDeviceMemoryProperties const & memoryProperties,
+                         uint32_t                                   typeBits,
+                         vk::MemoryPropertyFlags                    requirementsMask )
+{
+    uint32_t typeIndex = uint32_t( ~0 );
+    for ( uint32_t i = 0; i < memoryProperties.memoryTypeCount; i++ )
+    {
+        if ( ( typeBits & 1 ) &&
+             ( ( memoryProperties.memoryTypes[i].propertyFlags & requirementsMask ) == requirementsMask ) )
+        {
+            typeIndex = i;
+            break;
+        }
+        typeBits >>= 1;
+    }
+    assert( typeIndex != uint32_t( ~0 ) );
+    return typeIndex;
+}
+
 int main(int argc, const char** argv) {
     const char* applicationName = "Particlesystem";
 
@@ -97,7 +116,7 @@ int main(int argc, const char** argv) {
             1
             );
 
-    vkcv::Buffer<glm::vec4> position = core.createBuffer<glm::vec4>(
+    vkcv::Buffer<glm::vec2> position = core.createBuffer<glm::vec2>(
             vkcv::BufferType::UNIFORM,
             1
     );
@@ -120,6 +139,14 @@ int main(int argc, const char** argv) {
 
     auto start = std::chrono::system_clock::now();
 
+    glm::vec4 colorData = glm::vec4(1.0f,1.0f,0.0f,1.0f);
+
+    glm::vec2 pos = glm::vec2(1.f);
+
+    window.e_mouseMove.add([&]( double offsetX, double offsetY) {
+        pos = glm::vec2(static_cast<float>(offsetX), static_cast<float>(offsetY));
+    });
+
     while (window.isWindowOpen())
     {
         window.pollEvents();
@@ -129,6 +156,10 @@ int main(int argc, const char** argv) {
             continue;
         }
 
+        color.fill(&colorData);
+
+        position.fill(&pos);
+
         auto end = std::chrono::system_clock::now();
         auto deltatime = end - start;
         start = end;
@@ -149,5 +180,6 @@ int main(int argc, const char** argv) {
         core.submitCommandStream(cmdStream);
         core.endFrame();
     }
+
     return 0;
 }
-- 
GitLab