]> git.sesse.net Git - nageru/blob - densify.frag
Add the densification step, in theory now providing us with flow. But still too buggy...
[nageru] / densify.frag
1 #version 450 core
2
3 in vec2 image_pos;
4 flat in vec2 flow_du;
5 out vec3 flow_contribution;
6
7 uniform sampler2D image0_tex, image1_tex;
8
9 void main()
10 {
11         // Equation (3) from the paper. We're using additive blending, so the
12         // sum will happen automatically for us, and normalization happens on
13         // next read.
14         //
15         // Note that equation (2) says 1 for the minimum error, but the code says 2.0.
16         // And it says L2 norm, but really, the code does absolute value even for
17         // L2 error norm (it uses a square root formula for L1 norm).
18         float diff = texture(image0_tex, image_pos).x - texture(image1_tex, image_pos + flow_du).x;
19         float weight = 1.0 / max(abs(diff), 2.0 / 255.0);
20         flow_contribution = vec3(flow_du.x * weight, flow_du.y * weight, weight);
21 }