X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=resample_effect.frag;h=a31df17edb1007f5f9a76d6a5dbf1888087a214a;hp=6aac29d72674cc93ce6f605c14c9a59d518d6182;hb=61f2d34b4b34791d346f3a9954975e4e67229f05;hpb=fb92a4e217a92ecf83b7812cc6933f6f3048b752 diff --git a/resample_effect.frag b/resample_effect.frag index 6aac29d..a31df17 100644 --- a/resample_effect.frag +++ b/resample_effect.frag @@ -3,8 +3,10 @@ uniform sampler2D PREFIX(sample_tex); uniform int PREFIX(num_samples); +uniform float PREFIX(num_loops); uniform float PREFIX(sample_x_scale); uniform float PREFIX(sample_x_offset); +uniform float PREFIX(slice_height); // Sample a single weight. First fetch information about where to sample // and the weight from sample_tex, and then read the pixel itself. @@ -13,16 +15,16 @@ vec4 PREFIX(do_sample)(vec2 tc, int i) vec2 sample_tc; sample_tc.x = float(i) * PREFIX(sample_x_scale) + PREFIX(sample_x_offset); #if DIRECTION_VERTICAL - sample_tc.y = tc.y; + sample_tc.y = tc.y * PREFIX(num_loops); #else - sample_tc.y = tc.x; + sample_tc.y = tc.x * PREFIX(num_loops); #endif vec2 sample = texture2D(PREFIX(sample_tex), sample_tc).rg; #if DIRECTION_VERTICAL - tc.y = sample.g; + tc.y = sample.g + floor(sample_tc.y) * PREFIX(slice_height); #else - tc.x = sample.g; + tc.x = sample.g + floor(sample_tc.y) * PREFIX(slice_height); #endif return vec4(sample.r) * INPUT(tc); }