From d5615102d5bce7c506279a2578a34da25f91301f Mon Sep 17 00:00:00 2001 From: Muhammad Faiz Date: Fri, 24 Jun 2016 00:49:10 +0700 Subject: vo_opengl: add output_size uniform to custom shader logically, scaler should know its input and output size Signed-off-by: wm4 --- DOCS/man/vo.rst | 3 +++ video/out/opengl/video.c | 3 +++ 2 files changed, 6 insertions(+) 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) -- cgit v1.2.3