]> git.sesse.net Git - nageru/blobdiff - motion_search.vert
Allow symlinked frame files. Useful for testing.
[nageru] / motion_search.vert
index 0e782aa8c2fcab55267b9cf67608768bce01f39e..d0232767fbcef03434d18ad532ffbc0e0bbf870d 100644 (file)
@@ -1,10 +1,13 @@
 #version 450 core
+#extension GL_ARB_shader_viewport_layer_array : require
 
 layout(location=0) in vec2 position;
-out vec2 flow_tc;
+out vec3 flow_tc;
 out vec2 patch_center;
+flat out int ref_layer, search_layer;
 
-uniform sampler2D flow_tex;
+uniform sampler2DArray flow_tex;
+uniform vec2 out_flow_size;
 
 void main()
 {
@@ -23,9 +26,8 @@ void main()
        //
        //   a = 1 / (w - 1)
        //   b = w / 2 (w - 1)
-       vec2 flow_size = textureSize(flow_tex, 0);
-       vec2 a = flow_size / (flow_size - 1);
-       vec2 b = -1.0 / (2 * (flow_size - 1.0));
+       vec2 a = out_flow_size / (out_flow_size - 1);
+       vec2 b = -1.0 / (2 * (out_flow_size - 1.0));
        patch_center = a * position + b;
 
        // The result of glOrtho(0.0, 1.0, 0.0, 1.0, 0.0, 1.0) is:
@@ -35,5 +37,11 @@ void main()
        //   0.000  0.000 -2.000 -1.000
        //   0.000  0.000  0.000  1.000
        gl_Position = vec4(2.0 * position.x - 1.0, 2.0 * position.y - 1.0, -1.0, 1.0);
-       flow_tc = position;
+       flow_tc = vec3(position, gl_InstanceID);
+
+       gl_Layer = gl_InstanceID;
+
+       // Forward flow (0) goes from 0 to 1. Backward flow (1) goes from 1 to 0.
+       ref_layer = gl_InstanceID;
+       search_layer = 1 - gl_InstanceID;
 }