From 505dc8b4c7321048ccf38b5323a16ae3bfc66877 Mon Sep 17 00:00:00 2001 From: Tobias Frisch <tfrisch@uni-koblenz.de> Date: Mon, 24 Jan 2022 17:56:54 +0100 Subject: [PATCH] Fixed rendering of particles causing validation layer mock up Signed-off-by: Tobias Frisch <tfrisch@uni-koblenz.de> --- projects/wobble_bobble/shaders/particle.frag | 2 +- projects/wobble_bobble/shaders/particle.vert | 2 +- projects/wobble_bobble/src/main.cpp | 14 ++++++++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/projects/wobble_bobble/shaders/particle.frag b/projects/wobble_bobble/shaders/particle.frag index 1c3fae97..deee9d4e 100644 --- a/projects/wobble_bobble/shaders/particle.frag +++ b/projects/wobble_bobble/shaders/particle.frag @@ -8,7 +8,7 @@ void main() { const float value = length(passPos); if (value < 0.5f) { - outColor = vec4(1.0f - value, 0.0f, 0.0f, 1.0f); + outColor = vec4(1.0f, 0.0f, 0.0f, 1.0f - value * 2.0f); } else { discard; } diff --git a/projects/wobble_bobble/shaders/particle.vert b/projects/wobble_bobble/shaders/particle.vert index e01f9f86..d593be41 100644 --- a/projects/wobble_bobble/shaders/particle.vert +++ b/projects/wobble_bobble/shaders/particle.vert @@ -16,5 +16,5 @@ void main() { float size = particles[gl_InstanceIndex].minimal.size; passPos = vertexPos; - gl_Position = vec4(position + vec3(vertexPos * size, 0), 1); + gl_Position = vec4(position + vec3(vertexPos * size * 2.0f, 0), 1); } \ No newline at end of file diff --git a/projects/wobble_bobble/src/main.cpp b/projects/wobble_bobble/src/main.cpp index bfcc6143..e76412ea 100644 --- a/projects/wobble_bobble/src/main.cpp +++ b/projects/wobble_bobble/src/main.cpp @@ -247,6 +247,16 @@ int main(int argc, const char **argv) { ) }); + vkcv::DescriptorSetLayoutHandle gfxSetLayout = core.createDescriptorSetLayout( + gfxProgram.getReflectedDescriptors().at(0) + ); + + vkcv::DescriptorSetHandle gfxSet = core.createDescriptorSet(gfxSetLayout); + + vkcv::DescriptorWrites writesGfx; + writesGfx.storageBufferWrites.push_back(vkcv::BufferDescriptorWrite(0, particles.getHandle())); + core.writeDescriptorSet(gfxSet, writesGfx); + vkcv::PassHandle gfxPass = core.createPass(passConfig); vkcv::VertexLayout vertexLayout ({ @@ -259,7 +269,7 @@ int main(int argc, const char **argv) { gfxPipelineConfig.m_Height = windowHeight; gfxPipelineConfig.m_PassHandle = gfxPass; gfxPipelineConfig.m_VertexLayout = vertexLayout; - gfxPipelineConfig.m_DescriptorLayouts = { core.getDescriptorSetLayout(transformParticlesToGridLayouts[0]).vulkanHandle }; + gfxPipelineConfig.m_DescriptorLayouts = { core.getDescriptorSetLayout(gfxSetLayout).vulkanHandle }; gfxPipelineConfig.m_UseDynamicViewport = true; gfxPipelineConfig.m_blendMode = vkcv::BlendMode::Additive; @@ -288,7 +298,7 @@ int main(int argc, const char **argv) { drawcalls.push_back(vkcv::DrawcallInfo( triangleMesh, - { vkcv::DescriptorSetUsage(0, core.getDescriptorSet(transformParticlesToGridSets[0]).vulkanHandle) }, + { vkcv::DescriptorSetUsage(0, core.getDescriptorSet(gfxSet).vulkanHandle) }, particles.getCount() )); -- GitLab