View difference between Paste ID: 1UP5c5d2 and c4emGGXn
SHOW: | | - or go back to the newest paste.
1
#version 450
2
layout(set = 0, binding = 0, std140) uniform UBO
3
{
4
   mat4 MVP;
5
   vec4 SourceSize; // Not used here, but doesn't hurt
6
};
7
8
float color_blend(float color_prev, float color_curr, float x)
9
{
10
   float sum = color_curr;
11
   sum = sum + color_prev;
12
   return sum / 2.0;
13
}
14
15
#pragma name Composite blending
16
17
#pragma stage vertex
18
layout(location = 0) in vec4 Position;
19
layout(location = 1) in vec2 TexCoord;
20
layout(location = 0) out vec2 vTexCoord;
21
void main()
22
{
23
   gl_Position = MVP * Position;
24
   vTexCoord = TexCoord;
25
}
26
27
28
#pragma stage fragment
29
layout(location = 0) in vec2 vTexCoord;
30
layout(location = 0) out vec4 FragColor;
31
layout(set = 0, binding = 2) uniform sampler2D Source;
32
33
void main()
34
{
35
   vec2 onePixel = vec2(1.0, 1.0) / SourceSize.xy;
36
   vec3 currentColor = texture(Source, vTexCoord).rgb;
37
   vec3 prevColor = texture(Source, vTexCoord - vec2(onePixel.x, 0)).rgb;
38
39
   float r = color_blend(prevColor.r, currentColor.r, vTexCoord.x);
40
   float g = color_blend(prevColor.g, currentColor.g, vTexCoord.x);
41
   float b = color_blend(prevColor.b, currentColor.b, vTexCoord.x);
42
   FragColor = vec4(r, g, b, 1.0);
43
}