Barrel distortion as parameter

This commit is contained in:
saschawillems 2018-06-08 21:07:51 +02:00
parent a122c2380a
commit 0eb306ec9e
3 changed files with 11 additions and 3 deletions

View file

@ -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));

View file

@ -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<VkDescriptorSetLayoutBinding> 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<VkWriteDescriptorSet> 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();
}
}
}