diff options
author | Niklas Haas <git@nand.wakku.to> | 2015-02-23 22:41:13 +0100 |
---|---|---|
committer | Niklas Haas <git@nand.wakku.to> | 2015-02-24 00:29:24 +0100 |
commit | 71a20f7c981ed66e1ba2e4c90c258c7506a9fb6b (patch) | |
tree | 053c30c962cd983df1de2436dbc83622efa3fd64 /video/out/gl_video.c | |
parent | c52833bf16c9f4cc2bb676d13df86ef6be30f434 (diff) | |
download | mpv-71a20f7c981ed66e1ba2e4c90c258c7506a9fb6b.tar.bz2 mpv-71a20f7c981ed66e1ba2e4c90c258c7506a9fb6b.tar.xz |
vo_opengl: explicitly check potential candidates for polar filters
This adds a small check for candidates that could potentially be inside
the radius, but aren't necessarily. This speeds up performance by a
negligible amount on my hardware, but it's mainly a prerequisite for a
further change (using a larger true radius).
Diffstat (limited to 'video/out/gl_video.c')
-rw-r--r-- | video/out/gl_video.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/video/out/gl_video.c b/video/out/gl_video.c index f43ad71858..6cff529843 100644 --- a/video/out/gl_video.c +++ b/video/out/gl_video.c @@ -829,8 +829,8 @@ static void shader_setup_scaler(char **shader, struct scaler *scaler, int pass) int xx = x > 0 ? x-1 : x; double d = sqrt(xx*xx + yy*yy); - // Samples outside the radius are unnecessary - if (d < radius) { + if (d < radius - 1) { + // Samples definitely inside the main ring APPENDF(shader, "SAMPLE_POLAR_%s(LUT, %f, %d, %d) \\\n ", // The center 4 coefficients are the primary // contributors, used to clamp the result for @@ -838,6 +838,10 @@ static void shader_setup_scaler(char **shader, struct scaler *scaler, int pass) (x >= 0 && y >= 0 && x <= 1 && y <= 1) ? "PRIMARY" : "HELPER", (double)radius, x, y); + } else if (d < radius) { + // Samples on the edge, these are potential values + APPENDF(shader, "SAMPLE_POLAR_POTENTIAL(LUT, %f, %d, %d) \\\n ", + (double)radius, x, y); } } } |