summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMuhammad Faiz <mfcc64@gmail.com>2016-06-24 00:49:10 +0700
committerwm4 <wm4@nowhere>2016-06-28 19:52:55 +0200
commitd5615102d5bce7c506279a2578a34da25f91301f (patch)
tree1c04124e5c7637a0d41ecc5e4f546818b81b7dc9
parent40c9b380232acdb159952bd8926851bb50ef78ea (diff)
downloadmpv-d5615102d5bce7c506279a2578a34da25f91301f.tar.bz2
mpv-d5615102d5bce7c506279a2578a34da25f91301f.tar.xz
vo_opengl: add output_size uniform to custom shader
logically, scaler should know its input and output size Signed-off-by: wm4 <wm4@nowhere>
-rw-r--r--DOCS/man/vo.rst3
-rw-r--r--video/out/opengl/video.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/DOCS/man/vo.rst b/DOCS/man/vo.rst
index d9d4bb4d91..b8b7244c00 100644
--- a/DOCS/man/vo.rst
+++ b/DOCS/man/vo.rst
@@ -629,6 +629,9 @@ Available video output drivers are:
never resets (regardless of seeks).
vec2 image_size
The size in pixels of the input image.
+ vec2 target_size
+ The size in pixels of the visible part of the scaled (and possibly
+ cropped) image.
For example, a shader that inverts the colors could look like this::
diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c
index a704a261df..592dfa6e56 100644
--- a/video/out/opengl/video.c
+++ b/video/out/opengl/video.c
@@ -1239,6 +1239,9 @@ static void load_shader(struct gl_video *p, struct bstr body)
gl_sc_uniform_f(p->sc, "frame", p->frames_uploaded);
gl_sc_uniform_vec2(p->sc, "image_size", (GLfloat[]){p->image_params.w,
p->image_params.h});
+ gl_sc_uniform_vec2(p->sc, "target_size",
+ (GLfloat[]){p->dst_rect.x1 - p->dst_rect.x0,
+ p->dst_rect.y1 - p->dst_rect.y0});
}
static const char *get_custom_shader_fn(struct gl_video *p, const char *body)