From 0eb306ec9e1e90e0071a957dfd495391b0c7eae8 Mon Sep 17 00:00:00 2001 From: saschawillems Date: Fri, 8 Jun 2018 21:07:51 +0200 Subject: [PATCH] Barrel distortion as parameter --- data/shaders/multiview/viewdisplay.frag | 7 ++++++- data/shaders/multiview/viewdisplay.frag.spv | Bin 2008 -> 2296 bytes examples/multiview/multiview.cpp | 7 +++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/data/shaders/multiview/viewdisplay.frag b/data/shaders/multiview/viewdisplay.frag index daf2e282..0549b851 100644 --- a/data/shaders/multiview/viewdisplay.frag +++ b/data/shaders/multiview/viewdisplay.frag @@ -2,6 +2,11 @@ layout (binding = 1) uniform sampler2DArray samplerView; +layout (binding = 0) uniform UBO +{ + layout(offset = 272) float distortionAlpha; +} ubo; + layout (location = 0) in vec2 inUV; layout (location = 0) out vec4 outColor; @@ -9,7 +14,7 @@ layout (constant_id = 0) const float VIEW_LAYER = 0.0f; void main() { - const float alpha = 0.2; + const float alpha = ubo.distortionAlpha; vec2 p1 = vec2(2.0 * inUV - 1.0); vec2 p2 = p1 / (1.0 - alpha * length(p1)); diff --git a/data/shaders/multiview/viewdisplay.frag.spv b/data/shaders/multiview/viewdisplay.frag.spv index cac563e41629bc1e4a0698aa0987d1ec3e647911..464fde040f8339bdda66a37ec9d6c8acb6427fb8 100644 GIT binary patch literal 2296 zcmZ9MXHOJB5QZ1w#4aku?jd#%6??@~5eq6R)rJ^IyaYHxiC;Cw#83Vr;|Kqfu_Puw z&)%-Nu*qa*-kF_wx7M%fXbhn)tPX3!>rfqA!YYsu)`P112c8aeFD^}WpE-Ndj7_0l z6=R!2V`#uuW+%&Y;;qPiq=`In8er8^HH7aJEP&SL>#rd;IWzxu5?vs7EqeIIBN#MB z8#hdq7ndpvOXbR3DQ23t9(?&tCC=G~J%6fNUk>HD;Sp4f?K9R>jh%?G#q!j&ej#$L zEHB-x%v2Vt`Gqiqu{b$9KQp~BQl5Sn^G3l&?)HsN43x(Eo`i4*RGy9wq=~ilC+@Db zpLNM^KjO%Kd)1A;Jonc4?pv)dkJ|bA&ZkwJFDGrsHg?#)?Qrmfv|F)Oql-}*;#qhe zVtW(UYP=z=19OgRx(s)H`HQvSZ$K9j`*kLNBetW6zX@%w_1f^aBwNh*R8*Lwbd3$M#h{JjMT$4C*oijDQ z@oR{EUB_LtT)nf_zlU~z#pS8*xrrHnfVRK!9qi^~wDYa!SgCh0lj{`ooc}atg@{>S z-*b2L;9JXccgSxHEoT2NI@|XZ;+ksZ9QW0;a2*cwe}NRx_K~yiP_6HI`KD@p-%K4DbFTE{2C1Gr*F)2Z$muuFU;59p0H;0V8V7{dk>V4 z3EPEjuCd2p_SubyJ2JKhTg)@a^?YyU8k3W27R#K9*kYM~JGQ)Ye1D2>psRg55bNJS zjD1Rc4q!XixV+6hh`0`8na`nw8~dErcNn{f7?Y#tAeK2C!4}Ikj$-FM`jBcI12fN9 z-rp{4ao8ypYrKvv zp4V8y7ITgA$aU12hv#h{xtVVddE7!fH zhs*q5AUU*syg%Qq+>`HHO}^*sdriJ`PDg)~{o=;0shmM9acadDOa95|AES$XP9fIw4vl?? z{ZC{2{*24h+;&9X#!~+?5jXZR&T|&qzQ*L_If^9?ewSjY#(C^?Chua64lwhKrSt5< z?m#+`R99?*J-+KJh;@4qd&&7KBL0P(ZggM7d>cRE){l1mA>Y_FM9jCLooZjlF0bt$ zsQBkto4>pu<}AP2pX#W8@FMI#fY`@(XTCk;aU1QDhdH+pF?nbw9z)pj7(~*Hcd*6N zjKkPs&M1#mN1b@w#kP;!%(sU;M$j&Km~#&ilZSTVaUZ*!$0(S1I*&1Iv2-4(jymxe z$F`5$%(sVk>$hgi89lctL`;q|XqOztA0p2XIcmFS7F|H*qVM!i(zkHd) F$UmNadTIaw diff --git a/examples/multiview/multiview.cpp b/examples/multiview/multiview.cpp index 167a9bfa..f07ffa81 100644 --- a/examples/multiview/multiview.cpp +++ b/examples/multiview/multiview.cpp @@ -56,6 +56,7 @@ public: glm::mat4 projection[2]; glm::mat4 modelview[2]; glm::vec4 lightPos = glm::vec4(-2.5f, -3.5f, 0.0f, 1.0f); + float distortionAlpha = 0.2f; } ubo; vks::Buffer uniformBuffer; @@ -470,7 +471,7 @@ public: Layouts */ std::vector setLayoutBindings = { - vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_VERTEX_BIT, 0), + vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, 0), vks::initializers::descriptorSetLayoutBinding(VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_SHADER_STAGE_FRAGMENT_BIT, 1) }; VkDescriptorSetLayoutCreateInfo descriptorLayout = vks::initializers::descriptorSetLayoutCreateInfo(setLayoutBindings); @@ -484,7 +485,6 @@ public: VkDescriptorSetAllocateInfo allocateInfo = vks::initializers::descriptorSetAllocateInfo(descriptorPool, &descriptorSetLayout, 1); VK_CHECK_RESULT(vkAllocateDescriptorSets(device, &allocateInfo, &descriptorSet)); std::vector writeDescriptorSets = { - // Binding 0: Vertex shader UBO vks::initializers::writeDescriptorSet(descriptorSet, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 0, &uniformBuffer.descriptor), vks::initializers::writeDescriptorSet(descriptorSet, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, &multiviewPass.descriptor), }; @@ -726,6 +726,9 @@ public: if (overlay->sliderFloat("Eye separation", &eyeSeparation, -1.0f, 1.0f)) { updateUniformBuffers(); } + if (overlay->sliderFloat("Barrel distortion", &ubo.distortionAlpha, -0.6f, 0.6f)) { + updateUniformBuffers(); + } } }