Render views using quads with barrel distortion (instead of directly blitting result to swapchain)
This commit is contained in:
parent
671cebdc63
commit
a122c2380a
5 changed files with 394 additions and 328 deletions
20
data/shaders/multiview/viewdisplay.frag
Normal file
20
data/shaders/multiview/viewdisplay.frag
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#version 450
|
||||
|
||||
layout (binding = 1) uniform sampler2DArray samplerView;
|
||||
|
||||
layout (location = 0) in vec2 inUV;
|
||||
layout (location = 0) out vec4 outColor;
|
||||
|
||||
layout (constant_id = 0) const float VIEW_LAYER = 0.0f;
|
||||
|
||||
void main()
|
||||
{
|
||||
const float alpha = 0.2;
|
||||
|
||||
vec2 p1 = vec2(2.0 * inUV - 1.0);
|
||||
vec2 p2 = p1 / (1.0 - alpha * length(p1));
|
||||
p2 = (p2 + 1.0) * 0.5;
|
||||
|
||||
bool inside = ((p2.x >= 0.0) && (p2.x <= 1.0) && (p2.y >= 0.0 ) && (p2.y <= 1.0));
|
||||
outColor = inside ? texture(samplerView, vec3(p2, VIEW_LAYER)) : vec4(0.0);
|
||||
}
|
||||
BIN
data/shaders/multiview/viewdisplay.frag.spv
Normal file
BIN
data/shaders/multiview/viewdisplay.frag.spv
Normal file
Binary file not shown.
14
data/shaders/multiview/viewdisplay.vert
Normal file
14
data/shaders/multiview/viewdisplay.vert
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#version 450
|
||||
|
||||
layout (location = 0) out vec2 outUV;
|
||||
|
||||
out gl_PerVertex
|
||||
{
|
||||
vec4 gl_Position;
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
outUV = vec2((gl_VertexIndex << 1) & 2, gl_VertexIndex & 2);
|
||||
gl_Position = vec4(outUV * 2.0f - 1.0f, 0.0f, 1.0f);
|
||||
}
|
||||
BIN
data/shaders/multiview/viewdisplay.vert.spv
Normal file
BIN
data/shaders/multiview/viewdisplay.vert.spv
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue