user@user-pc:~/Videos$ mpv --profile=svp --msg-level=all=debug DEFA\ trailers.mkv [cplayer] Command line options: '--profile=svp' '--msg-level=all=debug' 'DEFA trailers.mkv' [cplayer] mpv 0.30.0-375-g71ddb22b39 Copyright © 2000-2019 mpv/MPlayer/mplayer2 projects [cplayer] built on UNKNOWN [cplayer] ffmpeg library versions: [cplayer] libavutil 56.36.101 [cplayer] libavcodec 58.65.100 [cplayer] libavformat 58.35.101 [cplayer] libswscale 5.6.100 [cplayer] libavfilter 7.69.101 [cplayer] libswresample 3.6.100 [cplayer] ffmpeg version: N-96108-g191df4f2d1 [cplayer] [cplayer] Configuration: ./waf configure --enable-pulse --enable-openal --enable-alsa --enable-wayland --enable-x11 --enable-xv --enable-gl-x11 --enable-egl-x11 --enable-gl-wayland --enable-gl --enable-caca --enable-drm --enable-jpeg --enable-dvbin --enable-vapoursynth --enable-libmpv-shared --enable-cdda --enable-dvdnav --enable-dvbin --enable-sdl2 --enable-libarchive --enable-libsmbclient --enable-openal --disable-build-date --enable-iconv --enable-lua --enable-libass --enable-libass-osd --enable-libbluray --enable-lcms2 --enable-libavdevice --enable-uchardet [cplayer] List of enabled features: 52arch aligned_alloc alsa asm atomics caca cdda cplayer cplugins cuda-hwaccel debug-build drm drmprime dvbin dvdnav egl egl-helpers egl-x11 fchmod ffmpeg ffnvcodec gl gl-wayland gl-x11 glibc-thread-name glob glob-posix gnuc gpl iconv jack jpeg lcms2 libarchive libass libass-osd libav-any libavcodec libavdevice libavutil libbluray libdl libm libmpv-shared libplacebo librt libsmbclient linux-fstatfs lua memfd_create openal optimize oss-audio plain-gl posix posix-or-mingw posix-spawn posix-spawn-native pthreads pulse rubberband sdl2 sdl2-audio sdl2-gamepad sdl2-video shaderc shaderc-shared stdatomic uchardet vaapi vaapi-egl vaapi-vulkan vaapi-wayland vaapi-x-egl vaapi-x11 vapoursynth vdpau vdpau-gl-x11 vt.h vulkan wayland wayland-protocols x11 xv zimg zlib [global] config path: '' -> '/home/user/.config/mpv' [global] config path: 'encoding-profiles.conf' -/-> '/home/user/.config/mpv/encoding-profiles.conf' [global] config path: 'encoding-profiles.conf' -/-> '/home/user/.mpv/encoding-profiles.conf' [global] config path: 'encoding-profiles.conf' -> '/usr/local/etc/mpv/encoding-profiles.conf' [cplayer] Reading config file /usr/local/etc/mpv/encoding-profiles.conf [cplayer] Applying profile 'default'... [global] config path: 'mpv.conf' -> '/home/user/.config/mpv/mpv.conf' [global] config path: 'config' -/-> '/home/user/.config/mpv/config' [global] config path: 'mpv.conf' -/-> '/home/user/.mpv/mpv.conf' [global] config path: 'config' -/-> '/home/user/.mpv/config' [global] config path: 'mpv.conf' -/-> '/usr/local/etc/mpv/mpv.conf' [global] config path: 'config' -/-> '/usr/local/etc/mpv/config' [cplayer] Reading config file /home/user/.config/mpv/mpv.conf [cplayer] Applying profile 'default'... [cplayer] Setting option 'profile' = 'general' (flags = 4) [cplayer] Applying profile 'general'... [cplayer] Setting option 'profile' = 'gpu-hq' (flags = 4) [cplayer] Applying profile 'gpu-hq'... [cplayer] Setting option 'scale' = 'spline36' (flags = 4) [cplayer] Setting option 'cscale' = 'spline36' (flags = 4) [cplayer] Setting option 'dscale' = 'mitchell' (flags = 4) [cplayer] Setting option 'dither-depth' = 'auto' (flags = 4) [cplayer] Setting option 'correct-downscaling' = 'yes' (flags = 4) [cplayer] Setting option 'linear-downscaling' = 'yes' (flags = 4) [cplayer] Setting option 'sigmoid-upscaling' = 'yes' (flags = 4) [cplayer] Setting option 'deband' = 'yes' (flags = 4) [cplayer] Setting option 'scale' = 'ewa_lanczossharp' (flags = 4) [cplayer] Setting option 'cscale' = 'ewa_lanczossharp' (flags = 4) [cplayer] Setting option 'video-sync' = 'display-resample' (flags = 4) [cplayer] Setting option 'interpolation' = '' (flags = 4) [cplayer] Setting option 'tscale' = 'oversample' (flags = 4) [cplayer] Setting option 'sub-scale' = '0.800' (flags = 4) [cplayer] Setting option 'profile' = 'svp' (flags = 8) [cplayer] Applying profile 'svp'... [cplayer] Setting option 'input-ipc-server' = '/tmp/mpvsocket' (flags = 12) [cplayer] Setting option 'hr-seek-framedrop' = 'no' (flags = 12) [cplayer] Setting option 'resume-playback' = 'no' (flags = 12) [cplayer] Setting option 'hwdec' = 'audio-copy' (flags = 12) [cplayer] Setting option 'sub-scale' = '80' (flags = 12) [cplayer] Setting option 'msg-level' = 'all=debug' (flags = 8) [global] config path: 'input.conf' -> '/home/user/.config/mpv/input.conf' [global] config path: 'input.conf' -/-> '/home/user/.mpv/input.conf' [global] config path: 'input.conf' -/-> '/usr/local/etc/mpv/input.conf' [global] user path: '/home/user/.config/mpv/input.conf' -> '/home/user/.config/mpv/input.conf' [ifo_dvdnav] Opening /home/user/.config/mpv/input.conf [bdmv/bluray] Opening /home/user/.config/mpv/input.conf [file] Opening /home/user/.config/mpv/input.conf [file] resize stream to 131072 bytes [file] Stream opened successfully. [input] Parsing input config file /home/user/.config/mpv/input.conf [input] Input config file /home/user/.config/mpv/input.conf parsed: 2 binds [osc] Loading lua script @osc.lua... [ytdl_hook] Loading lua script @ytdl_hook.lua... [stats] Loading lua script @stats.lua... [console] Loading lua script @console.lua... [global] user path: '/tmp/mpvsocket' -> '/tmp/mpvsocket' [global] config path: 'scripts' -/-> '/home/user/.config/mpv/scripts' [global] config path: 'scripts' -/-> '/home/user/.config/mpv/scripts' [global] config path: 'scripts' -/-> '/home/user/.config/mpv/scripts' [global] config path: 'scripts' -/-> '/home/user/.mpv/scripts' [global] config path: 'scripts' -/-> '/home/user/.mpv/scripts' [global] config path: 'scripts' -/-> '/usr/local/etc/mpv/scripts' [global] config path: 'scripts' -/-> '/home/user/.config/mpv/scripts' [ipc] Starting IPC master [global] config path: 'scripts' -/-> '/home/user/.mpv/scripts' [global] config path: 'scripts' -/-> '/usr/local/etc/mpv/scripts' [osc] loading mp.defaults [global] config path: 'scripts' -/-> '/home/user/.config/mpv/scripts' [global] config path: 'scripts' -/-> '/home/user/.mpv/scripts' [global] config path: 'scripts' -/-> '/usr/local/etc/mpv/scripts' [stats] loading mp.defaults [ipc] Listening to IPC socket. [osc] loading @osc.lua [stats] loading @stats.lua [global] config path: 'scripts' -/-> '/home/user/.mpv/scripts' [global] config path: 'scripts' -/-> '/usr/local/etc/mpv/scripts' [cplayer] Waiting for scripts... [global] config path: 'scripts' -/-> '/usr/local/etc/mpv/scripts' [ytdl_hook] loading mp.defaults [console] loading mp.defaults [console] loading @console.lua [stats] reading options for stats [global] config path: 'script-opts/stats.conf' -/-> '/home/user/.config/mpv/script-opts/stats.conf' [ytdl_hook] loading @ytdl_hook.lua [global] config path: 'script-opts/stats.conf' -/-> '/home/user/.mpv/script-opts/stats.conf' [global] config path: 'script-opts/stats.conf' -/-> '/usr/local/etc/mpv/script-opts/stats.conf' [stats] script-opts/stats.conf not found. [global] config path: 'lua-settings/stats.conf' -/-> '/home/user/.config/mpv/lua-settings/stats.conf' [global] config path: 'lua-settings/stats.conf' -/-> '/home/user/.mpv/lua-settings/stats.conf' [global] config path: 'lua-settings/stats.conf' -/-> '/usr/local/etc/mpv/lua-settings/stats.conf' [stats] lua-settings/stats.conf not found. [ytdl_hook] reading options for ytdl_hook [global] config path: 'script-opts/ytdl_hook.conf' -/-> '/home/user/.config/mpv/script-opts/ytdl_hook.conf' [global] config path: 'script-opts/ytdl_hook.conf' -/-> '/home/user/.mpv/script-opts/ytdl_hook.conf' [global] config path: 'script-opts/ytdl_hook.conf' -/-> '/usr/local/etc/mpv/script-opts/ytdl_hook.conf' [ytdl_hook] script-opts/ytdl_hook.conf not found. [global] config path: 'lua-settings/ytdl_hook.conf' -/-> '/home/user/.config/mpv/lua-settings/ytdl_hook.conf' [global] config path: 'lua-settings/ytdl_hook.conf' -/-> '/home/user/.mpv/lua-settings/ytdl_hook.conf' [cplayer] Run command: define-section, flags=64, args=[input_stats, i script-binding stats/display-stats [cplayer] , default] [global] config path: 'lua-settings/ytdl_hook.conf' -/-> '/usr/local/etc/mpv/lua-settings/ytdl_hook.conf' [ytdl_hook] lua-settings/ytdl_hook.conf not found. [cplayer] Run command: enable-section, flags=64, args=[input_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_forced_stats, , force] [cplayer] Run command: enable-section, flags=64, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_stats, i script-binding stats/display-stats [cplayer] I script-binding stats/display-stats-toggle [cplayer] , default] [cplayer] Run command: enable-section, flags=64, args=[input_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_forced_stats, , force] [cplayer] Run command: enable-section, flags=64, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_stats, i script-binding stats/display-stats [cplayer] I script-binding stats/display-stats-toggle [cplayer] , default] [cplayer] Run command: enable-section, flags=64, args=[input_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_forced_stats, , force] [cplayer] Run command: enable-section, flags=64, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_stats, i script-binding stats/display-stats [cplayer] I script-binding stats/display-stats-toggle [cplayer] , default] [cplayer] Run command: enable-section, flags=64, args=[input_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_forced_stats, , force] [cplayer] Run command: enable-section, flags=64, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_stats, i script-binding stats/display-stats [cplayer] I script-binding stats/display-stats-toggle [cplayer] , default] [cplayer] Run command: enable-section, flags=64, args=[input_stats, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_forced_stats, , force] [cplayer] Run command: enable-section, flags=64, args=[input_forced_stats, allow-hide-cursor+allow-vo-dragging] [osc] reading options for osc [global] config path: 'script-opts/osc.conf' -/-> '/home/user/.config/mpv/script-opts/osc.conf' [global] config path: 'script-opts/osc.conf' -/-> '/home/user/.mpv/script-opts/osc.conf' [global] config path: 'script-opts/osc.conf' -/-> '/usr/local/etc/mpv/script-opts/osc.conf' [osc] script-opts/osc.conf not found. [console] reading options for console [global] config path: 'lua-settings/osc.conf' -/-> '/home/user/.config/mpv/lua-settings/osc.conf' [global] config path: 'script-opts/console.conf' -/-> '/home/user/.config/mpv/script-opts/console.conf' [global] config path: 'lua-settings/osc.conf' -/-> '/home/user/.mpv/lua-settings/osc.conf' [global] config path: 'script-opts/console.conf' -/-> '/home/user/.mpv/script-opts/console.conf' [global] config path: 'lua-settings/osc.conf' -/-> '/usr/local/etc/mpv/lua-settings/osc.conf' [global] config path: 'script-opts/console.conf' -/-> '/usr/local/etc/mpv/script-opts/console.conf' [osc] lua-settings/osc.conf not found. [console] script-opts/console.conf not found. [global] config path: 'lua-settings/console.conf' -/-> '/home/user/.config/mpv/lua-settings/console.conf' [global] config path: 'lua-settings/console.conf' -/-> '/home/user/.mpv/lua-settings/console.conf' [global] config path: 'lua-settings/console.conf' -/-> '/usr/local/etc/mpv/lua-settings/console.conf' [console] lua-settings/console.conf not found. [cplayer] Run command: define-section, flags=64, args=[showhide, mouse_move script-binding osc/__keybinding1 [cplayer] mouse_leave script-binding osc/__keybinding2 [cplayer] , force] [cplayer] Run command: define-section, flags=64, args=[showhide_wc, mouse_move script-binding osc/__keybinding3 [cplayer] mouse_leave script-binding osc/__keybinding4 [cplayer] , force] [cplayer] Run command: enable-section, flags=64, args=[showhide, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: enable-section, flags=64, args=[showhide_wc, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input, mbtn_left script-binding osc/__keybinding5 [cplayer] shift+mbtn_left script-binding osc/__keybinding6 [cplayer] mbtn_right script-binding osc/__keybinding7 [cplayer] mbtn_mid script-binding osc/__keybinding8 [cplayer] wheel_up script-binding osc/__keybinding9 [cplayer] wheel_down script-binding osc/__keybinding10 [cplayer] mbtn_left_dbl ignore [cplayer] shift+mbtn_left_dbl ignore [cplayer] mbtn_right_dbl ignore [cplayer] , force] [cplayer] Run command: enable-section, flags=64, args=[input, ] [cplayer] Run command: define-section, flags=64, args=[window-controls, mbtn_left script-binding osc/__keybinding11 [cplayer] , force] [cplayer] Run command: enable-section, flags=64, args=[window-controls, ] [cplayer] Run command: change-list, flags=64, args=[shared-script-properties, append, osc-margins=0.000000,0.000000,0.000000,0.000000] [cplayer] Set property: shared-script-properties -> 1 [cplayer] Run command: define-section, flags=64, args=[input_osc, , default] [cplayer] Run command: enable-section, flags=64, args=[input_osc, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_forced_osc, , force] [cplayer] Run command: enable-section, flags=64, args=[input_forced_osc, allow-hide-cursor+allow-vo-dragging] [osc] osc_init [cplayer] Run command: change-list, flags=64, args=[shared-script-properties, append, osc-margins=0.000000,0.000000,0.000000,0.000000] [cplayer] Set property: shared-script-properties -> 1 [cplayer] Run command: disable-section, flags=64, args=[input] [global] config path: 'fonts' -/-> '/home/user/.config/mpv/fonts' [global] config path: 'fonts' -/-> '/home/user/.mpv/fonts' [global] config path: 'fonts' -/-> '/usr/local/etc/mpv/fonts' [osd/libass] Shaper: FriBidi 1.0.5 (SIMPLE) HarfBuzz-ng 2.6.1 (COMPLEX) [global] config path: 'subfont.ttf' -/-> '/home/user/.config/mpv/subfont.ttf' [global] config path: 'subfont.ttf' -/-> '/home/user/.mpv/subfont.ttf' [global] config path: 'subfont.ttf' -/-> '/usr/local/etc/mpv/subfont.ttf' [global] config path: 'fonts.conf' -/-> '/home/user/.config/mpv/fonts.conf' [global] config path: 'fonts.conf' -/-> '/home/user/.mpv/fonts.conf' [global] config path: 'fonts.conf' -/-> '/usr/local/etc/mpv/fonts.conf' [osd/libass] Setting up fonts... [cplayer] Run command: define-section, flags=64, args=[input_console, , default] [cplayer] Run command: enable-section, flags=64, args=[input_console, allow-hide-cursor+allow-vo-dragging] [cplayer] Run command: define-section, flags=64, args=[input_forced_console, , force] [cplayer] Run command: enable-section, flags=64, args=[input_forced_console, allow-hide-cursor+allow-vo-dragging] [osd/libass] Using font provider fontconfig [osd/libass] Done. [cplayer] Done loading scripts. [global] config path: 'fonts' -/-> '/home/user/.config/mpv/fonts' [global] config path: 'fonts' -/-> '/home/user/.mpv/fonts' [global] config path: 'fonts' -/-> '/usr/local/etc/mpv/fonts' [cplayer] Running hook: ytdl_hook/on_load [ytdl_hook] ytdl:// hook [osd/libass] Shaper: FriBidi 1.0.5 (SIMPLE) HarfBuzz-ng 2.6.1 (COMPLEX) [global] config path: 'subfont.ttf' -/-> '/home/user/.config/mpv/subfont.ttf' [global] config path: 'subfont.ttf' -/-> '/home/user/.mpv/subfont.ttf' [global] config path: 'subfont.ttf' -/-> '/usr/local/etc/mpv/subfont.ttf' [global] config path: 'fonts.conf' -/-> '/home/user/.config/mpv/fonts.conf' [global] config path: 'fonts.conf' -/-> '/home/user/.mpv/fonts.conf' [global] config path: 'fonts.conf' -/-> '/usr/local/etc/mpv/fonts.conf' [osd/libass] Setting up fonts... [osd/libass] Using font provider fontconfig [osd/libass] Done. [ytdl_hook] not a ytdl:// url [ifo_dvdnav] Opening DEFA trailers.mkv [bdmv/bluray] Opening DEFA trailers.mkv [file] Opening DEFA trailers.mkv [file] resize stream to 131072 bytes [file] Stream opened successfully. [demux] Trying demuxers for level=normal. [demux] Trying demuxer: disc (force-level: normal) [demux] Trying demuxer: edl (force-level: normal) [demux] Trying demuxer: cue (force-level: normal) [demux] Trying demuxer: rawaudio (force-level: normal) [demux] Trying demuxer: rawvideo (force-level: normal) [demux] Trying demuxer: mkv (force-level: normal) [mkv] Found the head... [mkv] + a segment... [mkv] Parsing seek head... [mkv] |+ segment information... [mkv] float 457541.000000 [mkv] | + muxing app: Lavf58.20.100 [mkv] | + writing app: HandBrake 1.2.2 2019082100 [mkv] | + timecode scale: 1000000 [mkv] | + duration: 457.541s [mkv] | + segment uid 8e f4 ad a5 ca 2f 72 7f 83 30 3c 79 34 e9 12 f5 [mkv] |+ segment tracks... [mkv] float 48000.000000 [mkv] | + a track... [mkv] | + Track number: 1 [mkv] | + Track type: Video [mkv] | + Video track [mkv] | + Display width: 368 [mkv] | + Display height: 285 [mkv] | + Pixel width: 690 [mkv] | + Pixel height: 480 [mkv] | + Codec ID: V_MPEG4/ISO/AVC [mkv] | + CodecPrivate, length 47 [mkv] | + Language: und [mkv] | + Default duration: 40.000ms ( = 25.000 fps) [mkv] | + a track... [mkv] | + Track number: 2 [mkv] | + Name: Stereo [mkv] | + Track type: Audio [mkv] | + Audio track [mkv] | + Sampling frequency: 48000.000000 [mkv] | + Channels: 2 [mkv] | + Codec ID: A_AAC [mkv] | + CodecPrivate, length 5 [mkv] | + Language: ger [mkv] | + a track... [mkv] | + Track number: 3 [mkv] | + Track type: Subtitle [mkv] | + Codec ID: S_VOBSUB [mkv] | + CodecPrivate, length 349 [mkv] | + Language: eng [mkv] | + Default flag: 0 [mkv] | + a track... [mkv] | + Track number: 4 [mkv] | + Track type: Subtitle [mkv] | + Codec ID: S_VOBSUB [mkv] | + CodecPrivate, length 349 [mkv] | + Language: fre [mkv] | + Default flag: 0 [mkv] | + a track... [mkv] | + Track number: 5 [mkv] | + Track type: Subtitle [mkv] | + Codec ID: S_VOBSUB [mkv] | + CodecPrivate, length 349 [mkv] | + Language: spa [mkv] | + Default flag: 0 [mkv] | + a track... [mkv] | + Track number: 6 [mkv] | + Track type: Subtitle [mkv] | + Codec ID: S_VOBSUB [mkv] | + CodecPrivate, length 349 [mkv] | + Language: [mkv] | + Default flag: 0 [mkv] |+ found cluster [mkv] Seeking to 49063314 to read header element 0x1043a770. [file] stream level seek from 131072 to 49063314 [mkv] Parsing chapters... [mkv] Default edition: 0 [mkv] New edition 0 [mkv] Default edition flag: 1 [mkv] Chapter 0 from 00:00:00.000 to 00:00:48.400000000, Chapter 1 [mkv] Chapter 1 from 00:00:48.400000000 to 00:02:43.720000000, Chapter 2 [mkv] Chapter 2 from 00:02:43.720000000 to 00:05:08.320000000, Chapter 3 [mkv] Chapter 3 from 00:05:08.320000000 to 00:07:37.480000000, Chapter 4 [mkv] Seeking to 49063586 to read header element 0x1c53bb6b. [mkv] Parsing cues... [file] stream level seek from 49072124 to 2702 [mkv] All headers are parsed! [demux] Detected file format: Matroska [cplayer] Opening done: DEFA trailers.mkv [find_files] Loading external files in . [global] config path: 'sub' -/-> '/home/user/.config/mpv/sub' [global] config path: 'sub' -/-> '/home/user/.mpv/sub' [global] config path: 'sub' -/-> '/usr/local/etc/mpv/sub' [cplayer] Running hook: ytdl_hook/on_preloaded [mkv] select track 0 [mkv] select track 1 (+) Video --vid=1 (*) (h264 690x480 25.000fps) (+) Audio --aid=1 --alang=ger (*) 'Stereo' (aac 2ch 48000Hz) Subs --sid=1 --slang=eng (dvd_subtitle) Subs --sid=2 --slang=fre (dvd_subtitle) Subs --sid=3 --slang=spa (dvd_subtitle) Subs --sid=4 --slang= (dvd_subtitle) File tags: Title: DEFA trailers [vo/gpu] Probing for best GPU context. [vo/gpu/opengl] Initializing GPU context 'wayland' [vo/gpu/opengl] Initializing GPU context 'x11egl' [vo/gpu/x11] X11 opening display: :0 [vo/gpu/x11] X11 running at 1366x768 (":0" => local display) [vo/gpu/x11] Detected wm supports NetWM. [vo/gpu/x11] Detected wm supports FULLSCREEN state. [vo/gpu/x11] Detected wm supports ABOVE state. [vo/gpu/x11] Detected wm supports BELOW state. [vo/gpu/x11] Display 0 (LVDS-1): [0, 0, 1366, 768] @ 60.171151 FPS [vo/gpu/x11] Current display FPS: 60.171151 [vo/gpu/opengl] EGL_VERSION=1.4 [vo/gpu/opengl] EGL_VENDOR=Mesa Project [vo/gpu/opengl] EGL_CLIENT_APIS=OpenGL OpenGL_ES [vo/gpu/opengl] Trying to create Desktop OpenGL context. [vo/gpu/opengl] Chosen EGLConfig: [vo/gpu/opengl] EGL_CONFIG_ID=3 [vo/gpu/opengl] EGL_RED_SIZE=8 [vo/gpu/opengl] EGL_GREEN_SIZE=8 [vo/gpu/opengl] EGL_BLUE_SIZE=8 [vo/gpu/opengl] EGL_ALPHA_SIZE=0 [vo/gpu/opengl] EGL_COLOR_BUFFER_TYPE=12430 [vo/gpu/opengl] EGL_CONFIG_CAVEAT=12344 [vo/gpu/opengl] EGL_CONFORMANT=77 [vo/gpu/opengl] Choosing visual EGL config 0x3, visual ID 0x21 [vo/gpu/opengl] GL_VERSION='4.2 (Core Profile) Mesa 19.3.2 - kisak-mesa PPA' [vo/gpu/opengl] Detected desktop OpenGL 4.2. [vo/gpu/opengl] GL_VENDOR='Intel Open Source Technology Center' [vo/gpu/opengl] GL_RENDERER='Mesa DRI Intel(R) Ivybridge Mobile ' [vo/gpu/opengl] GL_SHADING_LANGUAGE_VERSION='4.20' [vo/gpu/opengl] Combined OpenGL extensions string: [vo/gpu/opengl] EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_CHROMIUM_sync_control EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_NOK_texture_from_pixmap EGL_WL_bind_wayland_display GL_3DFX_texture_compression_FXT1 GL_AMD_conservative_depth GL_AMD_draw_buffers_blend GL_AMD_multi_draw_indirect GL_AMD_seamless_cubemap_per_texture GL_AMD_shader_trinary_minmax GL_AMD_texture_texture4 GL_AMD_vertex_shader_layer GL_AMD_vertex_shader_viewport_index GL_ANGLE_texture_compression_dxt3 GL_ANGLE_texture_compression_dxt5 GL_APPLE_object_purgeable GL_ARB_ES2_compatibility GL_ARB_ES3_compatibility GL_ARB_arrays_of_arrays GL_ARB_base_instance GL_ARB_blend_func_extended GL_ARB_buffer_storage GL_ARB_clear_buffer_object GL_ARB_clear_texture GL_ARB_clip_control GL_ARB_compressed_texture_pixel_storage GL_ARB_compute_shader GL_ARB_conditional_render_inverted GL_ARB_conservative_depth GL_ARB_copy_buffer GL_ARB_copy_image GL_ARB_cull_distance GL_ARB_debug_output GL_ARB_depth_buffer_float GL_ARB_depth_clamp GL_ARB_derivative_control GL_ARB_direct_state_access GL_ARB_draw_buffers GL_ARB_draw_buffers_blend GL_ARB_draw_elements_base_vertex GL_ARB_draw_indirect GL_ARB_draw_instanced GL_ARB_enhanced_layouts GL_ARB_explicit_attrib_location GL_ARB_explicit_uniform_location GL_ARB_fragment_coord_conventions GL_ARB_fragment_layer_viewport GL_ARB_fragment_shader GL_ARB_framebuffer_no_attachments GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB GL_ARB_get_program_binary GL_ARB_get_texture_sub_image GL_ARB_gl_spirv GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64 GL_ARB_half_float_pixel GL_ARB_half_float_vertex GL_ARB_indirect_parameters GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_internalformat_query2 GL_ARB_invalidate_subdata GL_ARB_map_buffer_alignment GL_ARB_map_buffer_range GL_ARB_multi_bind GL_ARB_multi_draw_indirect GL_ARB_occlusion_query2 GL_ARB_parallel_shader_compile GL_ARB_pipeline_statistics_query GL_ARB_pixel_buffer_object GL_ARB_point_sprite GL_ARB_polygon_offset_clamp GL_ARB_program_interface_query GL_ARB_provoking_vertex GL_ARB_robustness GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_seamless_cube_map GL_ARB_seamless_cubemap_per_texture GL_ARB_separate_shader_objects GL_ARB_shader_atomic_counter_ops GL_ARB_shader_atomic_counters GL_ARB_shader_bit_encoding GL_ARB_shader_clock GL_ARB_shader_draw_parameters GL_ARB_shader_group_vote GL_ARB_shader_image_load_store GL_ARB_shader_image_size GL_ARB_shader_objects GL_ARB_shader_precision GL_ARB_shader_storage_buffer_object GL_ARB_shader_subroutine GL_ARB_shader_texture_image_samples GL_ARB_shader_texture_lod GL_ARB_shader_viewport_layer_array GL_ARB_shading_language_420pack GL_ARB_shading_language_packing GL_ARB_spirv_extensions GL_ARB_sync GL_ARB_tessellation_shader GL_ARB_texture_barrier GL_ARB_texture_buffer_object GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_buffer_range GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc GL_ARB_texture_cube_map_array GL_ARB_texture_filter_anisotropic GL_ARB_texture_float GL_ARB_texture_gather GL_ARB_texture_mirror_clamp_to_edge GL_ARB_texture_multisample GL_ARB_texture_non_power_of_two GL_ARB_texture_query_levels GL_ARB_texture_query_lod GL_ARB_texture_rectangle GL_ARB_texture_rg GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_storage_multisample GL_ARB_texture_swizzle GL_ARB_texture_view GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_transform_feedback_instanced GL_ARB_transform_feedback_overflow_query GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit GL_ARB_vertex_attrib_binding GL_ARB_vertex_buffer_object GL_ARB_vertex_shader GL_ARB_vertex_type_10f_11f_11f_rev GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_ATI_blend_equation_separate GL_ATI_texture_float GL_EXT_EGL_sync GL_EXT_abgr GL_EXT_blend_equation_separate GL_EXT_demote_to_helper_invocation GL_EXT_draw_buffers2 GL_EXT_draw_instanced GL_EXT_framebuffer_blit GL_EXT_framebuffer_multisample GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_framebuffer_object GL_EXT_framebuffer_sRGB GL_EXT_packed_depth_stencil GL_EXT_packed_float GL_EXT_pixel_buffer_object GL_EXT_polygon_offset_clamp GL_EXT_provoking_vertex GL_EXT_shader_framebuffer_fetch_non_coherent GL_EXT_shader_integer_mix GL_EXT_shader_samples_identical GL_EXT_texture_array GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_rgtc GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_integer GL_EXT_texture_sRGB GL_EXT_texture_sRGB_R8 GL_EXT_texture_sRGB_decode GL_EXT_texture_shadow_lod GL_EXT_texture_shared_exponent GL_EXT_texture_snorm GL_EXT_texture_swizzle GL_EXT_timer_query GL_EXT_transform_feedback GL_EXT_vertex_array_bgra GL_EXT_vertex_attrib_64bit GL_IBM_multimode_draw_arrays GL_INTEL_performance_query GL_KHR_blend_equation_advanced GL_KHR_context_flush_control GL_KHR_debug GL_KHR_no_error GL_KHR_parallel_shader_compile GL_KHR_robustness GL_MESA_pack_invert GL_MESA_shader_integer_functions GL_MESA_texture_signed_rgba GL_NV_compute_shader_derivatives GL_NV_conditional_render GL_NV_depth_clamp GL_NV_packed_depth_stencil GL_NV_texture_barrier GL_OES_EGL_image GL_S3_s3tc [vo/gpu/opengl] Loaded extension GL_ARB_buffer_storage. [vo/gpu/opengl] Loaded extension GL_ARB_shader_storage_buffer_object. [vo/gpu/opengl] Loaded extension GL_ARB_compute_shader. [vo/gpu/opengl] Loaded extension GL_ARB_arrays_of_arrays. [vo/gpu/opengl] Loaded extension GL_ARB_debug_output. [vo/gpu/opengl] Texture formats: [vo/gpu/opengl] NAME COMP*TYPE SIZE DEPTH PER COMP. [vo/gpu/opengl] r8 1*unorm 1B LF CR ST {8} [vo/gpu/opengl] rg8 2*unorm 2B LF CR ST {8 8} [vo/gpu/opengl] rgb8 3*unorm 3B LF CR ST {8 8 8} [vo/gpu/opengl] rgba8 4*unorm 4B LF CR ST {8 8 8 8} [vo/gpu/opengl] r16 1*unorm 2B LF CR ST {16} [vo/gpu/opengl] rg16 2*unorm 4B LF CR ST {16 16} [vo/gpu/opengl] rgb16 3*unorm 6B LF CR ST {16 16 16} [vo/gpu/opengl] rgba16 4*unorm 8B LF CR ST {16 16 16 16} [vo/gpu/opengl] r8ui 1*uint 1B CR ST {8} [vo/gpu/opengl] rg8ui 2*uint 2B CR ST {8 8} [vo/gpu/opengl] rgb8ui 3*uint 3B ST {8 8 8} [vo/gpu/opengl] rgba8ui 4*uint 4B CR ST {8 8 8 8} [vo/gpu/opengl] r16ui 1*uint 2B CR ST {16} [vo/gpu/opengl] rg16ui 2*uint 4B CR ST {16 16} [vo/gpu/opengl] rgb16ui 3*uint 6B ST {16 16 16} [vo/gpu/opengl] rgba16ui 4*uint 8B CR ST {16 16 16 16} [vo/gpu/opengl] r16f 1*float 4B LF CR ST {32/16} [vo/gpu/opengl] rg16f 2*float 8B LF CR ST {32/16 32/16} [vo/gpu/opengl] rgb16f 3*float 12B LF CR ST {32/16 32/16 32/16} [vo/gpu/opengl] rgba16f 4*float 16B LF CR ST {32/16 32/16 32/16 32/16} [vo/gpu/opengl] r32f 1*float 4B LF CR ST {32} [vo/gpu/opengl] rg32f 2*float 8B LF CR ST {32 32} [vo/gpu/opengl] rgb32f 3*float 12B LF CR ST {32 32 32} [vo/gpu/opengl] rgba32f 4*float 16B LF CR ST {32 32 32 32} [vo/gpu/opengl] rgb10_a2 4*unorm 4B LF CR ST {0/10 0/10 0/10 0/2} [vo/gpu/opengl] rgba12 4*unorm 8B LF CR ST {16 16 16 16} [vo/gpu/opengl] rgb10 3*unorm 6B LF CR ST {16 16 16} [vo/gpu/opengl] rgb565 3*unorm 2B LF ST {0/8 0/8 0/8} [vo/gpu/opengl] LA = LUMINANCE_ALPHA hack format [vo/gpu/opengl] LF = linear filterable [vo/gpu/opengl] CR = can be used for render targets [vo/gpu/opengl] ST = can be used for storable images [vo/gpu/opengl] Image formats: [vo/gpu/opengl] yuv444p => 3 planes 1x1 8/0 [r8/r8/r8] (r/g/b) [vo/gpu/opengl] yuv420p => 3 planes 2x2 8/0 [r8/r8/r8] (r/g/b) [vo/gpu/opengl] gray => 1 planes 1x1 8/0 [r8] (r) [vo/gpu/opengl] gray16 => 1 planes 1x1 16/0 [r16] (r) [vo/gpu/opengl] uyvy422 [vo/gpu/opengl] nv12 => 2 planes 2x2 8/0 [r8/rg8] (r/gb) [vo/gpu/opengl] p010 => 2 planes 2x2 16/6 [r16/rg16] (r/gb) [vo/gpu/opengl] nv24 => 2 planes 1x1 8/0 [r8/rg8] (r/gb) [vo/gpu/opengl] argb => 1 planes 1x1 8/0 [rgba8] (argb) [vo/gpu/opengl] bgra => 1 planes 1x1 8/0 [rgba8] (bgra) [vo/gpu/opengl] abgr => 1 planes 1x1 8/0 [rgba8] (abgr) [vo/gpu/opengl] rgba => 1 planes 1x1 8/0 [rgba8] (rgba) [vo/gpu/opengl] bgr24 => 1 planes 1x1 8/0 [rgb8] (bgr) [vo/gpu/opengl] rgb24 => 1 planes 1x1 8/0 [rgb8] (rgb) [vo/gpu/opengl] 0rgb => 1 planes 1x1 8/0 [rgba8] (_rgb) [vo/gpu/opengl] bgr0 => 1 planes 1x1 8/0 [rgba8] (bgr) [vo/gpu/opengl] 0bgr => 1 planes 1x1 8/0 [rgba8] (_bgr) [vo/gpu/opengl] rgb0 => 1 planes 1x1 8/0 [rgba8] (rgb) [vo/gpu/opengl] rgba64 => 1 planes 1x1 16/0 [rgba16] (rgba) [vo/gpu/opengl] rgb565 => 1 planes 1x1 0/0 [rgb565] (rgb) [vo/gpu/opengl] rgb30 => 1 planes 1x1 10/0 [rgb10_a2] (rgb) [vo/gpu/opengl] vdpau [vo/gpu/opengl] vdpau_output [vo/gpu/opengl] vaapi [vo/gpu/opengl] dxva2_vld [vo/gpu/opengl] mmal [vo/gpu/opengl] videotoolbox [vo/gpu/opengl] drm_prime [vo/gpu/opengl] cuda [vo/gpu/opengl] yuyv422 [vo/gpu/opengl] yuv422p => 3 planes 2x1 8/0 [r8/r8/r8] (r/g/b) [vo/gpu/opengl] yuv410p => 3 planes 4x4 8/0 [r8/r8/r8] (r/g/b) [vo/gpu/opengl] yuv411p => 3 planes 4x1 8/0 [r8/r8/r8] (r/g/b) [vo/gpu/opengl] monow [vo/gpu/opengl] monob [vo/gpu/opengl] pal8 [vo/gpu/opengl] yuvj422p => 3 planes 2x1 8/0 [r8/r8/r8] (r/g/b) [vo/gpu/opengl] uyyvyy411 [vo/gpu/opengl] bgr8 [vo/gpu/opengl] bgr4 [vo/gpu/opengl] bgr4_byte [vo/gpu/opengl] rgb8 [vo/gpu/opengl] rgb4 [vo/gpu/opengl] rgb4_byte [vo/gpu/opengl] nv21 => 2 planes 2x2 8/0 [r8/rg8] (r/bg) [vo/gpu/opengl] gray16be [vo/gpu/opengl] yuv440p => 3 planes 1x2 8/0 [r8/r8/r8] (r/g/b) [vo/gpu/opengl] yuvj440p => 3 planes 1x2 8/0 [r8/r8/r8] (r/g/b) [vo/gpu/opengl] yuva420p => 4 planes 2x2 8/0 [r8/r8/r8/r8] (r/g/b/a) [vo/gpu/opengl] rgb48be [vo/gpu/opengl] rgb48 => 1 planes 1x1 16/0 [rgb16] (rgb) [vo/gpu/opengl] rgb565be [vo/gpu/opengl] rgb555be [vo/gpu/opengl] rgb555 [vo/gpu/opengl] bgr565be [vo/gpu/opengl] bgr565 [vo/gpu/opengl] bgr555be [vo/gpu/opengl] bgr555 [vo/gpu/opengl] vaapi_moco [vo/gpu/opengl] vaapi_idct [vo/gpu/opengl] yuv420p16 => 3 planes 2x2 16/0 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv420p16be [vo/gpu/opengl] yuv422p16 => 3 planes 2x1 16/0 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv422p16be [vo/gpu/opengl] yuv444p16 => 3 planes 1x1 16/0 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv444p16be [vo/gpu/opengl] rgb444 [vo/gpu/opengl] rgb444be [vo/gpu/opengl] bgr444 [vo/gpu/opengl] bgr444be [vo/gpu/opengl] ya8 => 1 planes 1x1 8/0 [rg8] (ra) [vo/gpu/opengl] bgr48be [vo/gpu/opengl] bgr48 => 1 planes 1x1 16/0 [rgb16] (bgr) [vo/gpu/opengl] yuv420p9be [vo/gpu/opengl] yuv420p9 => 3 planes 2x2 16/-7 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv420p10be [vo/gpu/opengl] yuv420p10 => 3 planes 2x2 16/-6 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv422p10be [vo/gpu/opengl] yuv422p10 => 3 planes 2x1 16/-6 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv444p9be [vo/gpu/opengl] yuv444p9 => 3 planes 1x1 16/-7 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv444p10be [vo/gpu/opengl] yuv444p10 => 3 planes 1x1 16/-6 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv422p9be [vo/gpu/opengl] yuv422p9 => 3 planes 2x1 16/-7 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] gbrp => 3 planes 1x1 8/0 [r8/r8/r8] (g/b/r) [vo/gpu/opengl] gbrp9be [vo/gpu/opengl] gbrp9 => 3 planes 1x1 16/-7 [r16/r16/r16] (g/b/r) [vo/gpu/opengl] gbrp10be [vo/gpu/opengl] gbrp10 => 3 planes 1x1 16/-6 [r16/r16/r16] (g/b/r) [vo/gpu/opengl] gbrp16be [vo/gpu/opengl] gbrp16 => 3 planes 1x1 16/0 [r16/r16/r16] (g/b/r) [vo/gpu/opengl] yuva422p => 4 planes 2x1 8/0 [r8/r8/r8/r8] (r/g/b/a) [vo/gpu/opengl] yuva444p => 4 planes 1x1 8/0 [r8/r8/r8/r8] (r/g/b/a) [vo/gpu/opengl] yuva420p9be [vo/gpu/opengl] yuva420p9 => 4 planes 2x2 16/-7 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] yuva422p9be [vo/gpu/opengl] yuva422p9 => 4 planes 2x1 16/-7 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] yuva444p9be [vo/gpu/opengl] yuva444p9 => 4 planes 1x1 16/-7 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] yuva420p10be [vo/gpu/opengl] yuva420p10 => 4 planes 2x2 16/-6 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] yuva422p10be [vo/gpu/opengl] yuva422p10 => 4 planes 2x1 16/-6 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] yuva444p10be [vo/gpu/opengl] yuva444p10 => 4 planes 1x1 16/-6 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] yuva420p16be [vo/gpu/opengl] yuva420p16 => 4 planes 2x2 16/0 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] yuva422p16be [vo/gpu/opengl] yuva422p16 => 4 planes 2x1 16/0 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] yuva444p16be [vo/gpu/opengl] yuva444p16 => 4 planes 1x1 16/0 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] xyz12 => 1 planes 1x1 16/4 [rgb16] (rgb) [vo/gpu/opengl] xyz12be [vo/gpu/opengl] nv16 => 2 planes 2x1 8/0 [r8/rg8] (r/gb) [vo/gpu/opengl] nv20 => 2 planes 2x1 16/-6 [r16/rg16] (r/gb) [vo/gpu/opengl] nv20be [vo/gpu/opengl] rgba64be [vo/gpu/opengl] bgra64be [vo/gpu/opengl] bgra64 => 1 planes 1x1 16/0 [rgba16] (bgra) [vo/gpu/opengl] yvyu422 [vo/gpu/opengl] ya16be [vo/gpu/opengl] ya16 => 1 planes 1x1 16/0 [rg16] (ra) [vo/gpu/opengl] gbrap => 4 planes 1x1 8/0 [r8/r8/r8/r8] (g/b/r/a) [vo/gpu/opengl] gbrap16be [vo/gpu/opengl] gbrap16 => 4 planes 1x1 16/0 [r16/r16/r16/r16] (g/b/r/a) [vo/gpu/opengl] qsv [vo/gpu/opengl] d3d11va_vld [vo/gpu/opengl] yuv420p12be [vo/gpu/opengl] yuv420p12 => 3 planes 2x2 16/-4 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv420p14be [vo/gpu/opengl] yuv420p14 => 3 planes 2x2 16/-2 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv422p12be [vo/gpu/opengl] yuv422p12 => 3 planes 2x1 16/-4 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv422p14be [vo/gpu/opengl] yuv422p14 => 3 planes 2x1 16/-2 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv444p12be [vo/gpu/opengl] yuv444p12 => 3 planes 1x1 16/-4 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv444p14be [vo/gpu/opengl] yuv444p14 => 3 planes 1x1 16/-2 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] gbrp12be [vo/gpu/opengl] gbrp12 => 3 planes 1x1 16/-4 [r16/r16/r16] (g/b/r) [vo/gpu/opengl] gbrp14be [vo/gpu/opengl] gbrp14 => 3 planes 1x1 16/-2 [r16/r16/r16] (g/b/r) [vo/gpu/opengl] yuvj411p => 3 planes 4x1 8/0 [r8/r8/r8] (r/g/b) [vo/gpu/opengl] bayer_bggr8 [vo/gpu/opengl] bayer_rggb8 [vo/gpu/opengl] bayer_gbrg8 [vo/gpu/opengl] bayer_grbg8 [vo/gpu/opengl] bayer_bggr16 [vo/gpu/opengl] bayer_bggr16be [vo/gpu/opengl] bayer_rggb16 [vo/gpu/opengl] bayer_rggb16be [vo/gpu/opengl] bayer_gbrg16 [vo/gpu/opengl] bayer_gbrg16be [vo/gpu/opengl] bayer_grbg16 [vo/gpu/opengl] bayer_grbg16be [vo/gpu/opengl] xvmc [vo/gpu/opengl] yuv440p10 => 3 planes 1x2 16/-6 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv440p10be [vo/gpu/opengl] yuv440p12 => 3 planes 1x2 16/-4 [r16/r16/r16] (r/g/b) [vo/gpu/opengl] yuv440p12be [vo/gpu/opengl] ayuv64 => 1 planes 1x1 16/0 [rgba16] (argb) [vo/gpu/opengl] ayuv64be [vo/gpu/opengl] videotoolbox_vl [vo/gpu/opengl] p010be [vo/gpu/opengl] gbrap12be [vo/gpu/opengl] gbrap12 => 4 planes 1x1 16/-4 [r16/r16/r16/r16] (g/b/r/a) [vo/gpu/opengl] gbrap10be [vo/gpu/opengl] gbrap10 => 4 planes 1x1 16/-6 [r16/r16/r16/r16] (g/b/r/a) [vo/gpu/opengl] mediacodec [vo/gpu/opengl] gray12be [vo/gpu/opengl] gray12 => 1 planes 1x1 16/-4 [r16] (r) [vo/gpu/opengl] gray10be [vo/gpu/opengl] gray10 => 1 planes 1x1 16/-6 [r16] (r) [vo/gpu/opengl] p016 => 2 planes 2x2 16/0 [r16/rg16] (r/gb) [vo/gpu/opengl] p016be [vo/gpu/opengl] d3d11 [vo/gpu/opengl] gray9be [vo/gpu/opengl] gray9 => 1 planes 1x1 16/-7 [r16] (r) [vo/gpu/opengl] gbrpf32be [vo/gpu/opengl] gbrpf32 => 3 planes 1x1 32/0 [r16f/r16f/r16f] (g/b/r) [vo/gpu/opengl] gbrapf32be [vo/gpu/opengl] gbrapf32 => 4 planes 1x1 32/0 [r16f/r16f/r16f/r16f] (g/b/r/a) [vo/gpu/opengl] opencl [vo/gpu/opengl] gray14be [vo/gpu/opengl] gray14 => 1 planes 1x1 16/-2 [r16] (r) [vo/gpu/opengl] grayf32be [vo/gpu/opengl] grayf32 => 1 planes 1x1 32/0 [r16f] (r) [vo/gpu/opengl] yuva422p12be [vo/gpu/opengl] yuva422p12 => 4 planes 2x1 16/-4 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] yuva444p12be [vo/gpu/opengl] yuva444p12 => 4 planes 1x1 16/-4 [r16/r16/r16/r16] (r/g/b/a) [vo/gpu/opengl] nv42 => 2 planes 1x1 8/0 [r8/rg8] (r/bg) [vo/gpu] Testing FBO format rgba16f [vo/gpu] Resizing texture: 16x16 [vo/gpu] Using FBO format rgba16f. [vo/gpu] Assuming 60.171151 FPS for display sync. [vd] Container reported FPS: 25.000000 [vd] Codec list: [vd] h264 - H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [vd] h264_v4l2m2m (h264) - V4L2 mem2mem H.264 decoder wrapper [vd] Opening decoder h264 [vd] No hardware decoding available for this codec. [vd] Using software decoding. [vd] Detected 4 logical cores. [vd] Requesting 5 threads for decoding. [ffmpeg/video] h264: Reinit context to 704x480, pix_fmt: yuv420p [vd] DR parameter change to 704x482 yuv420p align=64 [vd] Allocating new DR image... [vd] ...failed.. [vd] DR failed - disabling. [vd] Selected codec: h264 (H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10) [vf] User filter list: [vf] (empty) [ad] Codec list: [ad] aac - AAC (Advanced Audio Coding) [ad] aac_fixed (aac) - AAC (Advanced Audio Coding) [ad] libfdk_aac (aac) - Fraunhofer FDK AAC [ad] Opening decoder aac [ad] Requesting 1 threads for decoding. [ad] Selected codec: aac (AAC (Advanced Audio Coding)) [af] User filter list: [af] (empty) [cplayer] Starting playback... [osc] osc_init [cplayer] Run command: change-list, flags=64, args=[shared-script-properties, append, osc-margins=0.000000,0.000000,0.000000,0.000000] [cplayer] Set property: shared-script-properties -> 1 [ffmpeg/video] h264: Reinit context to 704x480, pix_fmt: yuv420p [vd] Using software decoding. [vd] Decoder format: 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/auto CL=mpeg2/4/h264 [vd] Using container aspect ratio. [vf] [in] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [userdeint] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [userdeint] (disabled) [vf] [autorotate] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [autorotate] (disabled) [vf] [convert] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [convert] (disabled) [vf] [out] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [af] [in] 48000Hz stereo 2ch floatp [af] [userspeed] 48000Hz stereo 2ch floatp [af] [userspeed] (disabled) [af] [convert] 48000Hz stereo 2ch floatp [ao] Trying audio driver 'pulse' [ao/pulse] requested format: 48000 Hz, stereo channels, floatp [ao/pulse] Library version: 13.0.0 [ao/pulse] Proto: 33 [ao/pulse] Server proto: 4294967295 [ao/pulse] Channel layouts: [ao/pulse] - #fl [ao/pulse] - #fr [ao/pulse] - #fc [ao/pulse] - #lfe [ao/pulse] - #bl [ao/pulse] - #br [ao/pulse] - #flc [ao/pulse] - #frc [ao/pulse] - #bc [ao/pulse] - #sl [ao/pulse] - #sr [ao/pulse] - #tc [ao/pulse] - #tfl [ao/pulse] - #tfc [ao/pulse] - #tfr [ao/pulse] - #tbl [ao/pulse] - #tbc [ao/pulse] - #tbr [ao/pulse] result: stereo [ao/pulse] device buffer: 4800 samples. [ao/pulse] using soft-buffer of 9600 samples. AO: [pulse] 48000Hz stereo 2ch float [cplayer] AO: Description: PulseAudio audio output [autoconvert] inserting resampler [swresample] format change, reinitializing resampler [swresample] 48000Hz stereo floatp -> 48000Hz stereo float [af] [out] 48000Hz stereo 2ch float VO: [gpu] 690x480 => 690x534 yuv420p [cplayer] VO: Description: Shader-based GPU Renderer [vo/gpu] reconfig to 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vo/gpu] screen size: 1366x768 [vo/gpu/x11] not waiting for MapNotify [vo/gpu] Resize: 690x534 [vo/gpu] Window size: 690x534 (Borders: l=0 t=0 r=0 b=0) [vo/gpu] Video source: 690x480 (256:285) [vo/gpu] Video display: (0, 0) 690x480 -> (0, 0) 690x534 [vo/gpu] Video scale: 1.000000/1.112500 [vo/gpu] OSD borders: l=0 t=0 r=0 b=0 [vo/gpu] Video borders: l=0 t=0 r=0 b=0 [vo/gpu] Reported display depth: 8 [vo/gpu] Texture for plane 0: 690x480 [vo/gpu] Texture for plane 1: 345x240 [vo/gpu] Texture for plane 2: 345x240 [vo/gpu] Testing FBO format rgba16f [vo/gpu] Resizing texture: 16x16 [vo/gpu] Using FBO format rgba16f. [vo/gpu] Resizing texture: 345x240 [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #define tex1D texture [vo/gpu/opengl] [ 3] #define tex3D texture [vo/gpu/opengl] [ 4] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 5] in vec2 vertex_position; [vo/gpu/opengl] [ 6] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 7] out vec2 texcoord0; [vo/gpu/opengl] [ 8] in vec2 vertex_texcoord1; [vo/gpu/opengl] [ 9] out vec2 texcoord1; [vo/gpu/opengl] [ 10] void main() { [vo/gpu/opengl] [ 11] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 12] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 13] texcoord1 = vertex_texcoord1; [vo/gpu/opengl] [ 14] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #define tex1D texture [vo/gpu/opengl] [ 3] #define tex3D texture [vo/gpu/opengl] [ 4] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 5] out vec4 out_color; [vo/gpu/opengl] [ 6] in vec2 texcoord0; [vo/gpu/opengl] [ 7] in vec2 texcoord1; [vo/gpu/opengl] [ 8] uniform sampler2D texture0; [vo/gpu/opengl] [ 9] uniform vec2 texture_size0; [vo/gpu/opengl] [ 10] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 11] uniform vec2 texture_off0; [vo/gpu/opengl] [ 12] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 13] uniform sampler2D texture1; [vo/gpu/opengl] [ 14] uniform vec2 texture_size1; [vo/gpu/opengl] [ 15] uniform mat2 texture_rot1; [vo/gpu/opengl] [ 16] uniform vec2 texture_off1; [vo/gpu/opengl] [ 17] uniform vec2 pixel_size1; [vo/gpu/opengl] [ 18] void main() { [vo/gpu/opengl] [ 19] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 20] // merging plane 1 ... [vo/gpu/opengl] [ 21] color.r = 1.000000 * vec4(texture(texture0, texcoord0)).r; [vo/gpu/opengl] [ 22] // merging plane 2 ... into 1 [vo/gpu/opengl] [ 23] color.g = 1.000000 * vec4(texture(texture1, texcoord1)).r; [vo/gpu/opengl] [ 24] out_color = color; [vo/gpu/opengl] [ 25] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu] Resizing texture: 690x480 [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #define tex1D texture [vo/gpu/opengl] [ 3] #define tex3D texture [vo/gpu/opengl] [ 4] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 5] in vec2 vertex_position; [vo/gpu/opengl] [ 6] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 7] out vec2 texcoord0; [vo/gpu/opengl] [ 8] void main() { [vo/gpu/opengl] [ 9] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 10] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 11] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #define tex1D texture [vo/gpu/opengl] [ 3] #define tex3D texture [vo/gpu/opengl] [ 4] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 5] out vec4 out_color; [vo/gpu/opengl] [ 6] in vec2 texcoord0; [vo/gpu/opengl] [ 7] uniform float random; [vo/gpu/opengl] [ 8] uniform sampler2D texture0; [vo/gpu/opengl] [ 9] uniform vec2 texture_size0; [vo/gpu/opengl] [ 10] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 11] uniform vec2 texture_off0; [vo/gpu/opengl] [ 12] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 13] #define HOOKED_raw texture0 [vo/gpu/opengl] [ 14] #define HOOKED_pos texcoord0 [vo/gpu/opengl] [ 15] #define HOOKED_size texture_size0 [vo/gpu/opengl] [ 16] #define HOOKED_rot texture_rot0 [vo/gpu/opengl] [ 17] #define HOOKED_off texture_off0 [vo/gpu/opengl] [ 18] #define HOOKED_pt pixel_size0 [vo/gpu/opengl] [ 19] #define HOOKED_map texmap0 [vo/gpu/opengl] [ 20] #define HOOKED_mul 1.000000 [vo/gpu/opengl] [ 21] #define HOOKED_tex(pos) (HOOKED_mul * vec4(texture(HOOKED_raw, pos)).rgba) [vo/gpu/opengl] [ 22] #define HOOKED_texOff(off) HOOKED_tex(HOOKED_pos + HOOKED_pt * vec2(off)) [vo/gpu/opengl] [ 23] #define LUMA_raw texture0 [vo/gpu/opengl] [ 24] #define LUMA_pos texcoord0 [vo/gpu/opengl] [ 25] #define LUMA_size texture_size0 [vo/gpu/opengl] [ 26] #define LUMA_rot texture_rot0 [vo/gpu/opengl] [ 27] #define LUMA_off texture_off0 [vo/gpu/opengl] [ 28] #define LUMA_pt pixel_size0 [vo/gpu/opengl] [ 29] #define LUMA_map texmap0 [vo/gpu/opengl] [ 30] #define LUMA_mul 1.000000 [vo/gpu/opengl] [ 31] #define LUMA_tex(pos) (LUMA_mul * vec4(texture(LUMA_raw, pos)).rgba) [vo/gpu/opengl] [ 32] #define LUMA_texOff(off) LUMA_tex(LUMA_pos + LUMA_pt * vec2(off)) [vo/gpu/opengl] [ 33] float mod289(float x) { return x - floor(x * 1.0/289.0) * 289.0; } [vo/gpu/opengl] [ 34] float permute(float x) { [vo/gpu/opengl] [ 35] return mod289( mod289(34.0*x + 1.0) * (fract(x) + 1.0) ); [vo/gpu/opengl] [ 36] } [vo/gpu/opengl] [ 37] float rand(float x) { return fract(x * 1.0/41.0); } [vo/gpu/opengl] [ 38] vec4 average(float range, inout float h) { [vo/gpu/opengl] [ 39] float dist = rand(h) * range; h = permute(h); [vo/gpu/opengl] [ 40] float dir = rand(h) * 6.2831853; h = permute(h); [vo/gpu/opengl] [ 41] vec2 o = dist * vec2(cos(dir), sin(dir)); [vo/gpu/opengl] [ 42] vec4 ref[4]; [vo/gpu/opengl] [ 43] ref[0] = HOOKED_texOff(vec2( o.x, o.y)); [vo/gpu/opengl] [ 44] ref[1] = HOOKED_texOff(vec2(-o.y, o.x)); [vo/gpu/opengl] [ 45] ref[2] = HOOKED_texOff(vec2(-o.x, -o.y)); [vo/gpu/opengl] [ 46] ref[3] = HOOKED_texOff(vec2( o.y, -o.x)); [vo/gpu/opengl] [ 47] return (ref[0] + ref[1] + ref[2] + ref[3])*0.25; [vo/gpu/opengl] [ 48] } [vo/gpu/opengl] [ 49] void main() { [vo/gpu/opengl] [ 50] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 51] { [vo/gpu/opengl] [ 52] vec3 _m = vec3(HOOKED_pos, random) + vec3(1.0); [vo/gpu/opengl] [ 53] float h = permute(permute(permute(_m.x)+_m.y)+_m.z); [vo/gpu/opengl] [ 54] color = HOOKED_tex(HOOKED_pos); [vo/gpu/opengl] [ 55] vec4 avg, diff; [vo/gpu/opengl] [ 56] avg = average(16.000000, h); [vo/gpu/opengl] [ 57] diff = abs(color - avg); [vo/gpu/opengl] [ 58] color = mix(avg, color, greaterThan(diff, vec4(0.003906))); [vo/gpu/opengl] [ 59] vec3 noise; [vo/gpu/opengl] [ 60] noise.x = rand(h); h = permute(h); [vo/gpu/opengl] [ 61] noise.y = rand(h); h = permute(h); [vo/gpu/opengl] [ 62] noise.z = rand(h); h = permute(h); [vo/gpu/opengl] [ 63] color.xyz += 0.005859 * (noise - vec3(0.5)); [vo/gpu/opengl] [ 64] } [vo/gpu/opengl] [ 65] color.g = 0.000000; [vo/gpu/opengl] [ 66] color.b = 0.000000; [vo/gpu/opengl] [ 67] color.a = 1.000000; [vo/gpu/opengl] [ 68] out_color = color; [vo/gpu/opengl] [ 69] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu] Resizing texture: 345x240 [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #define tex1D texture [vo/gpu/opengl] [ 3] #define tex3D texture [vo/gpu/opengl] [ 4] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 5] in vec2 vertex_position; [vo/gpu/opengl] [ 6] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 7] out vec2 texcoord0; [vo/gpu/opengl] [ 8] void main() { [vo/gpu/opengl] [ 9] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 10] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 11] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #define tex1D texture [vo/gpu/opengl] [ 3] #define tex3D texture [vo/gpu/opengl] [ 4] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 5] out vec4 out_color; [vo/gpu/opengl] [ 6] in vec2 texcoord0; [vo/gpu/opengl] [ 7] uniform float random; [vo/gpu/opengl] [ 8] uniform sampler2D texture0; [vo/gpu/opengl] [ 9] uniform vec2 texture_size0; [vo/gpu/opengl] [ 10] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 11] uniform vec2 texture_off0; [vo/gpu/opengl] [ 12] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 13] #define HOOKED_raw texture0 [vo/gpu/opengl] [ 14] #define HOOKED_pos texcoord0 [vo/gpu/opengl] [ 15] #define HOOKED_size texture_size0 [vo/gpu/opengl] [ 16] #define HOOKED_rot texture_rot0 [vo/gpu/opengl] [ 17] #define HOOKED_off texture_off0 [vo/gpu/opengl] [ 18] #define HOOKED_pt pixel_size0 [vo/gpu/opengl] [ 19] #define HOOKED_map texmap0 [vo/gpu/opengl] [ 20] #define HOOKED_mul 1.000000 [vo/gpu/opengl] [ 21] #define HOOKED_tex(pos) (HOOKED_mul * vec4(texture(HOOKED_raw, pos)).rgba) [vo/gpu/opengl] [ 22] #define HOOKED_texOff(off) HOOKED_tex(HOOKED_pos + HOOKED_pt * vec2(off)) [vo/gpu/opengl] [ 23] #define CHROMA_raw texture0 [vo/gpu/opengl] [ 24] #define CHROMA_pos texcoord0 [vo/gpu/opengl] [ 25] #define CHROMA_size texture_size0 [vo/gpu/opengl] [ 26] #define CHROMA_rot texture_rot0 [vo/gpu/opengl] [ 27] #define CHROMA_off texture_off0 [vo/gpu/opengl] [ 28] #define CHROMA_pt pixel_size0 [vo/gpu/opengl] [ 29] #define CHROMA_map texmap0 [vo/gpu/opengl] [ 30] #define CHROMA_mul 1.000000 [vo/gpu/opengl] [ 31] #define CHROMA_tex(pos) (CHROMA_mul * vec4(texture(CHROMA_raw, pos)).rgba) [vo/gpu/opengl] [ 32] #define CHROMA_texOff(off) CHROMA_tex(CHROMA_pos + CHROMA_pt * vec2(off)) [vo/gpu/opengl] [ 33] float mod289(float x) { return x - floor(x * 1.0/289.0) * 289.0; } [vo/gpu/opengl] [ 34] float permute(float x) { [vo/gpu/opengl] [ 35] return mod289( mod289(34.0*x + 1.0) * (fract(x) + 1.0) ); [vo/gpu/opengl] [ 36] } [vo/gpu/opengl] [ 37] float rand(float x) { return fract(x * 1.0/41.0); } [vo/gpu/opengl] [ 38] vec4 average(float range, inout float h) { [vo/gpu/opengl] [ 39] float dist = rand(h) * range; h = permute(h); [vo/gpu/opengl] [ 40] float dir = rand(h) * 6.2831853; h = permute(h); [vo/gpu/opengl] [ 41] vec2 o = dist * vec2(cos(dir), sin(dir)); [vo/gpu/opengl] [ 42] vec4 ref[4]; [vo/gpu/opengl] [ 43] ref[0] = HOOKED_texOff(vec2( o.x, o.y)); [vo/gpu/opengl] [ 44] ref[1] = HOOKED_texOff(vec2(-o.y, o.x)); [vo/gpu/opengl] [ 45] ref[2] = HOOKED_texOff(vec2(-o.x, -o.y)); [vo/gpu/opengl] [ 46] ref[3] = HOOKED_texOff(vec2( o.y, -o.x)); [vo/gpu/opengl] [ 47] return (ref[0] + ref[1] + ref[2] + ref[3])*0.25; [vo/gpu/opengl] [ 48] } [vo/gpu/opengl] [ 49] void main() { [vo/gpu/opengl] [ 50] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 51] { [vo/gpu/opengl] [ 52] vec3 _m = vec3(HOOKED_pos, random) + vec3(1.0); [vo/gpu/opengl] [ 53] float h = permute(permute(permute(_m.x)+_m.y)+_m.z); [vo/gpu/opengl] [ 54] color = HOOKED_tex(HOOKED_pos); [vo/gpu/opengl] [ 55] vec4 avg, diff; [vo/gpu/opengl] [ 56] avg = average(16.000000, h); [vo/gpu/opengl] [ 57] diff = abs(color - avg); [vo/gpu/opengl] [ 58] color = mix(avg, color, greaterThan(diff, vec4(0.003906))); [vo/gpu/opengl] [ 59] vec3 noise; [vo/gpu/opengl] [ 60] noise.x = rand(h); h = permute(h); [vo/gpu/opengl] [ 61] noise.y = rand(h); h = permute(h); [vo/gpu/opengl] [ 62] noise.z = rand(h); h = permute(h); [vo/gpu/opengl] [ 63] color.xyz += 0.005859 * (noise - vec3(0.5)); [vo/gpu/opengl] [ 64] } [vo/gpu/opengl] [ 65] color.b = 0.000000; [vo/gpu/opengl] [ 66] color.a = 1.000000; [vo/gpu/opengl] [ 67] out_color = color; [vo/gpu/opengl] [ 68] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu] Resizing texture: 690x480 [vo/gpu/opengl] compute shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_compute_shader : enable [vo/gpu/opengl] [ 3] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 4] #define tex1D texture [vo/gpu/opengl] [ 5] #define tex3D texture [vo/gpu/opengl] [ 6] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 7] uniform sampler1D lut; [vo/gpu/opengl] [ 8] layout(rgba16f) uniform writeonly image2D out_image; [vo/gpu/opengl] [ 9] uniform sampler2D texture0; [vo/gpu/opengl] [ 10] uniform vec2 texture_size0; [vo/gpu/opengl] [ 11] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 12] uniform vec2 texture_off0; [vo/gpu/opengl] [ 13] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 14] uniform vec2 out_scale; [vo/gpu/opengl] [ 15] uniform vec2 tex_scale0; [vo/gpu/opengl] [ 16] layout (local_size_x = 32, local_size_y = 8) in; [vo/gpu/opengl] [ 17] #define outcoord(id) (out_scale * (vec2(id) + vec2(0.5))) [vo/gpu/opengl] [ 18] #define texmap0_raw(id) (tex_scale0 * outcoord(id)) [vo/gpu/opengl] [ 19] #define texmap0(id) (texture_rot0 * texmap0_raw(id) + pixel_size0 * texture_off0) [vo/gpu/opengl] [ 20] #define texcoord0 texmap0(gl_GlobalInvocationID) [vo/gpu/opengl] [ 21] shared float in0[288]; [vo/gpu/opengl] [ 22] shared float in1[288]; [vo/gpu/opengl] [ 23] void main() { [vo/gpu/opengl] [ 24] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 25] // upscaling plane 1 [vo/gpu/opengl] [ 26] #undef tex [vo/gpu/opengl] [ 27] #undef texmap [vo/gpu/opengl] [ 28] #define tex texture0 [vo/gpu/opengl] [ 29] #define texmap texmap0 [vo/gpu/opengl] [ 30] vec2 pos = texcoord0; [vo/gpu/opengl] [ 31] vec2 size = texture_size0; [vo/gpu/opengl] [ 32] vec2 pt = pixel_size0; [vo/gpu/opengl] [ 33] color = vec4(0.0); [vo/gpu/opengl] [ 34] { [vo/gpu/opengl] [ 35] vec2 wpos = texmap(gl_WorkGroupID * gl_WorkGroupSize); [vo/gpu/opengl] [ 36] vec2 wbase = wpos - pt * fract(wpos * size - vec2(0.5)); [vo/gpu/opengl] [ 37] vec2 fcoord = fract(pos * size - vec2(0.5)); [vo/gpu/opengl] [ 38] vec2 base = pos - pt * fcoord; [vo/gpu/opengl] [ 39] ivec2 rel = ivec2(round((base - wbase) * size)); [vo/gpu/opengl] [ 40] int idx; [vo/gpu/opengl] [ 41] float w, d, wsum = 0.0; [vo/gpu/opengl] [ 42] vec4 c; [vo/gpu/opengl] [ 43] for (int y = int(gl_LocalInvocationID.y); y < 12; y += 8) { [vo/gpu/opengl] [ 44] for (int x = int(gl_LocalInvocationID.x); x < 24; x += 32) { [vo/gpu/opengl] [ 45] c = texture(tex, wbase + pt * vec2(x - 3, y - 3)); [vo/gpu/opengl] [ 46] in0[24 * y + x] = c[0]; [vo/gpu/opengl] [ 47] in1[24 * y + x] = c[1]; [vo/gpu/opengl] [ 48] }} [vo/gpu/opengl] [ 49] groupMemoryBarrier(); [vo/gpu/opengl] [ 50] barrier(); [vo/gpu/opengl] [ 51] // scaler samples [vo/gpu/opengl] [ 52] idx = 24 * rel.y + rel.x + 0; [vo/gpu/opengl] [ 53] idx = 24 * rel.y + rel.x + 1; [vo/gpu/opengl] [ 54] idx = 24 * rel.y + rel.x + 2; [vo/gpu/opengl] [ 55] idx = 24 * rel.y + rel.x + 3; [vo/gpu/opengl] [ 56] d = length(vec2(0.0, -3.0) - fcoord); [vo/gpu/opengl] [ 57] if (d < 3.032708) { [vo/gpu/opengl] [ 58] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 59] wsum += w; [vo/gpu/opengl] [ 60] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 61] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 62] } [vo/gpu/opengl] [ 63] idx = 24 * rel.y + rel.x + 4; [vo/gpu/opengl] [ 64] d = length(vec2(1.0, -3.0) - fcoord); [vo/gpu/opengl] [ 65] if (d < 3.032708) { [vo/gpu/opengl] [ 66] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 67] wsum += w; [vo/gpu/opengl] [ 68] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 69] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 70] } [vo/gpu/opengl] [ 71] idx = 24 * rel.y + rel.x + 5; [vo/gpu/opengl] [ 72] idx = 24 * rel.y + rel.x + 6; [vo/gpu/opengl] [ 73] idx = 24 * rel.y + rel.x + 7; [vo/gpu/opengl] [ 74] idx = 24 * rel.y + rel.x + 24; [vo/gpu/opengl] [ 75] idx = 24 * rel.y + rel.x + 25; [vo/gpu/opengl] [ 76] d = length(vec2(-2.0, -2.0) - fcoord); [vo/gpu/opengl] [ 77] if (d < 3.032708) { [vo/gpu/opengl] [ 78] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 79] wsum += w; [vo/gpu/opengl] [ 80] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 81] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 82] } [vo/gpu/opengl] [ 83] idx = 24 * rel.y + rel.x + 26; [vo/gpu/opengl] [ 84] d = length(vec2(-1.0, -2.0) - fcoord); [vo/gpu/opengl] [ 85] if (d < 3.032708) { [vo/gpu/opengl] [ 86] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 87] wsum += w; [vo/gpu/opengl] [ 88] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 89] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 90] } [vo/gpu/opengl] [ 91] idx = 24 * rel.y + rel.x + 27; [vo/gpu/opengl] [ 92] d = length(vec2(0.0, -2.0) - fcoord); [vo/gpu/opengl] [ 93] if (d < 3.032708) { [vo/gpu/opengl] [ 94] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 95] wsum += w; [vo/gpu/opengl] [ 96] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 97] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 98] } [vo/gpu/opengl] [ 99] idx = 24 * rel.y + rel.x + 28; [vo/gpu/opengl] [100] d = length(vec2(1.0, -2.0) - fcoord); [vo/gpu/opengl] [101] if (d < 3.032708) { [vo/gpu/opengl] [102] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [103] wsum += w; [vo/gpu/opengl] [104] color[0] += w * in0[idx]; [vo/gpu/opengl] [105] color[1] += w * in1[idx]; [vo/gpu/opengl] [106] } [vo/gpu/opengl] [107] idx = 24 * rel.y + rel.x + 29; [vo/gpu/opengl] [108] d = length(vec2(2.0, -2.0) - fcoord); [vo/gpu/opengl] [109] if (d < 3.032708) { [vo/gpu/opengl] [110] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [111] wsum += w; [vo/gpu/opengl] [112] color[0] += w * in0[idx]; [vo/gpu/opengl] [113] color[1] += w * in1[idx]; [vo/gpu/opengl] [114] } [vo/gpu/opengl] [115] idx = 24 * rel.y + rel.x + 30; [vo/gpu/opengl] [116] d = length(vec2(3.0, -2.0) - fcoord); [vo/gpu/opengl] [117] if (d < 3.032708) { [vo/gpu/opengl] [118] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [119] wsum += w; [vo/gpu/opengl] [120] color[0] += w * in0[idx]; [vo/gpu/opengl] [121] color[1] += w * in1[idx]; [vo/gpu/opengl] [122] } [vo/gpu/opengl] [123] idx = 24 * rel.y + rel.x + 31; [vo/gpu/opengl] [124] idx = 24 * rel.y + rel.x + 48; [vo/gpu/opengl] [125] idx = 24 * rel.y + rel.x + 49; [vo/gpu/opengl] [126] d = length(vec2(-2.0, -1.0) - fcoord); [vo/gpu/opengl] [127] if (d < 3.032708) { [vo/gpu/opengl] [128] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [129] wsum += w; [vo/gpu/opengl] [130] color[0] += w * in0[idx]; [vo/gpu/opengl] [131] color[1] += w * in1[idx]; [vo/gpu/opengl] [132] } [vo/gpu/opengl] [133] idx = 24 * rel.y + rel.x + 50; [vo/gpu/opengl] [134] d = length(vec2(-1.0, -1.0) - fcoord); [vo/gpu/opengl] [135] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [136] wsum += w; [vo/gpu/opengl] [137] color[0] += w * in0[idx]; [vo/gpu/opengl] [138] color[1] += w * in1[idx]; [vo/gpu/opengl] [139] idx = 24 * rel.y + rel.x + 51; [vo/gpu/opengl] [140] d = length(vec2(0.0, -1.0) - fcoord); [vo/gpu/opengl] [141] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [142] wsum += w; [vo/gpu/opengl] [143] color[0] += w * in0[idx]; [vo/gpu/opengl] [144] color[1] += w * in1[idx]; [vo/gpu/opengl] [145] idx = 24 * rel.y + rel.x + 52; [vo/gpu/opengl] [146] d = length(vec2(1.0, -1.0) - fcoord); [vo/gpu/opengl] [147] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [148] wsum += w; [vo/gpu/opengl] [149] color[0] += w * in0[idx]; [vo/gpu/opengl] [150] color[1] += w * in1[idx]; [vo/gpu/opengl] [151] idx = 24 * rel.y + rel.x + 53; [vo/gpu/opengl] [152] d = length(vec2(2.0, -1.0) - fcoord); [vo/gpu/opengl] [153] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [154] wsum += w; [vo/gpu/opengl] [155] color[0] += w * in0[idx]; [vo/gpu/opengl] [156] color[1] += w * in1[idx]; [vo/gpu/opengl] [157] idx = 24 * rel.y + rel.x + 54; [vo/gpu/opengl] [158] d = length(vec2(3.0, -1.0) - fcoord); [vo/gpu/opengl] [159] if (d < 3.032708) { [vo/gpu/opengl] [160] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [161] wsum += w; [vo/gpu/opengl] [162] color[0] += w * in0[idx]; [vo/gpu/opengl] [163] color[1] += w * in1[idx]; [vo/gpu/opengl] [164] } [vo/gpu/opengl] [165] idx = 24 * rel.y + rel.x + 55; [vo/gpu/opengl] [166] idx = 24 * rel.y + rel.x + 72; [vo/gpu/opengl] [167] d = length(vec2(-3.0, 0.0) - fcoord); [vo/gpu/opengl] [168] if (d < 3.032708) { [vo/gpu/opengl] [169] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [170] wsum += w; [vo/gpu/opengl] [171] color[0] += w * in0[idx]; [vo/gpu/opengl] [172] color[1] += w * in1[idx]; [vo/gpu/opengl] [173] } [vo/gpu/opengl] [174] idx = 24 * rel.y + rel.x + 73; [vo/gpu/opengl] [175] d = length(vec2(-2.0, 0.0) - fcoord); [vo/gpu/opengl] [176] if (d < 3.032708) { [vo/gpu/opengl] [177] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [178] wsum += w; [vo/gpu/opengl] [179] color[0] += w * in0[idx]; [vo/gpu/opengl] [180] color[1] += w * in1[idx]; [vo/gpu/opengl] [181] } [vo/gpu/opengl] [182] idx = 24 * rel.y + rel.x + 74; [vo/gpu/opengl] [183] d = length(vec2(-1.0, 0.0) - fcoord); [vo/gpu/opengl] [184] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [185] wsum += w; [vo/gpu/opengl] [186] color[0] += w * in0[idx]; [vo/gpu/opengl] [187] color[1] += w * in1[idx]; [vo/gpu/opengl] [188] idx = 24 * rel.y + rel.x + 75; [vo/gpu/opengl] [189] d = length(vec2(0.0, 0.0) - fcoord); [vo/gpu/opengl] [190] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [191] wsum += w; [vo/gpu/opengl] [192] color[0] += w * in0[idx]; [vo/gpu/opengl] [193] color[1] += w * in1[idx]; [vo/gpu/opengl] [194] idx = 24 * rel.y + rel.x + 76; [vo/gpu/opengl] [195] d = length(vec2(1.0, 0.0) - fcoord); [vo/gpu/opengl] [196] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [197] wsum += w; [vo/gpu/opengl] [198] color[0] += w * in0[idx]; [vo/gpu/opengl] [199] color[1] += w * in1[idx]; [vo/gpu/opengl] [200] idx = 24 * rel.y + rel.x + 77; [vo/gpu/opengl] [201] d = length(vec2(2.0, 0.0) - fcoord); [vo/gpu/opengl] [202] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [203] wsum += w; [vo/gpu/opengl] [204] color[0] += w * in0[idx]; [vo/gpu/opengl] [205] color[1] += w * in1[idx]; [vo/gpu/opengl] [206] idx = 24 * rel.y + rel.x + 78; [vo/gpu/opengl] [207] d = length(vec2(3.0, 0.0) - fcoord); [vo/gpu/opengl] [208] if (d < 3.032708) { [vo/gpu/opengl] [209] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [210] wsum += w; [vo/gpu/opengl] [211] color[0] += w * in0[idx]; [vo/gpu/opengl] [212] color[1] += w * in1[idx]; [vo/gpu/opengl] [213] } [vo/gpu/opengl] [214] idx = 24 * rel.y + rel.x + 79; [vo/gpu/opengl] [215] d = length(vec2(4.0, 0.0) - fcoord); [vo/gpu/opengl] [216] if (d < 3.032708) { [vo/gpu/opengl] [217] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [218] wsum += w; [vo/gpu/opengl] [219] color[0] += w * in0[idx]; [vo/gpu/opengl] [220] color[1] += w * in1[idx]; [vo/gpu/opengl] [221] } [vo/gpu/opengl] [222] idx = 24 * rel.y + rel.x + 96; [vo/gpu/opengl] [223] d = length(vec2(-3.0, 1.0) - fcoord); [vo/gpu/opengl] [224] if (d < 3.032708) { [vo/gpu/opengl] [225] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [226] wsum += w; [vo/gpu/opengl] [227] color[0] += w * in0[idx]; [vo/gpu/opengl] [228] color[1] += w * in1[idx]; [vo/gpu/opengl] [229] } [vo/gpu/opengl] [230] idx = 24 * rel.y + rel.x + 97; [vo/gpu/opengl] [231] d = length(vec2(-2.0, 1.0) - fcoord); [vo/gpu/opengl] [232] if (d < 3.032708) { [vo/gpu/opengl] [233] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [234] wsum += w; [vo/gpu/opengl] [235] color[0] += w * in0[idx]; [vo/gpu/opengl] [236] color[1] += w * in1[idx]; [vo/gpu/opengl] [237] } [vo/gpu/opengl] [238] idx = 24 * rel.y + rel.x + 98; [vo/gpu/opengl] [239] d = length(vec2(-1.0, 1.0) - fcoord); [vo/gpu/opengl] [240] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [241] wsum += w; [vo/gpu/opengl] [242] color[0] += w * in0[idx]; [vo/gpu/opengl] [243] color[1] += w * in1[idx]; [vo/gpu/opengl] [244] idx = 24 * rel.y + rel.x + 99; [vo/gpu/opengl] [245] d = length(vec2(0.0, 1.0) - fcoord); [vo/gpu/opengl] [246] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [247] wsum += w; [vo/gpu/opengl] [248] color[0] += w * in0[idx]; [vo/gpu/opengl] [249] color[1] += w * in1[idx]; [vo/gpu/opengl] [250] idx = 24 * rel.y + rel.x + 100; [vo/gpu/opengl] [251] d = length(vec2(1.0, 1.0) - fcoord); [vo/gpu/opengl] [252] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [253] wsum += w; [vo/gpu/opengl] [254] color[0] += w * in0[idx]; [vo/gpu/opengl] [255] color[1] += w * in1[idx]; [vo/gpu/opengl] [256] idx = 24 * rel.y + rel.x + 101; [vo/gpu/opengl] [257] d = length(vec2(2.0, 1.0) - fcoord); [vo/gpu/opengl] [258] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [259] wsum += w; [vo/gpu/opengl] [260] color[0] += w * in0[idx]; [vo/gpu/opengl] [261] color[1] += w * in1[idx]; [vo/gpu/opengl] [262] idx = 24 * rel.y + rel.x + 102; [vo/gpu/opengl] [263] d = length(vec2(3.0, 1.0) - fcoord); [vo/gpu/opengl] [264] if (d < 3.032708) { [vo/gpu/opengl] [265] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [266] wsum += w; [vo/gpu/opengl] [267] color[0] += w * in0[idx]; [vo/gpu/opengl] [268] color[1] += w * in1[idx]; [vo/gpu/opengl] [269] } [vo/gpu/opengl] [270] idx = 24 * rel.y + rel.x + 103; [vo/gpu/opengl] [271] d = length(vec2(4.0, 1.0) - fcoord); [vo/gpu/opengl] [272] if (d < 3.032708) { [vo/gpu/opengl] [273] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [274] wsum += w; [vo/gpu/opengl] [275] color[0] += w * in0[idx]; [vo/gpu/opengl] [276] color[1] += w * in1[idx]; [vo/gpu/opengl] [277] } [vo/gpu/opengl] [278] idx = 24 * rel.y + rel.x + 120; [vo/gpu/opengl] [279] idx = 24 * rel.y + rel.x + 121; [vo/gpu/opengl] [280] d = length(vec2(-2.0, 2.0) - fcoord); [vo/gpu/opengl] [281] if (d < 3.032708) { [vo/gpu/opengl] [282] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [283] wsum += w; [vo/gpu/opengl] [284] color[0] += w * in0[idx]; [vo/gpu/opengl] [285] color[1] += w * in1[idx]; [vo/gpu/opengl] [286] } [vo/gpu/opengl] [287] idx = 24 * rel.y + rel.x + 122; [vo/gpu/opengl] [288] d = length(vec2(-1.0, 2.0) - fcoord); [vo/gpu/opengl] [289] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [290] wsum += w; [vo/gpu/opengl] [291] color[0] += w * in0[idx]; [vo/gpu/opengl] [292] color[1] += w * in1[idx]; [vo/gpu/opengl] [293] idx = 24 * rel.y + rel.x + 123; [vo/gpu/opengl] [294] d = length(vec2(0.0, 2.0) - fcoord); [vo/gpu/opengl] [295] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [296] wsum += w; [vo/gpu/opengl] [297] color[0] += w * in0[idx]; [vo/gpu/opengl] [298] color[1] += w * in1[idx]; [vo/gpu/opengl] [299] idx = 24 * rel.y + rel.x + 124; [vo/gpu/opengl] [300] d = length(vec2(1.0, 2.0) - fcoord); [vo/gpu/opengl] [301] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [302] wsum += w; [vo/gpu/opengl] [303] color[0] += w * in0[idx]; [vo/gpu/opengl] [304] color[1] += w * in1[idx]; [vo/gpu/opengl] [305] idx = 24 * rel.y + rel.x + 125; [vo/gpu/opengl] [306] d = length(vec2(2.0, 2.0) - fcoord); [vo/gpu/opengl] [307] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [308] wsum += w; [vo/gpu/opengl] [309] color[0] += w * in0[idx]; [vo/gpu/opengl] [310] color[1] += w * in1[idx]; [vo/gpu/opengl] [311] idx = 24 * rel.y + rel.x + 126; [vo/gpu/opengl] [312] d = length(vec2(3.0, 2.0) - fcoord); [vo/gpu/opengl] [313] if (d < 3.032708) { [vo/gpu/opengl] [314] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [315] wsum += w; [vo/gpu/opengl] [316] color[0] += w * in0[idx]; [vo/gpu/opengl] [317] color[1] += w * in1[idx]; [vo/gpu/opengl] [318] } [vo/gpu/opengl] [319] idx = 24 * rel.y + rel.x + 127; [vo/gpu/opengl] [320] idx = 24 * rel.y + rel.x + 144; [vo/gpu/opengl] [321] idx = 24 * rel.y + rel.x + 145; [vo/gpu/opengl] [322] d = length(vec2(-2.0, 3.0) - fcoord); [vo/gpu/opengl] [323] if (d < 3.032708) { [vo/gpu/opengl] [324] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [325] wsum += w; [vo/gpu/opengl] [326] color[0] += w * in0[idx]; [vo/gpu/opengl] [327] color[1] += w * in1[idx]; [vo/gpu/opengl] [328] } [vo/gpu/opengl] [329] idx = 24 * rel.y + rel.x + 146; [vo/gpu/opengl] [330] d = length(vec2(-1.0, 3.0) - fcoord); [vo/gpu/opengl] [331] if (d < 3.032708) { [vo/gpu/opengl] [332] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [333] wsum += w; [vo/gpu/opengl] [334] color[0] += w * in0[idx]; [vo/gpu/opengl] [335] color[1] += w * in1[idx]; [vo/gpu/opengl] [336] } [vo/gpu/opengl] [337] idx = 24 * rel.y + rel.x + 147; [vo/gpu/opengl] [338] d = length(vec2(0.0, 3.0) - fcoord); [vo/gpu/opengl] [339] if (d < 3.032708) { [vo/gpu/opengl] [340] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [341] wsum += w; [vo/gpu/opengl] [342] color[0] += w * in0[idx]; [vo/gpu/opengl] [343] color[1] += w * in1[idx]; [vo/gpu/opengl] [344] } [vo/gpu/opengl] [345] idx = 24 * rel.y + rel.x + 148; [vo/gpu/opengl] [346] d = length(vec2(1.0, 3.0) - fcoord); [vo/gpu/opengl] [347] if (d < 3.032708) { [vo/gpu/opengl] [348] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [349] wsum += w; [vo/gpu/opengl] [350] color[0] += w * in0[idx]; [vo/gpu/opengl] [351] color[1] += w * in1[idx]; [vo/gpu/opengl] [352] } [vo/gpu/opengl] [353] idx = 24 * rel.y + rel.x + 149; [vo/gpu/opengl] [354] d = length(vec2(2.0, 3.0) - fcoord); [vo/gpu/opengl] [355] if (d < 3.032708) { [vo/gpu/opengl] [356] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [357] wsum += w; [vo/gpu/opengl] [358] color[0] += w * in0[idx]; [vo/gpu/opengl] [359] color[1] += w * in1[idx]; [vo/gpu/opengl] [360] } [vo/gpu/opengl] [361] idx = 24 * rel.y + rel.x + 150; [vo/gpu/opengl] [362] d = length(vec2(3.0, 3.0) - fcoord); [vo/gpu/opengl] [363] if (d < 3.032708) { [vo/gpu/opengl] [364] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [365] wsum += w; [vo/gpu/opengl] [366] color[0] += w * in0[idx]; [vo/gpu/opengl] [367] color[1] += w * in1[idx]; [vo/gpu/opengl] [368] } [vo/gpu/opengl] [369] idx = 24 * rel.y + rel.x + 151; [vo/gpu/opengl] [370] idx = 24 * rel.y + rel.x + 168; [vo/gpu/opengl] [371] idx = 24 * rel.y + rel.x + 169; [vo/gpu/opengl] [372] idx = 24 * rel.y + rel.x + 170; [vo/gpu/opengl] [373] idx = 24 * rel.y + rel.x + 171; [vo/gpu/opengl] [374] d = length(vec2(0.0, 4.0) - fcoord); [vo/gpu/opengl] [375] if (d < 3.032708) { [vo/gpu/opengl] [376] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [377] wsum += w; [vo/gpu/opengl] [378] color[0] += w * in0[idx]; [vo/gpu/opengl] [379] color[1] += w * in1[idx]; [vo/gpu/opengl] [380] } [vo/gpu/opengl] [381] idx = 24 * rel.y + rel.x + 172; [vo/gpu/opengl] [382] d = length(vec2(1.0, 4.0) - fcoord); [vo/gpu/opengl] [383] if (d < 3.032708) { [vo/gpu/opengl] [384] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [385] wsum += w; [vo/gpu/opengl] [386] color[0] += w * in0[idx]; [vo/gpu/opengl] [387] color[1] += w * in1[idx]; [vo/gpu/opengl] [388] } [vo/gpu/opengl] [389] idx = 24 * rel.y + rel.x + 173; [vo/gpu/opengl] [390] idx = 24 * rel.y + rel.x + 174; [vo/gpu/opengl] [391] idx = 24 * rel.y + rel.x + 175; [vo/gpu/opengl] [392] color = color / vec4(wsum); [vo/gpu/opengl] [393] } [vo/gpu/opengl] [394] color *= 1.000000; [vo/gpu/opengl] [395] color.b = 0.000000; [vo/gpu/opengl] [396] color.a = 1.000000; [vo/gpu/opengl] [397] imageStore(out_image, ivec2(gl_GlobalInvocationID), color); [vo/gpu/opengl] [398] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu] Resizing texture: 690x480 [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] in vec2 vertex_texcoord1; [vo/gpu/opengl] [ 10] out vec2 texcoord1; [vo/gpu/opengl] [ 11] void main() { [vo/gpu/opengl] [ 12] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 13] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 14] texcoord1 = vertex_texcoord1; [vo/gpu/opengl] [ 15] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] in vec2 texcoord1; [vo/gpu/opengl] [ 9] uniform mat3 colormatrix; [vo/gpu/opengl] [ 10] uniform vec3 colormatrix_c; [vo/gpu/opengl] [ 11] uniform sampler2D texture0; [vo/gpu/opengl] [ 12] uniform vec2 texture_size0; [vo/gpu/opengl] [ 13] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 14] uniform vec2 texture_off0; [vo/gpu/opengl] [ 15] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 16] uniform sampler2D texture1; [vo/gpu/opengl] [ 17] uniform vec2 texture_size1; [vo/gpu/opengl] [ 18] uniform mat2 texture_rot1; [vo/gpu/opengl] [ 19] uniform vec2 texture_off1; [vo/gpu/opengl] [ 20] uniform vec2 pixel_size1; [vo/gpu/opengl] [ 21] void main() { [vo/gpu/opengl] [ 22] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 23] color.r = 1.000000 * vec4(texture(texture0, texcoord0)).r; [vo/gpu/opengl] [ 24] color.gb = 1.000000 * vec4(texture(texture1, texcoord1)).rg; [vo/gpu/opengl] [ 25] color = color.rgbr; [vo/gpu/opengl] [ 26] color.rgb = mat3(colormatrix) * color.rgb + colormatrix_c; [vo/gpu/opengl] [ 27] color.a = 1.0; [vo/gpu/opengl] [ 28] // scaler pre-conversion [vo/gpu/opengl] [ 29] // linearize [vo/gpu/opengl] [ 30] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/gpu/opengl] [ 31] color.rgb = pow(color.rgb, vec3(2.4)); [vo/gpu/opengl] [ 32] color.rgb *= vec3(1.0/1.000000); [vo/gpu/opengl] [ 33] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/gpu/opengl] [ 34] color.rgb = 0.750000 - log(1.0/(color.rgb * 0.827906 + 0.007577) - 1.0) * 1.0/6.500000; [vo/gpu/opengl] [ 35] // main scaling [vo/gpu/opengl] [ 36] out_color = color; [vo/gpu/opengl] [ 37] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu] Resizing texture: 690x534 [vo/gpu/opengl] compute shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_compute_shader : enable [vo/gpu/opengl] [ 3] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 4] #define tex1D texture [vo/gpu/opengl] [ 5] #define tex3D texture [vo/gpu/opengl] [ 6] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 7] uniform sampler1D lut; [vo/gpu/opengl] [ 8] layout(rgba16f) uniform writeonly image2D out_image; [vo/gpu/opengl] [ 9] uniform sampler2D texture0; [vo/gpu/opengl] [ 10] uniform vec2 texture_size0; [vo/gpu/opengl] [ 11] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 12] uniform vec2 texture_off0; [vo/gpu/opengl] [ 13] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 14] uniform vec2 out_scale; [vo/gpu/opengl] [ 15] uniform vec2 tex_scale0; [vo/gpu/opengl] [ 16] layout (local_size_x = 32, local_size_y = 8) in; [vo/gpu/opengl] [ 17] #define outcoord(id) (out_scale * (vec2(id) + vec2(0.5))) [vo/gpu/opengl] [ 18] #define texmap0_raw(id) (tex_scale0 * outcoord(id)) [vo/gpu/opengl] [ 19] #define texmap0(id) (texture_rot0 * texmap0_raw(id) + pixel_size0 * texture_off0) [vo/gpu/opengl] [ 20] #define texcoord0 texmap0(gl_GlobalInvocationID) [vo/gpu/opengl] [ 21] shared float in0[640]; [vo/gpu/opengl] [ 22] shared float in1[640]; [vo/gpu/opengl] [ 23] shared float in2[640]; [vo/gpu/opengl] [ 24] void main() { [vo/gpu/opengl] [ 25] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 26] #undef tex [vo/gpu/opengl] [ 27] #undef texmap [vo/gpu/opengl] [ 28] #define tex texture0 [vo/gpu/opengl] [ 29] #define texmap texmap0 [vo/gpu/opengl] [ 30] vec2 pos = texcoord0; [vo/gpu/opengl] [ 31] vec2 size = texture_size0; [vo/gpu/opengl] [ 32] vec2 pt = pixel_size0; [vo/gpu/opengl] [ 33] color = vec4(0.0); [vo/gpu/opengl] [ 34] { [vo/gpu/opengl] [ 35] vec2 wpos = texmap(gl_WorkGroupID * gl_WorkGroupSize); [vo/gpu/opengl] [ 36] vec2 wbase = wpos - pt * fract(wpos * size - vec2(0.5)); [vo/gpu/opengl] [ 37] vec2 fcoord = fract(pos * size - vec2(0.5)); [vo/gpu/opengl] [ 38] vec2 base = pos - pt * fcoord; [vo/gpu/opengl] [ 39] ivec2 rel = ivec2(round((base - wbase) * size)); [vo/gpu/opengl] [ 40] int idx; [vo/gpu/opengl] [ 41] float w, d, wsum = 0.0; [vo/gpu/opengl] [ 42] vec4 c; [vo/gpu/opengl] [ 43] for (int y = int(gl_LocalInvocationID.y); y < 16; y += 8) { [vo/gpu/opengl] [ 44] for (int x = int(gl_LocalInvocationID.x); x < 40; x += 32) { [vo/gpu/opengl] [ 45] c = texture(tex, wbase + pt * vec2(x - 3, y - 3)); [vo/gpu/opengl] [ 46] in0[40 * y + x] = c[0]; [vo/gpu/opengl] [ 47] in1[40 * y + x] = c[1]; [vo/gpu/opengl] [ 48] in2[40 * y + x] = c[2]; [vo/gpu/opengl] [ 49] }} [vo/gpu/opengl] [ 50] groupMemoryBarrier(); [vo/gpu/opengl] [ 51] barrier(); [vo/gpu/opengl] [ 52] // scaler samples [vo/gpu/opengl] [ 53] idx = 40 * rel.y + rel.x + 0; [vo/gpu/opengl] [ 54] idx = 40 * rel.y + rel.x + 1; [vo/gpu/opengl] [ 55] idx = 40 * rel.y + rel.x + 2; [vo/gpu/opengl] [ 56] idx = 40 * rel.y + rel.x + 3; [vo/gpu/opengl] [ 57] d = length(vec2(0.0, -3.0) - fcoord); [vo/gpu/opengl] [ 58] if (d < 3.032708) { [vo/gpu/opengl] [ 59] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 60] wsum += w; [vo/gpu/opengl] [ 61] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 62] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 63] color[2] += w * in2[idx]; [vo/gpu/opengl] [ 64] } [vo/gpu/opengl] [ 65] idx = 40 * rel.y + rel.x + 4; [vo/gpu/opengl] [ 66] d = length(vec2(1.0, -3.0) - fcoord); [vo/gpu/opengl] [ 67] if (d < 3.032708) { [vo/gpu/opengl] [ 68] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 69] wsum += w; [vo/gpu/opengl] [ 70] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 71] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 72] color[2] += w * in2[idx]; [vo/gpu/opengl] [ 73] } [vo/gpu/opengl] [ 74] idx = 40 * rel.y + rel.x + 5; [vo/gpu/opengl] [ 75] idx = 40 * rel.y + rel.x + 6; [vo/gpu/opengl] [ 76] idx = 40 * rel.y + rel.x + 7; [vo/gpu/opengl] [ 77] idx = 40 * rel.y + rel.x + 40; [vo/gpu/opengl] [ 78] idx = 40 * rel.y + rel.x + 41; [vo/gpu/opengl] [ 79] d = length(vec2(-2.0, -2.0) - fcoord); [vo/gpu/opengl] [ 80] if (d < 3.032708) { [vo/gpu/opengl] [ 81] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 82] wsum += w; [vo/gpu/opengl] [ 83] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 84] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 85] color[2] += w * in2[idx]; [vo/gpu/opengl] [ 86] } [vo/gpu/opengl] [ 87] idx = 40 * rel.y + rel.x + 42; [vo/gpu/opengl] [ 88] d = length(vec2(-1.0, -2.0) - fcoord); [vo/gpu/opengl] [ 89] if (d < 3.032708) { [vo/gpu/opengl] [ 90] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 91] wsum += w; [vo/gpu/opengl] [ 92] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 93] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 94] color[2] += w * in2[idx]; [vo/gpu/opengl] [ 95] } [vo/gpu/opengl] [ 96] idx = 40 * rel.y + rel.x + 43; [vo/gpu/opengl] [ 97] d = length(vec2(0.0, -2.0) - fcoord); [vo/gpu/opengl] [ 98] if (d < 3.032708) { [vo/gpu/opengl] [ 99] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [100] wsum += w; [vo/gpu/opengl] [101] color[0] += w * in0[idx]; [vo/gpu/opengl] [102] color[1] += w * in1[idx]; [vo/gpu/opengl] [103] color[2] += w * in2[idx]; [vo/gpu/opengl] [104] } [vo/gpu/opengl] [105] idx = 40 * rel.y + rel.x + 44; [vo/gpu/opengl] [106] d = length(vec2(1.0, -2.0) - fcoord); [vo/gpu/opengl] [107] if (d < 3.032708) { [vo/gpu/opengl] [108] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [109] wsum += w; [vo/gpu/opengl] [110] color[0] += w * in0[idx]; [vo/gpu/opengl] [111] color[1] += w * in1[idx]; [vo/gpu/opengl] [112] color[2] += w * in2[idx]; [vo/gpu/opengl] [113] } [vo/gpu/opengl] [114] idx = 40 * rel.y + rel.x + 45; [vo/gpu/opengl] [115] d = length(vec2(2.0, -2.0) - fcoord); [vo/gpu/opengl] [116] if (d < 3.032708) { [vo/gpu/opengl] [117] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [118] wsum += w; [vo/gpu/opengl] [119] color[0] += w * in0[idx]; [vo/gpu/opengl] [120] color[1] += w * in1[idx]; [vo/gpu/opengl] [121] color[2] += w * in2[idx]; [vo/gpu/opengl] [122] } [vo/gpu/opengl] [123] idx = 40 * rel.y + rel.x + 46; [vo/gpu/opengl] [124] d = length(vec2(3.0, -2.0) - fcoord); [vo/gpu/opengl] [125] if (d < 3.032708) { [vo/gpu/opengl] [126] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [127] wsum += w; [vo/gpu/opengl] [128] color[0] += w * in0[idx]; [vo/gpu/opengl] [129] color[1] += w * in1[idx]; [vo/gpu/opengl] [130] color[2] += w * in2[idx]; [vo/gpu/opengl] [131] } [vo/gpu/opengl] [132] idx = 40 * rel.y + rel.x + 47; [vo/gpu/opengl] [133] idx = 40 * rel.y + rel.x + 80; [vo/gpu/opengl] [134] idx = 40 * rel.y + rel.x + 81; [vo/gpu/opengl] [135] d = length(vec2(-2.0, -1.0) - fcoord); [vo/gpu/opengl] [136] if (d < 3.032708) { [vo/gpu/opengl] [137] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [138] wsum += w; [vo/gpu/opengl] [139] color[0] += w * in0[idx]; [vo/gpu/opengl] [140] color[1] += w * in1[idx]; [vo/gpu/opengl] [141] color[2] += w * in2[idx]; [vo/gpu/opengl] [142] } [vo/gpu/opengl] [143] idx = 40 * rel.y + rel.x + 82; [vo/gpu/opengl] [144] d = length(vec2(-1.0, -1.0) - fcoord); [vo/gpu/opengl] [145] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [146] wsum += w; [vo/gpu/opengl] [147] color[0] += w * in0[idx]; [vo/gpu/opengl] [148] color[1] += w * in1[idx]; [vo/gpu/opengl] [149] color[2] += w * in2[idx]; [vo/gpu/opengl] [150] idx = 40 * rel.y + rel.x + 83; [vo/gpu/opengl] [151] d = length(vec2(0.0, -1.0) - fcoord); [vo/gpu/opengl] [152] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [153] wsum += w; [vo/gpu/opengl] [154] color[0] += w * in0[idx]; [vo/gpu/opengl] [155] color[1] += w * in1[idx]; [vo/gpu/opengl] [156] color[2] += w * in2[idx]; [vo/gpu/opengl] [157] idx = 40 * rel.y + rel.x + 84; [vo/gpu/opengl] [158] d = length(vec2(1.0, -1.0) - fcoord); [vo/gpu/opengl] [159] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [160] wsum += w; [vo/gpu/opengl] [161] color[0] += w * in0[idx]; [vo/gpu/opengl] [162] color[1] += w * in1[idx]; [vo/gpu/opengl] [163] color[2] += w * in2[idx]; [vo/gpu/opengl] [164] idx = 40 * rel.y + rel.x + 85; [vo/gpu/opengl] [165] d = length(vec2(2.0, -1.0) - fcoord); [vo/gpu/opengl] [166] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [167] wsum += w; [vo/gpu/opengl] [168] color[0] += w * in0[idx]; [vo/gpu/opengl] [169] color[1] += w * in1[idx]; [vo/gpu/opengl] [170] color[2] += w * in2[idx]; [vo/gpu/opengl] [171] idx = 40 * rel.y + rel.x + 86; [vo/gpu/opengl] [172] d = length(vec2(3.0, -1.0) - fcoord); [vo/gpu/opengl] [173] if (d < 3.032708) { [vo/gpu/opengl] [174] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [175] wsum += w; [vo/gpu/opengl] [176] color[0] += w * in0[idx]; [vo/gpu/opengl] [177] color[1] += w * in1[idx]; [vo/gpu/opengl] [178] color[2] += w * in2[idx]; [vo/gpu/opengl] [179] } [vo/gpu/opengl] [180] idx = 40 * rel.y + rel.x + 87; [vo/gpu/opengl] [181] idx = 40 * rel.y + rel.x + 120; [vo/gpu/opengl] [182] d = length(vec2(-3.0, 0.0) - fcoord); [vo/gpu/opengl] [183] if (d < 3.032708) { [vo/gpu/opengl] [184] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [185] wsum += w; [vo/gpu/opengl] [186] color[0] += w * in0[idx]; [vo/gpu/opengl] [187] color[1] += w * in1[idx]; [vo/gpu/opengl] [188] color[2] += w * in2[idx]; [vo/gpu/opengl] [189] } [vo/gpu/opengl] [190] idx = 40 * rel.y + rel.x + 121; [vo/gpu/opengl] [191] d = length(vec2(-2.0, 0.0) - fcoord); [vo/gpu/opengl] [192] if (d < 3.032708) { [vo/gpu/opengl] [193] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [194] wsum += w; [vo/gpu/opengl] [195] color[0] += w * in0[idx]; [vo/gpu/opengl] [196] color[1] += w * in1[idx]; [vo/gpu/opengl] [197] color[2] += w * in2[idx]; [vo/gpu/opengl] [198] } [vo/gpu/opengl] [199] idx = 40 * rel.y + rel.x + 122; [vo/gpu/opengl] [200] d = length(vec2(-1.0, 0.0) - fcoord); [vo/gpu/opengl] [201] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [202] wsum += w; [vo/gpu/opengl] [203] color[0] += w * in0[idx]; [vo/gpu/opengl] [204] color[1] += w * in1[idx]; [vo/gpu/opengl] [205] color[2] += w * in2[idx]; [vo/gpu/opengl] [206] idx = 40 * rel.y + rel.x + 123; [vo/gpu/opengl] [207] d = length(vec2(0.0, 0.0) - fcoord); [vo/gpu/opengl] [208] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [209] wsum += w; [vo/gpu/opengl] [210] color[0] += w * in0[idx]; [vo/gpu/opengl] [211] color[1] += w * in1[idx]; [vo/gpu/opengl] [212] color[2] += w * in2[idx]; [vo/gpu/opengl] [213] idx = 40 * rel.y + rel.x + 124; [vo/gpu/opengl] [214] d = length(vec2(1.0, 0.0) - fcoord); [vo/gpu/opengl] [215] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [216] wsum += w; [vo/gpu/opengl] [217] color[0] += w * in0[idx]; [vo/gpu/opengl] [218] color[1] += w * in1[idx]; [vo/gpu/opengl] [219] color[2] += w * in2[idx]; [vo/gpu/opengl] [220] idx = 40 * rel.y + rel.x + 125; [vo/gpu/opengl] [221] d = length(vec2(2.0, 0.0) - fcoord); [vo/gpu/opengl] [222] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [223] wsum += w; [vo/gpu/opengl] [224] color[0] += w * in0[idx]; [vo/gpu/opengl] [225] color[1] += w * in1[idx]; [vo/gpu/opengl] [226] color[2] += w * in2[idx]; [vo/gpu/opengl] [227] idx = 40 * rel.y + rel.x + 126; [vo/gpu/opengl] [228] d = length(vec2(3.0, 0.0) - fcoord); [vo/gpu/opengl] [229] if (d < 3.032708) { [vo/gpu/opengl] [230] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [231] wsum += w; [vo/gpu/opengl] [232] color[0] += w * in0[idx]; [vo/gpu/opengl] [233] color[1] += w * in1[idx]; [vo/gpu/opengl] [234] color[2] += w * in2[idx]; [vo/gpu/opengl] [235] } [vo/gpu/opengl] [236] idx = 40 * rel.y + rel.x + 127; [vo/gpu/opengl] [237] d = length(vec2(4.0, 0.0) - fcoord); [vo/gpu/opengl] [238] if (d < 3.032708) { [vo/gpu/opengl] [239] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [240] wsum += w; [vo/gpu/opengl] [241] color[0] += w * in0[idx]; [vo/gpu/opengl] [242] color[1] += w * in1[idx]; [vo/gpu/opengl] [243] color[2] += w * in2[idx]; [vo/gpu/opengl] [244] } [vo/gpu/opengl] [245] idx = 40 * rel.y + rel.x + 160; [vo/gpu/opengl] [246] d = length(vec2(-3.0, 1.0) - fcoord); [vo/gpu/opengl] [247] if (d < 3.032708) { [vo/gpu/opengl] [248] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [249] wsum += w; [vo/gpu/opengl] [250] color[0] += w * in0[idx]; [vo/gpu/opengl] [251] color[1] += w * in1[idx]; [vo/gpu/opengl] [252] color[2] += w * in2[idx]; [vo/gpu/opengl] [253] } [vo/gpu/opengl] [254] idx = 40 * rel.y + rel.x + 161; [vo/gpu/opengl] [255] d = length(vec2(-2.0, 1.0) - fcoord); [vo/gpu/opengl] [256] if (d < 3.032708) { [vo/gpu/opengl] [257] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [258] wsum += w; [vo/gpu/opengl] [259] color[0] += w * in0[idx]; [vo/gpu/opengl] [260] color[1] += w * in1[idx]; [vo/gpu/opengl] [261] color[2] += w * in2[idx]; [vo/gpu/opengl] [262] } [vo/gpu/opengl] [263] idx = 40 * rel.y + rel.x + 162; [vo/gpu/opengl] [264] d = length(vec2(-1.0, 1.0) - fcoord); [vo/gpu/opengl] [265] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [266] wsum += w; [vo/gpu/opengl] [267] color[0] += w * in0[idx]; [vo/gpu/opengl] [268] color[1] += w * in1[idx]; [vo/gpu/opengl] [269] color[2] += w * in2[idx]; [vo/gpu/opengl] [270] idx = 40 * rel.y + rel.x + 163; [vo/gpu/opengl] [271] d = length(vec2(0.0, 1.0) - fcoord); [vo/gpu/opengl] [272] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [273] wsum += w; [vo/gpu/opengl] [274] color[0] += w * in0[idx]; [vo/gpu/opengl] [275] color[1] += w * in1[idx]; [vo/gpu/opengl] [276] color[2] += w * in2[idx]; [vo/gpu/opengl] [277] idx = 40 * rel.y + rel.x + 164; [vo/gpu/opengl] [278] d = length(vec2(1.0, 1.0) - fcoord); [vo/gpu/opengl] [279] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [280] wsum += w; [vo/gpu/opengl] [281] color[0] += w * in0[idx]; [vo/gpu/opengl] [282] color[1] += w * in1[idx]; [vo/gpu/opengl] [283] color[2] += w * in2[idx]; [vo/gpu/opengl] [284] idx = 40 * rel.y + rel.x + 165; [vo/gpu/opengl] [285] d = length(vec2(2.0, 1.0) - fcoord); [vo/gpu/opengl] [286] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [287] wsum += w; [vo/gpu/opengl] [288] color[0] += w * in0[idx]; [vo/gpu/opengl] [289] color[1] += w * in1[idx]; [vo/gpu/opengl] [290] color[2] += w * in2[idx]; [vo/gpu/opengl] [291] idx = 40 * rel.y + rel.x + 166; [vo/gpu/opengl] [292] d = length(vec2(3.0, 1.0) - fcoord); [vo/gpu/opengl] [293] if (d < 3.032708) { [vo/gpu/opengl] [294] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [295] wsum += w; [vo/gpu/opengl] [296] color[0] += w * in0[idx]; [vo/gpu/opengl] [297] color[1] += w * in1[idx]; [vo/gpu/opengl] [298] color[2] += w * in2[idx]; [vo/gpu/opengl] [299] } [vo/gpu/opengl] [300] idx = 40 * rel.y + rel.x + 167; [vo/gpu/opengl] [301] d = length(vec2(4.0, 1.0) - fcoord); [vo/gpu/opengl] [302] if (d < 3.032708) { [vo/gpu/opengl] [303] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [304] wsum += w; [vo/gpu/opengl] [305] color[0] += w * in0[idx]; [vo/gpu/opengl] [306] color[1] += w * in1[idx]; [vo/gpu/opengl] [307] color[2] += w * in2[idx]; [vo/gpu/opengl] [308] } [vo/gpu/opengl] [309] idx = 40 * rel.y + rel.x + 200; [vo/gpu/opengl] [310] idx = 40 * rel.y + rel.x + 201; [vo/gpu/opengl] [311] d = length(vec2(-2.0, 2.0) - fcoord); [vo/gpu/opengl] [312] if (d < 3.032708) { [vo/gpu/opengl] [313] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [314] wsum += w; [vo/gpu/opengl] [315] color[0] += w * in0[idx]; [vo/gpu/opengl] [316] color[1] += w * in1[idx]; [vo/gpu/opengl] [317] color[2] += w * in2[idx]; [vo/gpu/opengl] [318] } [vo/gpu/opengl] [319] idx = 40 * rel.y + rel.x + 202; [vo/gpu/opengl] [320] d = length(vec2(-1.0, 2.0) - fcoord); [vo/gpu/opengl] [321] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [322] wsum += w; [vo/gpu/opengl] [323] color[0] += w * in0[idx]; [vo/gpu/opengl] [324] color[1] += w * in1[idx]; [vo/gpu/opengl] [325] color[2] += w * in2[idx]; [vo/gpu/opengl] [326] idx = 40 * rel.y + rel.x + 203; [vo/gpu/opengl] [327] d = length(vec2(0.0, 2.0) - fcoord); [vo/gpu/opengl] [328] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [329] wsum += w; [vo/gpu/opengl] [330] color[0] += w * in0[idx]; [vo/gpu/opengl] [331] color[1] += w * in1[idx]; [vo/gpu/opengl] [332] color[2] += w * in2[idx]; [vo/gpu/opengl] [333] idx = 40 * rel.y + rel.x + 204; [vo/gpu/opengl] [334] d = length(vec2(1.0, 2.0) - fcoord); [vo/gpu/opengl] [335] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [336] wsum += w; [vo/gpu/opengl] [337] color[0] += w * in0[idx]; [vo/gpu/opengl] [338] color[1] += w * in1[idx]; [vo/gpu/opengl] [339] color[2] += w * in2[idx]; [vo/gpu/opengl] [340] idx = 40 * rel.y + rel.x + 205; [vo/gpu/opengl] [341] d = length(vec2(2.0, 2.0) - fcoord); [vo/gpu/opengl] [342] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [343] wsum += w; [vo/gpu/opengl] [344] color[0] += w * in0[idx]; [vo/gpu/opengl] [345] color[1] += w * in1[idx]; [vo/gpu/opengl] [346] color[2] += w * in2[idx]; [vo/gpu/opengl] [347] idx = 40 * rel.y + rel.x + 206; [vo/gpu/opengl] [348] d = length(vec2(3.0, 2.0) - fcoord); [vo/gpu/opengl] [349] if (d < 3.032708) { [vo/gpu/opengl] [350] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [351] wsum += w; [vo/gpu/opengl] [352] color[0] += w * in0[idx]; [vo/gpu/opengl] [353] color[1] += w * in1[idx]; [vo/gpu/opengl] [354] color[2] += w * in2[idx]; [vo/gpu/opengl] [355] } [vo/gpu/opengl] [356] idx = 40 * rel.y + rel.x + 207; [vo/gpu/opengl] [357] idx = 40 * rel.y + rel.x + 240; [vo/gpu/opengl] [358] idx = 40 * rel.y + rel.x + 241; [vo/gpu/opengl] [359] d = length(vec2(-2.0, 3.0) - fcoord); [vo/gpu/opengl] [360] if (d < 3.032708) { [vo/gpu/opengl] [361] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [362] wsum += w; [vo/gpu/opengl] [363] color[0] += w * in0[idx]; [vo/gpu/opengl] [364] color[1] += w * in1[idx]; [vo/gpu/opengl] [365] color[2] += w * in2[idx]; [vo/gpu/opengl] [366] } [vo/gpu/opengl] [367] idx = 40 * rel.y + rel.x + 242; [vo/gpu/opengl] [368] d = length(vec2(-1.0, 3.0) - fcoord); [vo/gpu/opengl] [369] if (d < 3.032708) { [vo/gpu/opengl] [370] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [371] wsum += w; [vo/gpu/opengl] [372] color[0] += w * in0[idx]; [vo/gpu/opengl] [373] color[1] += w * in1[idx]; [vo/gpu/opengl] [374] color[2] += w * in2[idx]; [vo/gpu/opengl] [375] } [vo/gpu/opengl] [376] idx = 40 * rel.y + rel.x + 243; [vo/gpu/opengl] [377] d = length(vec2(0.0, 3.0) - fcoord); [vo/gpu/opengl] [378] if (d < 3.032708) { [vo/gpu/opengl] [379] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [380] wsum += w; [vo/gpu/opengl] [381] color[0] += w * in0[idx]; [vo/gpu/opengl] [382] color[1] += w * in1[idx]; [vo/gpu/opengl] [383] color[2] += w * in2[idx]; [vo/gpu/opengl] [384] } [vo/gpu/opengl] [385] idx = 40 * rel.y + rel.x + 244; [vo/gpu/opengl] [386] d = length(vec2(1.0, 3.0) - fcoord); [vo/gpu/opengl] [387] if (d < 3.032708) { [vo/gpu/opengl] [388] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [389] wsum += w; [vo/gpu/opengl] [390] color[0] += w * in0[idx]; [vo/gpu/opengl] [391] color[1] += w * in1[idx]; [vo/gpu/opengl] [392] color[2] += w * in2[idx]; [vo/gpu/opengl] [393] } [vo/gpu/opengl] [394] idx = 40 * rel.y + rel.x + 245; [vo/gpu/opengl] [395] d = length(vec2(2.0, 3.0) - fcoord); [vo/gpu/opengl] [396] if (d < 3.032708) { [vo/gpu/opengl] [397] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [398] wsum += w; [vo/gpu/opengl] [399] color[0] += w * in0[idx]; [vo/gpu/opengl] [400] color[1] += w * in1[idx]; [vo/gpu/opengl] [401] color[2] += w * in2[idx]; [vo/gpu/opengl] [402] } [vo/gpu/opengl] [403] idx = 40 * rel.y + rel.x + 246; [vo/gpu/opengl] [404] d = length(vec2(3.0, 3.0) - fcoord); [vo/gpu/opengl] [405] if (d < 3.032708) { [vo/gpu/opengl] [406] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [407] wsum += w; [vo/gpu/opengl] [408] color[0] += w * in0[idx]; [vo/gpu/opengl] [409] color[1] += w * in1[idx]; [vo/gpu/opengl] [410] color[2] += w * in2[idx]; [vo/gpu/opengl] [411] } [vo/gpu/opengl] [412] idx = 40 * rel.y + rel.x + 247; [vo/gpu/opengl] [413] idx = 40 * rel.y + rel.x + 280; [vo/gpu/opengl] [414] idx = 40 * rel.y + rel.x + 281; [vo/gpu/opengl] [415] idx = 40 * rel.y + rel.x + 282; [vo/gpu/opengl] [416] idx = 40 * rel.y + rel.x + 283; [vo/gpu/opengl] [417] d = length(vec2(0.0, 4.0) - fcoord); [vo/gpu/opengl] [418] if (d < 3.032708) { [vo/gpu/opengl] [419] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [420] wsum += w; [vo/gpu/opengl] [421] color[0] += w * in0[idx]; [vo/gpu/opengl] [422] color[1] += w * in1[idx]; [vo/gpu/opengl] [423] color[2] += w * in2[idx]; [vo/gpu/opengl] [424] } [vo/gpu/opengl] [425] idx = 40 * rel.y + rel.x + 284; [vo/gpu/opengl] [426] d = length(vec2(1.0, 4.0) - fcoord); [vo/gpu/opengl] [427] if (d < 3.032708) { [vo/gpu/opengl] [428] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [429] wsum += w; [vo/gpu/opengl] [430] color[0] += w * in0[idx]; [vo/gpu/opengl] [431] color[1] += w * in1[idx]; [vo/gpu/opengl] [432] color[2] += w * in2[idx]; [vo/gpu/opengl] [433] } [vo/gpu/opengl] [434] idx = 40 * rel.y + rel.x + 285; [vo/gpu/opengl] [435] idx = 40 * rel.y + rel.x + 286; [vo/gpu/opengl] [436] idx = 40 * rel.y + rel.x + 287; [vo/gpu/opengl] [437] color = color / vec4(wsum); [vo/gpu/opengl] [438] } [vo/gpu/opengl] [439] color *= 1.000000; [vo/gpu/opengl] [440] color.a = 1.000000; [vo/gpu/opengl] [441] // scaler post-conversion [vo/gpu/opengl] [442] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/gpu/opengl] [443] color.rgb = (1.0/(1.0 + exp(6.500000 * (0.750000 - color.rgb))) - 0.007577) * 1.0/0.827906; [vo/gpu/opengl] [444] imageStore(out_image, ivec2(gl_GlobalInvocationID), color); [vo/gpu/opengl] [445] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] in vec2 vertex_texcoord1; [vo/gpu/opengl] [ 10] out vec2 texcoord1; [vo/gpu/opengl] [ 11] void main() { [vo/gpu/opengl] [ 12] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 13] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 14] texcoord1 = vertex_texcoord1; [vo/gpu/opengl] [ 15] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] in vec2 texcoord1; [vo/gpu/opengl] [ 9] uniform sampler2D texture0; [vo/gpu/opengl] [ 10] uniform vec2 texture_size0; [vo/gpu/opengl] [ 11] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 12] uniform vec2 texture_off0; [vo/gpu/opengl] [ 13] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 14] uniform sampler2D texture1; [vo/gpu/opengl] [ 15] uniform vec2 texture_size1; [vo/gpu/opengl] [ 16] uniform mat2 texture_rot1; [vo/gpu/opengl] [ 17] uniform vec2 texture_off1; [vo/gpu/opengl] [ 18] uniform vec2 pixel_size1; [vo/gpu/opengl] [ 19] void main() { [vo/gpu/opengl] [ 20] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 21] // merging plane 1 ... [vo/gpu/opengl] [ 22] color.r = 1.000000 * vec4(texture(texture0, texcoord0)).r; [vo/gpu/opengl] [ 23] // merging plane 2 ... into 1 [vo/gpu/opengl] [ 24] color.g = 1.000000 * vec4(texture(texture1, texcoord1)).r; [vo/gpu/opengl] [ 25] out_color = color; [vo/gpu/opengl] [ 26] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] void main() { [vo/gpu/opengl] [ 10] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 11] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 12] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] uniform float random; [vo/gpu/opengl] [ 9] uniform sampler2D texture0; [vo/gpu/opengl] [ 10] uniform vec2 texture_size0; [vo/gpu/opengl] [ 11] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 12] uniform vec2 texture_off0; [vo/gpu/opengl] [ 13] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 14] #define HOOKED_raw texture0 [vo/gpu/opengl] [ 15] #define HOOKED_pos texcoord0 [vo/gpu/opengl] [ 16] #define HOOKED_size texture_size0 [vo/gpu/opengl] [ 17] #define HOOKED_rot texture_rot0 [vo/gpu/opengl] [ 18] #define HOOKED_off texture_off0 [vo/gpu/opengl] [ 19] #define HOOKED_pt pixel_size0 [vo/gpu/opengl] [ 20] #define HOOKED_map texmap0 [vo/gpu/opengl] [ 21] #define HOOKED_mul 1.000000 [vo/gpu/opengl] [ 22] #define HOOKED_tex(pos) (HOOKED_mul * vec4(texture(HOOKED_raw, pos)).rgba) [vo/gpu/opengl] [ 23] #define HOOKED_texOff(off) HOOKED_tex(HOOKED_pos + HOOKED_pt * vec2(off)) [vo/gpu/opengl] [ 24] #define LUMA_raw texture0 [vo/gpu/opengl] [ 25] #define LUMA_pos texcoord0 [vo/gpu/opengl] [ 26] #define LUMA_size texture_size0 [vo/gpu/opengl] [ 27] #define LUMA_rot texture_rot0 [vo/gpu/opengl] [ 28] #define LUMA_off texture_off0 [vo/gpu/opengl] [ 29] #define LUMA_pt pixel_size0 [vo/gpu/opengl] [ 30] #define LUMA_map texmap0 [vo/gpu/opengl] [ 31] #define LUMA_mul 1.000000 [vo/gpu/opengl] [ 32] #define LUMA_tex(pos) (LUMA_mul * vec4(texture(LUMA_raw, pos)).rgba) [vo/gpu/opengl] [ 33] #define LUMA_texOff(off) LUMA_tex(LUMA_pos + LUMA_pt * vec2(off)) [vo/gpu/opengl] [ 34] float mod289(float x) { return x - floor(x * 1.0/289.0) * 289.0; } [vo/gpu/opengl] [ 35] float permute(float x) { [vo/gpu/opengl] [ 36] return mod289( mod289(34.0*x + 1.0) * (fract(x) + 1.0) ); [vo/gpu/opengl] [ 37] } [vo/gpu/opengl] [ 38] float rand(float x) { return fract(x * 1.0/41.0); } [vo/gpu/opengl] [ 39] vec4 average(float range, inout float h) { [vo/gpu/opengl] [ 40] float dist = rand(h) * range; h = permute(h); [vo/gpu/opengl] [ 41] float dir = rand(h) * 6.2831853; h = permute(h); [vo/gpu/opengl] [ 42] vec2 o = dist * vec2(cos(dir), sin(dir)); [vo/gpu/opengl] [ 43] vec4 ref[4]; [vo/gpu/opengl] [ 44] ref[0] = HOOKED_texOff(vec2( o.x, o.y)); [vo/gpu/opengl] [ 45] ref[1] = HOOKED_texOff(vec2(-o.y, o.x)); [vo/gpu/opengl] [ 46] ref[2] = HOOKED_texOff(vec2(-o.x, -o.y)); [vo/gpu/opengl] [ 47] ref[3] = HOOKED_texOff(vec2( o.y, -o.x)); [vo/gpu/opengl] [ 48] return (ref[0] + ref[1] + ref[2] + ref[3])*0.25; [vo/gpu/opengl] [ 49] } [vo/gpu/opengl] [ 50] void main() { [vo/gpu/opengl] [ 51] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 52] { [vo/gpu/opengl] [ 53] vec3 _m = vec3(HOOKED_pos, random) + vec3(1.0); [vo/gpu/opengl] [ 54] float h = permute(permute(permute(_m.x)+_m.y)+_m.z); [vo/gpu/opengl] [ 55] color = HOOKED_tex(HOOKED_pos); [vo/gpu/opengl] [ 56] vec4 avg, diff; [vo/gpu/opengl] [ 57] avg = average(16.000000, h); [vo/gpu/opengl] [ 58] diff = abs(color - avg); [vo/gpu/opengl] [ 59] color = mix(avg, color, greaterThan(diff, vec4(0.003906))); [vo/gpu/opengl] [ 60] vec3 noise; [vo/gpu/opengl] [ 61] noise.x = rand(h); h = permute(h); [vo/gpu/opengl] [ 62] noise.y = rand(h); h = permute(h); [vo/gpu/opengl] [ 63] noise.z = rand(h); h = permute(h); [vo/gpu/opengl] [ 64] color.xyz += 0.005859 * (noise - vec3(0.5)); [vo/gpu/opengl] [ 65] } [vo/gpu/opengl] [ 66] color.g = 0.000000; [vo/gpu/opengl] [ 67] color.b = 0.000000; [vo/gpu/opengl] [ 68] color.a = 1.000000; [vo/gpu/opengl] [ 69] out_color = color; [vo/gpu/opengl] [ 70] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] void main() { [vo/gpu/opengl] [ 10] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 11] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 12] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] uniform float random; [vo/gpu/opengl] [ 9] uniform sampler2D texture0; [vo/gpu/opengl] [ 10] uniform vec2 texture_size0; [vo/gpu/opengl] [ 11] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 12] uniform vec2 texture_off0; [vo/gpu/opengl] [ 13] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 14] #define HOOKED_raw texture0 [vo/gpu/opengl] [ 15] #define HOOKED_pos texcoord0 [vo/gpu/opengl] [ 16] #define HOOKED_size texture_size0 [vo/gpu/opengl] [ 17] #define HOOKED_rot texture_rot0 [vo/gpu/opengl] [ 18] #define HOOKED_off texture_off0 [vo/gpu/opengl] [ 19] #define HOOKED_pt pixel_size0 [vo/gpu/opengl] [ 20] #define HOOKED_map texmap0 [vo/gpu/opengl] [ 21] #define HOOKED_mul 1.000000 [vo/gpu/opengl] [ 22] #define HOOKED_tex(pos) (HOOKED_mul * vec4(texture(HOOKED_raw, pos)).rgba) [vo/gpu/opengl] [ 23] #define HOOKED_texOff(off) HOOKED_tex(HOOKED_pos + HOOKED_pt * vec2(off)) [vo/gpu/opengl] [ 24] #define CHROMA_raw texture0 [vo/gpu/opengl] [ 25] #define CHROMA_pos texcoord0 [vo/gpu/opengl] [ 26] #define CHROMA_size texture_size0 [vo/gpu/opengl] [ 27] #define CHROMA_rot texture_rot0 [vo/gpu/opengl] [ 28] #define CHROMA_off texture_off0 [vo/gpu/opengl] [ 29] #define CHROMA_pt pixel_size0 [vo/gpu/opengl] [ 30] #define CHROMA_map texmap0 [vo/gpu/opengl] [ 31] #define CHROMA_mul 1.000000 [vo/gpu/opengl] [ 32] #define CHROMA_tex(pos) (CHROMA_mul * vec4(texture(CHROMA_raw, pos)).rgba) [vo/gpu/opengl] [ 33] #define CHROMA_texOff(off) CHROMA_tex(CHROMA_pos + CHROMA_pt * vec2(off)) [vo/gpu/opengl] [ 34] float mod289(float x) { return x - floor(x * 1.0/289.0) * 289.0; } [vo/gpu/opengl] [ 35] float permute(float x) { [vo/gpu/opengl] [ 36] return mod289( mod289(34.0*x + 1.0) * (fract(x) + 1.0) ); [vo/gpu/opengl] [ 37] } [vo/gpu/opengl] [ 38] float rand(float x) { return fract(x * 1.0/41.0); } [vo/gpu/opengl] [ 39] vec4 average(float range, inout float h) { [vo/gpu/opengl] [ 40] float dist = rand(h) * range; h = permute(h); [vo/gpu/opengl] [ 41] float dir = rand(h) * 6.2831853; h = permute(h); [vo/gpu/opengl] [ 42] vec2 o = dist * vec2(cos(dir), sin(dir)); [vo/gpu/opengl] [ 43] vec4 ref[4]; [vo/gpu/opengl] [ 44] ref[0] = HOOKED_texOff(vec2( o.x, o.y)); [vo/gpu/opengl] [ 45] ref[1] = HOOKED_texOff(vec2(-o.y, o.x)); [vo/gpu/opengl] [ 46] ref[2] = HOOKED_texOff(vec2(-o.x, -o.y)); [vo/gpu/opengl] [ 47] ref[3] = HOOKED_texOff(vec2( o.y, -o.x)); [vo/gpu/opengl] [ 48] return (ref[0] + ref[1] + ref[2] + ref[3])*0.25; [vo/gpu/opengl] [ 49] } [vo/gpu/opengl] [ 50] void main() { [vo/gpu/opengl] [ 51] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 52] { [vo/gpu/opengl] [ 53] vec3 _m = vec3(HOOKED_pos, random) + vec3(1.0); [vo/gpu/opengl] [ 54] float h = permute(permute(permute(_m.x)+_m.y)+_m.z); [vo/gpu/opengl] [ 55] color = HOOKED_tex(HOOKED_pos); [vo/gpu/opengl] [ 56] vec4 avg, diff; [vo/gpu/opengl] [ 57] avg = average(16.000000, h); [vo/gpu/opengl] [ 58] diff = abs(color - avg); [vo/gpu/opengl] [ 59] color = mix(avg, color, greaterThan(diff, vec4(0.003906))); [vo/gpu/opengl] [ 60] vec3 noise; [vo/gpu/opengl] [ 61] noise.x = rand(h); h = permute(h); [vo/gpu/opengl] [ 62] noise.y = rand(h); h = permute(h); [vo/gpu/opengl] [ 63] noise.z = rand(h); h = permute(h); [vo/gpu/opengl] [ 64] color.xyz += 0.005859 * (noise - vec3(0.5)); [vo/gpu/opengl] [ 65] } [vo/gpu/opengl] [ 66] color.b = 0.000000; [vo/gpu/opengl] [ 67] color.a = 1.000000; [vo/gpu/opengl] [ 68] out_color = color; [vo/gpu/opengl] [ 69] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu] Resizing texture: 690x534 [vo/gpu] Dither to 8. [ipc_0] Client connected [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] in vec2 vertex_texcoord1; [vo/gpu/opengl] [ 10] out vec2 texcoord1; [vo/gpu/opengl] [ 11] void main() { [vo/gpu/opengl] [ 12] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 13] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 14] texcoord1 = vertex_texcoord1; [vo/gpu/opengl] [ 15] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] in vec2 texcoord1; [vo/gpu/opengl] [ 9] uniform float inter_coeff; [vo/gpu/opengl] [ 10] uniform vec3 src_luma; [vo/gpu/opengl] [ 11] uniform vec3 dst_luma; [vo/gpu/opengl] [ 12] uniform sampler2D dither; [vo/gpu/opengl] [ 13] uniform sampler2D texture0; [vo/gpu/opengl] [ 14] uniform vec2 texture_size0; [vo/gpu/opengl] [ 15] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 16] uniform vec2 texture_off0; [vo/gpu/opengl] [ 17] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 18] uniform sampler2D texture1; [vo/gpu/opengl] [ 19] uniform vec2 texture_size1; [vo/gpu/opengl] [ 20] uniform mat2 texture_rot1; [vo/gpu/opengl] [ 21] uniform vec2 texture_off1; [vo/gpu/opengl] [ 22] uniform vec2 pixel_size1; [vo/gpu/opengl] [ 23] void main() { [vo/gpu/opengl] [ 24] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 25] color = mix(texture(texture0, texcoord0), texture(texture1, texcoord1), inter_coeff); [vo/gpu/opengl] [ 26] // color mapping [vo/gpu/opengl] [ 27] color.rgb *= vec3(1.000000); [vo/gpu/opengl] [ 28] color.rgb *= vec3(1.000000); [vo/gpu/opengl] [ 29] // delinearize [vo/gpu/opengl] [ 30] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/gpu/opengl] [ 31] color.rgb *= vec3(1.000000); [vo/gpu/opengl] [ 32] color.rgb = pow(color.rgb, vec3(1.0/2.4)); [vo/gpu/opengl] [ 33] // dithering [vo/gpu/opengl] [ 34] vec2 dither_pos = gl_FragCoord.xy * 1.0/64.0; [vo/gpu/opengl] [ 35] float dither_value = texture(dither, dither_pos).r; [vo/gpu/opengl] [ 36] color = floor(color * 255.0 + dither_value + 0.5 / 4096.0) * 1.0/255.0; [vo/gpu/opengl] [ 37] out_color = color; [vo/gpu/opengl] [ 38] } [vo/gpu/opengl] shader link log (status=1): [osd/libass] fontselect: (sans-serif, 400, 0) -> /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf, 0, DejaVuSans [osd/libass] fontselect: (sans-serif, 400, 0) -> /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf, 0, DejaVuSans [cplayer] first video frame after restart shown [cplayer] audio sync: sync_to_video=1, offset=-0.021612 [osc] osc_init [cplayer] starting audio playback [cplayer] playback restart complete @ 0.021000 [vo/gpu/x11] Disabling screensaver. [cplayer] Run command: change-list, flags=64, args=[shared-script-properties, append, osc-margins=0.000000,0.000000,0.000000,0.000000] [cplayer] Set property: shared-script-properties -> 1 [cplayer] Change display sync audio drift: -1 AV: 00:00:00 / 00:07:37 (0%) A-V: -0.032 DS: 2.500/0 [vo/gpu] Resizing texture: 690x534 [vo/gpu] Resizing texture: 690x534 [cplayer] Change display sync audio drift: 1 AV: 00:00:00 / 00:07:37 (0%) A-V: 0.019 DS: 2.667/0 [vo/gpu] Resizing texture: 690x534 AV: 00:00:00 / 00:07:37 (0%) A-V: 0.019 DS: 2.750/0 [vo/gpu] Resizing texture: 690x534 AV: 00:00:00 / 00:07:37 (0%) A-V: 0.019 DS: 2.600/0 [vo/gpu] Resizing texture: 690x534 AV: 00:00:00 / 00:07:37 (0%) A-V: 0.003 DS: 2.500/1 [vo/gpu] Resizing texture: 690x534 AV: 00:00:00 / 00:07:37 (0%) A-V: 0.002 DS: 2.571/1 [vo/gpu] Resizing texture: 690x534 AV: 00:00:00 / 00:07:37 (0%) A-V: 0.002 DS: 2.500/1 [vo/gpu] Resizing texture: 690x534 AV: 00:00:01 / 00:07:37 (0%) A-V: 0.002 DS: 2.424/1 [cplayer] Run command: vf, flags=64, args=[add, vapoursynth=/home/user/.local/share/SVP4/scripts/9a23a5ee.py:4:7] [user_filter_wrapper] Setting option 'file' = '/home/user/.local/share/SVP4/scripts/9a23a5ee.py' (flags = 0) [user_filter_wrapper] Setting option 'buffered-frames' = '4' (flags = 0) [user_filter_wrapper] Setting option 'concurrent-frames' = '7' (flags = 0) [global] user path: '/home/user/.local/share/SVP4/scripts/9a23a5ee.py' -> '/home/user/.local/share/SVP4/scripts/9a23a5ee.py' [vapoursynth] using 7 concurrent requests. [vf] User filter list: [vf] vapoursynth (vapoursynth.00) [vf] [vapoursynth] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vapoursynth] initializing... [vapoursynth] initialized. Beignet: "unable to find good values for local_work_size[i], please provide\n" " local_work_size[] explicitly, you can find good values with\n" " trial-and-error method." [cplayer] Change display sync audio drift: -1 AV: 00:00:01 / 00:07:37 (0%) A-V: -0.432 DS: 2.441/1 [vf] [autorotate] 688x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [convert] 688x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [out] 688x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [cplayer] Change display sync audio drift: 1 AV: 00:00:01 / 00:07:37 (0%) A-V: 0.420 DS: 2.917/2 VO: [gpu] 688x480 => 688x534 yuv420p [cplayer] VO: Description: Shader-based GPU Renderer [vo/gpu] reconfig to 688x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vo/gpu] screen size: 1366x768 [vo/gpu] Resize: 690x534 [vo/gpu] Window size: 690x534 (Borders: l=0 t=0 r=0 b=0) [vo/gpu] Video source: 688x480 (256:285) [vo/gpu] Video display: (0, 0) 688x480 -> (1, 0) 688x534 [vo/gpu] Video scale: 1.000000/1.112500 [vo/gpu] OSD borders: l=1 t=0 r=1 b=0 [vo/gpu] Video borders: l=1 t=0 r=1 b=0 [vo/gpu] Reported display depth: 8 [vo/gpu] Texture for plane 0: 688x480 [vo/gpu] Texture for plane 1: 344x240 [vo/gpu] Texture for plane 2: 344x240 [vo/gpu] Testing FBO format rgba16f [vo/gpu] Resizing texture: 16x16 [vo/gpu] Using FBO format rgba16f. AV: 00:00:01 / 00:07:37 (0%) A-V: 0.291 DS: 2.500/0 Dropped: 5 [vo/gpu] Resize: 688x532 [vo/gpu] Window size: 688x532 (Borders: l=0 t=0 r=0 b=0) [vo/gpu] Video source: 688x480 (256:285) [vo/gpu] Video display: (0, 0) 688x480 -> (1, 0) 685x532 [vo/gpu] Video scale: 0.995640/1.108333 [vo/gpu] OSD borders: l=1 t=0 r=2 b=0 [vo/gpu] Video borders: l=1 t=0 r=2 b=0 [vo/gpu] Reported display depth: 8 AV: 00:00:01 / 00:07:37 (0%) A-V: 0.277 DS: 2.442/0 Dropped: 6 [vo/gpu] Resize: 688x534 [vo/gpu] Window size: 688x534 (Borders: l=0 t=0 r=0 b=0) [vo/gpu] Video source: 688x480 (256:285) [vo/gpu] Video display: (0, 0) 688x480 -> (0, 0) 688x534 [vo/gpu] Video scale: 1.000000/1.112500 [vo/gpu] OSD borders: l=0 t=0 r=0 b=0 [vo/gpu] Video borders: l=0 t=0 r=0 b=0 [vo/gpu] Reported display depth: 8 [osc] osc_init [cplayer] Run command: change-list, flags=64, args=[shared-script-properties, append, osc-margins=0.000000,0.000000,0.000000,0.000000] [cplayer] Set property: shared-script-properties -> 1 AV: 00:00:01 / 00:07:37 (0%) A-V: 0.026 DS: 1.582/0 Dropped: 30 [cplayer] Change display sync audio drift: 0 [cplayer] Compensation factor: 0.852459 AV: 00:00:01 / 00:07:37 (0%) A-V: -0.001 DS: 1.559/0 Dropped: 30 [vo/gpu] Resizing texture: 344x240 [vo/gpu] Resizing texture: 688x480 [vo/gpu] Resizing texture: 344x240 [vo/gpu] Resizing texture: 688x480 [vo/gpu] Resizing texture: 688x480 [vo/gpu] Resizing texture: 688x534 [vo/gpu/opengl] compute shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_compute_shader : enable [vo/gpu/opengl] [ 3] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 4] #define tex1D texture [vo/gpu/opengl] [ 5] #define tex3D texture [vo/gpu/opengl] [ 6] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 7] uniform sampler1D lut; [vo/gpu/opengl] [ 8] uniform vec3 src_luma; [vo/gpu/opengl] [ 9] uniform vec3 dst_luma; [vo/gpu/opengl] [ 10] layout(rgba16f) uniform writeonly image2D out_image; [vo/gpu/opengl] [ 11] uniform sampler2D texture0; [vo/gpu/opengl] [ 12] uniform vec2 texture_size0; [vo/gpu/opengl] [ 13] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 14] uniform vec2 texture_off0; [vo/gpu/opengl] [ 15] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 16] uniform vec2 out_scale; [vo/gpu/opengl] [ 17] uniform vec2 tex_scale0; [vo/gpu/opengl] [ 18] layout (local_size_x = 32, local_size_y = 8) in; [vo/gpu/opengl] [ 19] #define outcoord(id) (out_scale * (vec2(id) + vec2(0.5))) [vo/gpu/opengl] [ 20] #define texmap0_raw(id) (tex_scale0 * outcoord(id)) [vo/gpu/opengl] [ 21] #define texmap0(id) (texture_rot0 * texmap0_raw(id) + pixel_size0 * texture_off0) [vo/gpu/opengl] [ 22] #define texcoord0 texmap0(gl_GlobalInvocationID) [vo/gpu/opengl] [ 23] shared float in0[640]; [vo/gpu/opengl] [ 24] shared float in1[640]; [vo/gpu/opengl] [ 25] shared float in2[640]; [vo/gpu/opengl] [ 26] void main() { [vo/gpu/opengl] [ 27] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 28] #undef tex [vo/gpu/opengl] [ 29] #undef texmap [vo/gpu/opengl] [ 30] #define tex texture0 [vo/gpu/opengl] [ 31] #define texmap texmap0 [vo/gpu/opengl] [ 32] vec2 pos = texcoord0; [vo/gpu/opengl] [ 33] vec2 size = texture_size0; [vo/gpu/opengl] [ 34] vec2 pt = pixel_size0; [vo/gpu/opengl] [ 35] color = vec4(0.0); [vo/gpu/opengl] [ 36] { [vo/gpu/opengl] [ 37] vec2 wpos = texmap(gl_WorkGroupID * gl_WorkGroupSize); [vo/gpu/opengl] [ 38] vec2 wbase = wpos - pt * fract(wpos * size - vec2(0.5)); [vo/gpu/opengl] [ 39] vec2 fcoord = fract(pos * size - vec2(0.5)); [vo/gpu/opengl] [ 40] vec2 base = pos - pt * fcoord; [vo/gpu/opengl] [ 41] ivec2 rel = ivec2(round((base - wbase) * size)); [vo/gpu/opengl] [ 42] int idx; [vo/gpu/opengl] [ 43] float w, d, wsum = 0.0; [vo/gpu/opengl] [ 44] vec4 c; [vo/gpu/opengl] [ 45] for (int y = int(gl_LocalInvocationID.y); y < 16; y += 8) { [vo/gpu/opengl] [ 46] for (int x = int(gl_LocalInvocationID.x); x < 40; x += 32) { [vo/gpu/opengl] [ 47] c = texture(tex, wbase + pt * vec2(x - 3, y - 3)); [vo/gpu/opengl] [ 48] in0[40 * y + x] = c[0]; [vo/gpu/opengl] [ 49] in1[40 * y + x] = c[1]; [vo/gpu/opengl] [ 50] in2[40 * y + x] = c[2]; [vo/gpu/opengl] [ 51] }} [vo/gpu/opengl] [ 52] groupMemoryBarrier(); [vo/gpu/opengl] [ 53] barrier(); [vo/gpu/opengl] [ 54] // scaler samples [vo/gpu/opengl] [ 55] idx = 40 * rel.y + rel.x + 0; [vo/gpu/opengl] [ 56] idx = 40 * rel.y + rel.x + 1; [vo/gpu/opengl] [ 57] idx = 40 * rel.y + rel.x + 2; [vo/gpu/opengl] [ 58] idx = 40 * rel.y + rel.x + 3; [vo/gpu/opengl] [ 59] d = length(vec2(0.0, -3.0) - fcoord); [vo/gpu/opengl] [ 60] if (d < 3.032708) { [vo/gpu/opengl] [ 61] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 62] wsum += w; [vo/gpu/opengl] [ 63] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 64] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 65] color[2] += w * in2[idx]; [vo/gpu/opengl] [ 66] } [vo/gpu/opengl] [ 67] idx = 40 * rel.y + rel.x + 4; [vo/gpu/opengl] [ 68] d = length(vec2(1.0, -3.0) - fcoord); [vo/gpu/opengl] [ 69] if (d < 3.032708) { [vo/gpu/opengl] [ 70] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 71] wsum += w; [vo/gpu/opengl] [ 72] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 73] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 74] color[2] += w * in2[idx]; [vo/gpu/opengl] [ 75] } [vo/gpu/opengl] [ 76] idx = 40 * rel.y + rel.x + 5; [vo/gpu/opengl] [ 77] idx = 40 * rel.y + rel.x + 6; [vo/gpu/opengl] [ 78] idx = 40 * rel.y + rel.x + 7; [vo/gpu/opengl] [ 79] idx = 40 * rel.y + rel.x + 40; [vo/gpu/opengl] [ 80] idx = 40 * rel.y + rel.x + 41; [vo/gpu/opengl] [ 81] d = length(vec2(-2.0, -2.0) - fcoord); [vo/gpu/opengl] [ 82] if (d < 3.032708) { [vo/gpu/opengl] [ 83] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 84] wsum += w; [vo/gpu/opengl] [ 85] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 86] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 87] color[2] += w * in2[idx]; [vo/gpu/opengl] [ 88] } [vo/gpu/opengl] [ 89] idx = 40 * rel.y + rel.x + 42; [vo/gpu/opengl] [ 90] d = length(vec2(-1.0, -2.0) - fcoord); [vo/gpu/opengl] [ 91] if (d < 3.032708) { [vo/gpu/opengl] [ 92] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [ 93] wsum += w; [vo/gpu/opengl] [ 94] color[0] += w * in0[idx]; [vo/gpu/opengl] [ 95] color[1] += w * in1[idx]; [vo/gpu/opengl] [ 96] color[2] += w * in2[idx]; [vo/gpu/opengl] [ 97] } [vo/gpu/opengl] [ 98] idx = 40 * rel.y + rel.x + 43; [vo/gpu/opengl] [ 99] d = length(vec2(0.0, -2.0) - fcoord); [vo/gpu/opengl] [100] if (d < 3.032708) { [vo/gpu/opengl] [101] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [102] wsum += w; [vo/gpu/opengl] [103] color[0] += w * in0[idx]; [vo/gpu/opengl] [104] color[1] += w * in1[idx]; [vo/gpu/opengl] [105] color[2] += w * in2[idx]; [vo/gpu/opengl] [106] } [vo/gpu/opengl] [107] idx = 40 * rel.y + rel.x + 44; [vo/gpu/opengl] [108] d = length(vec2(1.0, -2.0) - fcoord); [vo/gpu/opengl] [109] if (d < 3.032708) { [vo/gpu/opengl] [110] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [111] wsum += w; [vo/gpu/opengl] [112] color[0] += w * in0[idx]; [vo/gpu/opengl] [113] color[1] += w * in1[idx]; [vo/gpu/opengl] [114] color[2] += w * in2[idx]; [vo/gpu/opengl] [115] } [vo/gpu/opengl] [116] idx = 40 * rel.y + rel.x + 45; [vo/gpu/opengl] [117] d = length(vec2(2.0, -2.0) - fcoord); [vo/gpu/opengl] [118] if (d < 3.032708) { [vo/gpu/opengl] [119] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [120] wsum += w; [vo/gpu/opengl] [121] color[0] += w * in0[idx]; [vo/gpu/opengl] [122] color[1] += w * in1[idx]; [vo/gpu/opengl] [123] color[2] += w * in2[idx]; [vo/gpu/opengl] [124] } [vo/gpu/opengl] [125] idx = 40 * rel.y + rel.x + 46; [vo/gpu/opengl] [126] d = length(vec2(3.0, -2.0) - fcoord); [vo/gpu/opengl] [127] if (d < 3.032708) { [vo/gpu/opengl] [128] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [129] wsum += w; [vo/gpu/opengl] [130] color[0] += w * in0[idx]; [vo/gpu/opengl] [131] color[1] += w * in1[idx]; [vo/gpu/opengl] [132] color[2] += w * in2[idx]; [vo/gpu/opengl] [133] } [vo/gpu/opengl] [134] idx = 40 * rel.y + rel.x + 47; [vo/gpu/opengl] [135] idx = 40 * rel.y + rel.x + 80; [vo/gpu/opengl] [136] idx = 40 * rel.y + rel.x + 81; [vo/gpu/opengl] [137] d = length(vec2(-2.0, -1.0) - fcoord); [vo/gpu/opengl] [138] if (d < 3.032708) { [vo/gpu/opengl] [139] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [140] wsum += w; [vo/gpu/opengl] [141] color[0] += w * in0[idx]; [vo/gpu/opengl] [142] color[1] += w * in1[idx]; [vo/gpu/opengl] [143] color[2] += w * in2[idx]; [vo/gpu/opengl] [144] } [vo/gpu/opengl] [145] idx = 40 * rel.y + rel.x + 82; [vo/gpu/opengl] [146] d = length(vec2(-1.0, -1.0) - fcoord); [vo/gpu/opengl] [147] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [148] wsum += w; [vo/gpu/opengl] [149] color[0] += w * in0[idx]; [vo/gpu/opengl] [150] color[1] += w * in1[idx]; [vo/gpu/opengl] [151] color[2] += w * in2[idx]; [vo/gpu/opengl] [152] idx = 40 * rel.y + rel.x + 83; [vo/gpu/opengl] [153] d = length(vec2(0.0, -1.0) - fcoord); [vo/gpu/opengl] [154] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [155] wsum += w; [vo/gpu/opengl] [156] color[0] += w * in0[idx]; [vo/gpu/opengl] [157] color[1] += w * in1[idx]; [vo/gpu/opengl] [158] color[2] += w * in2[idx]; [vo/gpu/opengl] [159] idx = 40 * rel.y + rel.x + 84; [vo/gpu/opengl] [160] d = length(vec2(1.0, -1.0) - fcoord); [vo/gpu/opengl] [161] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [162] wsum += w; [vo/gpu/opengl] [163] color[0] += w * in0[idx]; [vo/gpu/opengl] [164] color[1] += w * in1[idx]; [vo/gpu/opengl] [165] color[2] += w * in2[idx]; [vo/gpu/opengl] [166] idx = 40 * rel.y + rel.x + 85; [vo/gpu/opengl] [167] d = length(vec2(2.0, -1.0) - fcoord); [vo/gpu/opengl] [168] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [169] wsum += w; [vo/gpu/opengl] [170] color[0] += w * in0[idx]; [vo/gpu/opengl] [171] color[1] += w * in1[idx]; [vo/gpu/opengl] [172] color[2] += w * in2[idx]; [vo/gpu/opengl] [173] idx = 40 * rel.y + rel.x + 86; [vo/gpu/opengl] [174] d = length(vec2(3.0, -1.0) - fcoord); [vo/gpu/opengl] [175] if (d < 3.032708) { [vo/gpu/opengl] [176] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [177] wsum += w; [vo/gpu/opengl] [178] color[0] += w * in0[idx]; [vo/gpu/opengl] [179] color[1] += w * in1[idx]; [vo/gpu/opengl] [180] color[2] += w * in2[idx]; [vo/gpu/opengl] [181] } [vo/gpu/opengl] [182] idx = 40 * rel.y + rel.x + 87; [vo/gpu/opengl] [183] idx = 40 * rel.y + rel.x + 120; [vo/gpu/opengl] [184] d = length(vec2(-3.0, 0.0) - fcoord); [vo/gpu/opengl] [185] if (d < 3.032708) { [vo/gpu/opengl] [186] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [187] wsum += w; [vo/gpu/opengl] [188] color[0] += w * in0[idx]; [vo/gpu/opengl] [189] color[1] += w * in1[idx]; [vo/gpu/opengl] [190] color[2] += w * in2[idx]; [vo/gpu/opengl] [191] } [vo/gpu/opengl] [192] idx = 40 * rel.y + rel.x + 121; [vo/gpu/opengl] [193] d = length(vec2(-2.0, 0.0) - fcoord); [vo/gpu/opengl] [194] if (d < 3.032708) { [vo/gpu/opengl] [195] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [196] wsum += w; [vo/gpu/opengl] [197] color[0] += w * in0[idx]; [vo/gpu/opengl] [198] color[1] += w * in1[idx]; [vo/gpu/opengl] [199] color[2] += w * in2[idx]; [vo/gpu/opengl] [200] } [vo/gpu/opengl] [201] idx = 40 * rel.y + rel.x + 122; [vo/gpu/opengl] [202] d = length(vec2(-1.0, 0.0) - fcoord); [vo/gpu/opengl] [203] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [204] wsum += w; [vo/gpu/opengl] [205] color[0] += w * in0[idx]; [vo/gpu/opengl] [206] color[1] += w * in1[idx]; [vo/gpu/opengl] [207] color[2] += w * in2[idx]; [vo/gpu/opengl] [208] idx = 40 * rel.y + rel.x + 123; [vo/gpu/opengl] [209] d = length(vec2(0.0, 0.0) - fcoord); [vo/gpu/opengl] [210] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [211] wsum += w; [vo/gpu/opengl] [212] color[0] += w * in0[idx]; [vo/gpu/opengl] [213] color[1] += w * in1[idx]; [vo/gpu/opengl] [214] color[2] += w * in2[idx]; [vo/gpu/opengl] [215] idx = 40 * rel.y + rel.x + 124; [vo/gpu/opengl] [216] d = length(vec2(1.0, 0.0) - fcoord); [vo/gpu/opengl] [217] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [218] wsum += w; [vo/gpu/opengl] [219] color[0] += w * in0[idx]; [vo/gpu/opengl] [220] color[1] += w * in1[idx]; [vo/gpu/opengl] [221] color[2] += w * in2[idx]; [vo/gpu/opengl] [222] idx = 40 * rel.y + rel.x + 125; [vo/gpu/opengl] [223] d = length(vec2(2.0, 0.0) - fcoord); [vo/gpu/opengl] [224] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [225] wsum += w; [vo/gpu/opengl] [226] color[0] += w * in0[idx]; [vo/gpu/opengl] [227] color[1] += w * in1[idx]; [vo/gpu/opengl] [228] color[2] += w * in2[idx]; [vo/gpu/opengl] [229] idx = 40 * rel.y + rel.x + 126; [vo/gpu/opengl] [230] d = length(vec2(3.0, 0.0) - fcoord); [vo/gpu/opengl] [231] if (d < 3.032708) { [vo/gpu/opengl] [232] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [233] wsum += w; [vo/gpu/opengl] [234] color[0] += w * in0[idx]; [vo/gpu/opengl] [235] color[1] += w * in1[idx]; [vo/gpu/opengl] [236] color[2] += w * in2[idx]; [vo/gpu/opengl] [237] } [vo/gpu/opengl] [238] idx = 40 * rel.y + rel.x + 127; [vo/gpu/opengl] [239] d = length(vec2(4.0, 0.0) - fcoord); [vo/gpu/opengl] [240] if (d < 3.032708) { [vo/gpu/opengl] [241] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [242] wsum += w; [vo/gpu/opengl] [243] color[0] += w * in0[idx]; [vo/gpu/opengl] [244] color[1] += w * in1[idx]; [vo/gpu/opengl] [245] color[2] += w * in2[idx]; [vo/gpu/opengl] [246] } [vo/gpu/opengl] [247] idx = 40 * rel.y + rel.x + 160; [vo/gpu/opengl] [248] d = length(vec2(-3.0, 1.0) - fcoord); [vo/gpu/opengl] [249] if (d < 3.032708) { [vo/gpu/opengl] [250] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [251] wsum += w; [vo/gpu/opengl] [252] color[0] += w * in0[idx]; [vo/gpu/opengl] [253] color[1] += w * in1[idx]; [vo/gpu/opengl] [254] color[2] += w * in2[idx]; [vo/gpu/opengl] [255] } [vo/gpu/opengl] [256] idx = 40 * rel.y + rel.x + 161; [vo/gpu/opengl] [257] d = length(vec2(-2.0, 1.0) - fcoord); [vo/gpu/opengl] [258] if (d < 3.032708) { [vo/gpu/opengl] [259] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [260] wsum += w; [vo/gpu/opengl] [261] color[0] += w * in0[idx]; [vo/gpu/opengl] [262] color[1] += w * in1[idx]; [vo/gpu/opengl] [263] color[2] += w * in2[idx]; [vo/gpu/opengl] [264] } [vo/gpu/opengl] [265] idx = 40 * rel.y + rel.x + 162; [vo/gpu/opengl] [266] d = length(vec2(-1.0, 1.0) - fcoord); [vo/gpu/opengl] [267] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [268] wsum += w; [vo/gpu/opengl] [269] color[0] += w * in0[idx]; [vo/gpu/opengl] [270] color[1] += w * in1[idx]; [vo/gpu/opengl] [271] color[2] += w * in2[idx]; [vo/gpu/opengl] [272] idx = 40 * rel.y + rel.x + 163; [vo/gpu/opengl] [273] d = length(vec2(0.0, 1.0) - fcoord); [vo/gpu/opengl] [274] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [275] wsum += w; [vo/gpu/opengl] [276] color[0] += w * in0[idx]; [vo/gpu/opengl] [277] color[1] += w * in1[idx]; [vo/gpu/opengl] [278] color[2] += w * in2[idx]; [vo/gpu/opengl] [279] idx = 40 * rel.y + rel.x + 164; [vo/gpu/opengl] [280] d = length(vec2(1.0, 1.0) - fcoord); [vo/gpu/opengl] [281] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [282] wsum += w; [vo/gpu/opengl] [283] color[0] += w * in0[idx]; [vo/gpu/opengl] [284] color[1] += w * in1[idx]; [vo/gpu/opengl] [285] color[2] += w * in2[idx]; [vo/gpu/opengl] [286] idx = 40 * rel.y + rel.x + 165; [vo/gpu/opengl] [287] d = length(vec2(2.0, 1.0) - fcoord); [vo/gpu/opengl] [288] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [289] wsum += w; [vo/gpu/opengl] [290] color[0] += w * in0[idx]; [vo/gpu/opengl] [291] color[1] += w * in1[idx]; [vo/gpu/opengl] [292] color[2] += w * in2[idx]; [vo/gpu/opengl] [293] idx = 40 * rel.y + rel.x + 166; [vo/gpu/opengl] [294] d = length(vec2(3.0, 1.0) - fcoord); [vo/gpu/opengl] [295] if (d < 3.032708) { [vo/gpu/opengl] [296] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [297] wsum += w; [vo/gpu/opengl] [298] color[0] += w * in0[idx]; [vo/gpu/opengl] [299] color[1] += w * in1[idx]; [vo/gpu/opengl] [300] color[2] += w * in2[idx]; [vo/gpu/opengl] [301] } [vo/gpu/opengl] [302] idx = 40 * rel.y + rel.x + 167; [vo/gpu/opengl] [303] d = length(vec2(4.0, 1.0) - fcoord); [vo/gpu/opengl] [304] if (d < 3.032708) { [vo/gpu/opengl] [305] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [306] wsum += w; [vo/gpu/opengl] [307] color[0] += w * in0[idx]; [vo/gpu/opengl] [308] color[1] += w * in1[idx]; [vo/gpu/opengl] [309] color[2] += w * in2[idx]; [vo/gpu/opengl] [310] } [vo/gpu/opengl] [311] idx = 40 * rel.y + rel.x + 200; [vo/gpu/opengl] [312] idx = 40 * rel.y + rel.x + 201; [vo/gpu/opengl] [313] d = length(vec2(-2.0, 2.0) - fcoord); [vo/gpu/opengl] [314] if (d < 3.032708) { [vo/gpu/opengl] [315] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [316] wsum += w; [vo/gpu/opengl] [317] color[0] += w * in0[idx]; [vo/gpu/opengl] [318] color[1] += w * in1[idx]; [vo/gpu/opengl] [319] color[2] += w * in2[idx]; [vo/gpu/opengl] [320] } [vo/gpu/opengl] [321] idx = 40 * rel.y + rel.x + 202; [vo/gpu/opengl] [322] d = length(vec2(-1.0, 2.0) - fcoord); [vo/gpu/opengl] [323] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [324] wsum += w; [vo/gpu/opengl] [325] color[0] += w * in0[idx]; [vo/gpu/opengl] [326] color[1] += w * in1[idx]; [vo/gpu/opengl] [327] color[2] += w * in2[idx]; [vo/gpu/opengl] [328] idx = 40 * rel.y + rel.x + 203; [vo/gpu/opengl] [329] d = length(vec2(0.0, 2.0) - fcoord); [vo/gpu/opengl] [330] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [331] wsum += w; [vo/gpu/opengl] [332] color[0] += w * in0[idx]; [vo/gpu/opengl] [333] color[1] += w * in1[idx]; [vo/gpu/opengl] [334] color[2] += w * in2[idx]; [vo/gpu/opengl] [335] idx = 40 * rel.y + rel.x + 204; [vo/gpu/opengl] [336] d = length(vec2(1.0, 2.0) - fcoord); [vo/gpu/opengl] [337] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [338] wsum += w; [vo/gpu/opengl] [339] color[0] += w * in0[idx]; [vo/gpu/opengl] [340] color[1] += w * in1[idx]; [vo/gpu/opengl] [341] color[2] += w * in2[idx]; [vo/gpu/opengl] [342] idx = 40 * rel.y + rel.x + 205; [vo/gpu/opengl] [343] d = length(vec2(2.0, 2.0) - fcoord); [vo/gpu/opengl] [344] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [345] wsum += w; [vo/gpu/opengl] [346] color[0] += w * in0[idx]; [vo/gpu/opengl] [347] color[1] += w * in1[idx]; [vo/gpu/opengl] [348] color[2] += w * in2[idx]; [vo/gpu/opengl] [349] idx = 40 * rel.y + rel.x + 206; [vo/gpu/opengl] [350] d = length(vec2(3.0, 2.0) - fcoord); [vo/gpu/opengl] [351] if (d < 3.032708) { [vo/gpu/opengl] [352] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [353] wsum += w; [vo/gpu/opengl] [354] color[0] += w * in0[idx]; [vo/gpu/opengl] [355] color[1] += w * in1[idx]; [vo/gpu/opengl] [356] color[2] += w * in2[idx]; [vo/gpu/opengl] [357] } [vo/gpu/opengl] [358] idx = 40 * rel.y + rel.x + 207; [vo/gpu/opengl] [359] idx = 40 * rel.y + rel.x + 240; [vo/gpu/opengl] [360] idx = 40 * rel.y + rel.x + 241; [vo/gpu/opengl] [361] d = length(vec2(-2.0, 3.0) - fcoord); [vo/gpu/opengl] [362] if (d < 3.032708) { [vo/gpu/opengl] [363] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [364] wsum += w; [vo/gpu/opengl] [365] color[0] += w * in0[idx]; [vo/gpu/opengl] [366] color[1] += w * in1[idx]; [vo/gpu/opengl] [367] color[2] += w * in2[idx]; [vo/gpu/opengl] [368] } [vo/gpu/opengl] [369] idx = 40 * rel.y + rel.x + 242; [vo/gpu/opengl] [370] d = length(vec2(-1.0, 3.0) - fcoord); [vo/gpu/opengl] [371] if (d < 3.032708) { [vo/gpu/opengl] [372] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [373] wsum += w; [vo/gpu/opengl] [374] color[0] += w * in0[idx]; [vo/gpu/opengl] [375] color[1] += w * in1[idx]; [vo/gpu/opengl] [376] color[2] += w * in2[idx]; [vo/gpu/opengl] [377] } [vo/gpu/opengl] [378] idx = 40 * rel.y + rel.x + 243; [vo/gpu/opengl] [379] d = length(vec2(0.0, 3.0) - fcoord); [vo/gpu/opengl] [380] if (d < 3.032708) { [vo/gpu/opengl] [381] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [382] wsum += w; [vo/gpu/opengl] [383] color[0] += w * in0[idx]; [vo/gpu/opengl] [384] color[1] += w * in1[idx]; [vo/gpu/opengl] [385] color[2] += w * in2[idx]; [vo/gpu/opengl] [386] } [vo/gpu/opengl] [387] idx = 40 * rel.y + rel.x + 244; [vo/gpu/opengl] [388] d = length(vec2(1.0, 3.0) - fcoord); [vo/gpu/opengl] [389] if (d < 3.032708) { [vo/gpu/opengl] [390] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [391] wsum += w; [vo/gpu/opengl] [392] color[0] += w * in0[idx]; [vo/gpu/opengl] [393] color[1] += w * in1[idx]; [vo/gpu/opengl] [394] color[2] += w * in2[idx]; [vo/gpu/opengl] [395] } [vo/gpu/opengl] [396] idx = 40 * rel.y + rel.x + 245; [vo/gpu/opengl] [397] d = length(vec2(2.0, 3.0) - fcoord); [vo/gpu/opengl] [398] if (d < 3.032708) { [vo/gpu/opengl] [399] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [400] wsum += w; [vo/gpu/opengl] [401] color[0] += w * in0[idx]; [vo/gpu/opengl] [402] color[1] += w * in1[idx]; [vo/gpu/opengl] [403] color[2] += w * in2[idx]; [vo/gpu/opengl] [404] } [vo/gpu/opengl] [405] idx = 40 * rel.y + rel.x + 246; [vo/gpu/opengl] [406] d = length(vec2(3.0, 3.0) - fcoord); [vo/gpu/opengl] [407] if (d < 3.032708) { [vo/gpu/opengl] [408] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [409] wsum += w; [vo/gpu/opengl] [410] color[0] += w * in0[idx]; [vo/gpu/opengl] [411] color[1] += w * in1[idx]; [vo/gpu/opengl] [412] color[2] += w * in2[idx]; [vo/gpu/opengl] [413] } [vo/gpu/opengl] [414] idx = 40 * rel.y + rel.x + 247; [vo/gpu/opengl] [415] idx = 40 * rel.y + rel.x + 280; [vo/gpu/opengl] [416] idx = 40 * rel.y + rel.x + 281; [vo/gpu/opengl] [417] idx = 40 * rel.y + rel.x + 282; [vo/gpu/opengl] [418] idx = 40 * rel.y + rel.x + 283; [vo/gpu/opengl] [419] d = length(vec2(0.0, 4.0) - fcoord); [vo/gpu/opengl] [420] if (d < 3.032708) { [vo/gpu/opengl] [421] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [422] wsum += w; [vo/gpu/opengl] [423] color[0] += w * in0[idx]; [vo/gpu/opengl] [424] color[1] += w * in1[idx]; [vo/gpu/opengl] [425] color[2] += w * in2[idx]; [vo/gpu/opengl] [426] } [vo/gpu/opengl] [427] idx = 40 * rel.y + rel.x + 284; [vo/gpu/opengl] [428] d = length(vec2(1.0, 4.0) - fcoord); [vo/gpu/opengl] [429] if (d < 3.032708) { [vo/gpu/opengl] [430] w = tex1D(lut, LUT_POS(d * 1.0/3.238315, 64.0)).r; [vo/gpu/opengl] [431] wsum += w; [vo/gpu/opengl] [432] color[0] += w * in0[idx]; [vo/gpu/opengl] [433] color[1] += w * in1[idx]; [vo/gpu/opengl] [434] color[2] += w * in2[idx]; [vo/gpu/opengl] [435] } [vo/gpu/opengl] [436] idx = 40 * rel.y + rel.x + 285; [vo/gpu/opengl] [437] idx = 40 * rel.y + rel.x + 286; [vo/gpu/opengl] [438] idx = 40 * rel.y + rel.x + 287; [vo/gpu/opengl] [439] color = color / vec4(wsum); [vo/gpu/opengl] [440] } [vo/gpu/opengl] [441] color *= 1.000000; [vo/gpu/opengl] [442] color.a = 1.000000; [vo/gpu/opengl] [443] // scaler post-conversion [vo/gpu/opengl] [444] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/gpu/opengl] [445] color.rgb = (1.0/(1.0 + exp(6.500000 * (0.750000 - color.rgb))) - 0.007577) * 1.0/0.827906; [vo/gpu/opengl] [446] // color mapping [vo/gpu/opengl] [447] color.rgb *= vec3(1.000000); [vo/gpu/opengl] [448] color.rgb *= vec3(1.000000); [vo/gpu/opengl] [449] // delinearize [vo/gpu/opengl] [450] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/gpu/opengl] [451] color.rgb *= vec3(1.000000); [vo/gpu/opengl] [452] color.rgb = pow(color.rgb, vec3(1.0/2.4)); [vo/gpu/opengl] [453] imageStore(out_image, ivec2(gl_GlobalInvocationID), color); [vo/gpu/opengl] [454] } AV: 00:00:01 / 00:07:37 (0%) A-V: -0.001 DS: 1.559/0 Dropped: 30 [vo/gpu/opengl] shader link log (status=1): [vo/gpu] Dither to 8. [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] void main() { [vo/gpu/opengl] [ 10] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 11] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 12] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] uniform sampler2D dither; [vo/gpu/opengl] [ 9] uniform sampler2D texture0; [vo/gpu/opengl] [ 10] uniform vec2 texture_size0; [vo/gpu/opengl] [ 11] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 12] uniform vec2 texture_off0; [vo/gpu/opengl] [ 13] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 14] void main() { [vo/gpu/opengl] [ 15] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 16] color.rgb = 1.000000 * vec4(texture(texture0, texcoord0)).rgb; [vo/gpu/opengl] [ 17] // dithering [vo/gpu/opengl] [ 18] vec2 dither_pos = gl_FragCoord.xy * 1.0/64.0; [vo/gpu/opengl] [ 19] float dither_value = texture(dither, dither_pos).r; [vo/gpu/opengl] [ 20] color = floor(color * 255.0 + dither_value + 0.5 / 4096.0) * 1.0/255.0; [vo/gpu/opengl] [ 21] out_color = color; [vo/gpu/opengl] [ 22] } [vo/gpu/opengl] shader link log (status=1): [cplayer] Change display sync audio drift: 1 AV: 00:00:04 / 00:07:37 (0%) A-V: 0.000 DS: 0.990/0 Dropped: 41 [cplayer] Change display sync audio drift: 0 [cplayer] Compensation factor: 1.000117 AV: 00:00:04 / 00:07:37 (1%) A-V: -0.008 DS: 0.990/0 Dropped: 41 [cplayer] Change display sync audio drift: -1 AV: 00:00:05 / 00:07:37 (1%) A-V: -0.002 DS: 0.990/0 Dropped: 41 [vo/gpu] adjusting display FPS to a value closer to 60.008 Hz AV: 00:00:05 / 00:07:37 (1%) A-V: -0.001 DS: 0.990/0 Dropped: 41 [cplayer] Change display sync audio drift: 0 [cplayer] Compensation factor: 1.016707 AV: 00:00:06 / 00:07:37 (1%) A-V: -0.008 DS: 1.000/0 Dropped: 41 [cplayer] Change display sync audio drift: -1 AV: 00:00:09 / 00:07:37 (2%) A-V: -0.017 DS: 1.000/0 Dropped: 41 [vo/gpu] switching back to assuming display fps = 60.172 Hz AV: 00:00:13 / 00:07:37 (2%) A-V: -0.009 DS: 1.000/2 Dropped: 41 [vo/gpu] adjusting display FPS to a value closer to 60.008 Hz AV: 00:00:16 / 00:07:37 (3%) A-V: -0.000 DS: 1.000/2 Dropped: 41 [cplayer] Change display sync audio drift: 0 [cplayer] Compensation factor: 1.000030 AV: 00:00:19 / 00:07:37 (4%) A-V: 0.001 DS: 1.000/2 Dropped: 41 [vo/gpu] switching back to assuming display fps = 60.172 Hz AV: 00:00:19 / 00:07:37 (4%) A-V: 0.000 DS: 1.000/2 Dropped: 41 [cplayer] Change display sync audio drift: 1 AV: 00:00:20 / 00:07:37 (4%) A-V: 0.000 DS: 1.000/4 Dropped: 41 [cplayer] Change display sync audio drift: 0 [cplayer] Compensation factor: 0.998174 AV: 00:00:22 / 00:07:37 (5%) A-V: 0.001 DS: 1.000/4 Dropped: 41 [cplayer] Run command: script-binding, flags=73, args=[osc/__keybinding4] AV: 00:00:23 / 00:07:37 (5%) A-V: 0.001 DS: 1.000/4 Dropped: 41 [vo/gpu] adjusting display FPS to a value closer to 60.008 Hz AV: 00:00:25 / 00:07:37 (5%) A-V: 0.008 DS: 1.000/4 Dropped: 41 [cplayer] Change display sync audio drift: 1 AV: 00:00:32 / 00:07:37 (7%) A-V: 0.000 DS: 1.000/4 Dropped: 41 [cplayer] Change display sync audio drift: 0 [cplayer] Compensation factor: 1.000086 AV: 00:00:36 / 00:07:37 (7%) A-V: 0.000 DS: 1.000/4 Dropped: 41 [cplayer] Run command: vf, flags=64, args=[del, 0] Option vf-del: -del is deprecated! Use -remove (removes by content instead of by index). [vapoursynth] destroying VS filters [vapoursynth] all requests terminated [vapoursynth] uninitialized. [vf] User filter list: [vf] (empty) AV: 00:00:36 / 00:07:37 (7%) A-V: 0.000 DS: 1.000/4 Dropped: 41 [vf] [autorotate] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [convert] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [out] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 AV: 00:00:36 / 00:07:37 (7%) A-V: 0.000 DS: 1.120/4 Dropped: 41 [cplayer] Run command: vf, flags=64, args=[add, vapoursynth=/home/user/.local/share/SVP4/scripts/9a23a5ee.py:4:7] [user_filter_wrapper] Setting option 'file' = '/home/user/.local/share/SVP4/scripts/9a23a5ee.py' (flags = 0) [user_filter_wrapper] Setting option 'buffered-frames' = '4' (flags = 0) [user_filter_wrapper] Setting option 'concurrent-frames' = '7' (flags = 0) [global] user path: '/home/user/.local/share/SVP4/scripts/9a23a5ee.py' -> '/home/user/.local/share/SVP4/scripts/9a23a5ee.py' [vapoursynth] using 7 concurrent requests. [vf] User filter list: [vf] vapoursynth (vapoursynth.00) [vf] [vapoursynth] 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vapoursynth] initializing... [vo/gpu] Resizing texture: 688x534 [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] void main() { [vo/gpu/opengl] [ 10] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 11] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 12] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] uniform vec3 src_luma; [vo/gpu/opengl] [ 9] uniform vec3 dst_luma; [vo/gpu/opengl] [ 10] uniform sampler2D dither; [vo/gpu/opengl] [ 11] uniform sampler2D texture0; [vo/gpu/opengl] [ 12] uniform vec2 texture_size0; [vo/gpu/opengl] [ 13] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 14] uniform vec2 texture_off0; [vo/gpu/opengl] [ 15] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 16] void main() { [vo/gpu/opengl] [ 17] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 18] color.rgb = 1.000000 * vec4(texture(texture0, texcoord0)).rgb; [vo/gpu/opengl] [ 19] // color mapping [vo/gpu/opengl] [ 20] color.rgb *= vec3(1.000000); [vo/gpu/opengl] [ 21] color.rgb *= vec3(1.000000); [vo/gpu/opengl] [ 22] // delinearize [vo/gpu/opengl] [ 23] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/gpu/opengl] [ 24] color.rgb *= vec3(1.000000); [vo/gpu/opengl] [ 25] color.rgb = pow(color.rgb, vec3(1.0/2.4)); [vo/gpu/opengl] [ 26] // dithering [vo/gpu/opengl] [ 27] vec2 dither_pos = gl_FragCoord.xy * 1.0/64.0; [vo/gpu/opengl] [ 28] float dither_value = texture(dither, dither_pos).r; [vo/gpu/opengl] [ 29] color = floor(color * 255.0 + dither_value + 0.5 / 4096.0) * 1.0/255.0; [vo/gpu/opengl] [ 30] out_color = color; [vo/gpu/opengl] [ 31] } [vo/gpu/opengl] shader link log (status=1): [vapoursynth] initialized. [vf] [autorotate] 688x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [convert] 688x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vf] [out] 688x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 VO: [gpu] 690x480 => 690x534 yuv420p [cplayer] VO: Description: Shader-based GPU Renderer [vo/gpu] reconfig to 690x480 [256:285] yuv420p bt.601/bt.601-625/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264 [vo/gpu] screen size: 1366x768 [vo/gpu] Resize: 688x534 [vo/gpu] Window size: 688x534 (Borders: l=0 t=0 r=0 b=0) [vo/gpu] Video source: 690x480 (256:285) [vo/gpu] Video display: (0, 0) 690x480 -> (0, 1) 688x532 [vo/gpu] Video scale: 0.997101/1.108333 [vo/gpu] OSD borders: l=0 t=1 r=0 b=1 [vo/gpu] Video borders: l=0 t=1 r=0 b=1 [vo/gpu] Reported display depth: 8 [vo/gpu] Texture for plane 0: 690x480 [vo/gpu] Texture for plane 1: 345x240 [vo/gpu] Texture for plane 2: 345x240 [vo/gpu] Testing FBO format rgba16f [vo/gpu] Resizing texture: 16x16 [vo/gpu] Using FBO format rgba16f. [cplayer] Change display sync audio drift: -1 AV: 00:00:36 / 00:07:37 (7%) A-V: -0.076 DS: 1.140/0 [vo/gpu] Resizing texture: 345x240 [cplayer] Run command: quit, flags=73, args=[4] [cplayer] EOF code: 5 [vo/gpu] Resizing texture: 690x480 [vo/gpu] Resizing texture: 345x240 [vo/gpu] Resizing texture: 690x480 [vo/gpu] Resizing texture: 690x480 [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] in vec2 vertex_texcoord1; [vo/gpu/opengl] [ 10] out vec2 texcoord1; [vo/gpu/opengl] [ 11] void main() { [vo/gpu/opengl] [ 12] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 13] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 14] texcoord1 = vertex_texcoord1; [vo/gpu/opengl] [ 15] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] in vec2 texcoord1; [vo/gpu/opengl] [ 9] uniform mat3 colormatrix; [vo/gpu/opengl] [ 10] uniform vec3 colormatrix_c; [vo/gpu/opengl] [ 11] uniform sampler2D texture0; [vo/gpu/opengl] [ 12] uniform vec2 texture_size0; [vo/gpu/opengl] [ 13] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 14] uniform vec2 texture_off0; [vo/gpu/opengl] [ 15] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 16] uniform sampler2D texture1; [vo/gpu/opengl] [ 17] uniform vec2 texture_size1; [vo/gpu/opengl] [ 18] uniform mat2 texture_rot1; [vo/gpu/opengl] [ 19] uniform vec2 texture_off1; [vo/gpu/opengl] [ 20] uniform vec2 pixel_size1; [vo/gpu/opengl] [ 21] void main() { [vo/gpu/opengl] [ 22] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 23] color.r = 1.000000 * vec4(texture(texture0, texcoord0)).r; [vo/gpu/opengl] [ 24] color.gb = 1.000000 * vec4(texture(texture1, texcoord1)).rg; [vo/gpu/opengl] [ 25] color = color.rgbr; [vo/gpu/opengl] [ 26] color.rgb = mat3(colormatrix) * color.rgb + colormatrix_c; [vo/gpu/opengl] [ 27] color.a = 1.0; [vo/gpu/opengl] [ 28] // scaler pre-conversion [vo/gpu/opengl] [ 29] // linearize [vo/gpu/opengl] [ 30] color.rgb = clamp(color.rgb, 0.0, 1.0); [vo/gpu/opengl] [ 31] color.rgb = pow(color.rgb, vec3(2.4)); [vo/gpu/opengl] [ 32] color.rgb *= vec3(1.0/1.000000); [vo/gpu/opengl] [ 33] // main scaling [vo/gpu/opengl] [ 34] out_color = color; [vo/gpu/opengl] [ 35] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu] Resizing texture: 690x532 [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] void main() { [vo/gpu/opengl] [ 10] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 11] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 12] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] uniform sampler2D lut; [vo/gpu/opengl] [ 9] uniform sampler2D texture0; [vo/gpu/opengl] [ 10] uniform vec2 texture_size0; [vo/gpu/opengl] [ 11] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 12] uniform vec2 texture_off0; [vo/gpu/opengl] [ 13] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 14] void main() { [vo/gpu/opengl] [ 15] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 16] #undef tex [vo/gpu/opengl] [ 17] #undef texmap [vo/gpu/opengl] [ 18] #define tex texture0 [vo/gpu/opengl] [ 19] #define texmap texmap0 [vo/gpu/opengl] [ 20] vec2 pos = texcoord0; [vo/gpu/opengl] [ 21] vec2 size = texture_size0; [vo/gpu/opengl] [ 22] vec2 pt = pixel_size0; [vo/gpu/opengl] [ 23] // first pass [vo/gpu/opengl] [ 24] color = vec4(0.0); [vo/gpu/opengl] [ 25] { [vo/gpu/opengl] [ 26] vec2 dir = vec2(0.0, 1.0); [vo/gpu/opengl] [ 27] pt *= dir; [vo/gpu/opengl] [ 28] float fcoord = dot(fract(pos * size - vec2(0.5)), dir); [vo/gpu/opengl] [ 29] vec2 base = pos - fcoord * pt - pt * vec2(1.0); [vo/gpu/opengl] [ 30] vec4 c; [vo/gpu/opengl] [ 31] float ypos = LUT_POS(fcoord, 64.0); [vo/gpu/opengl] [ 32] float weights[4]; [vo/gpu/opengl] [ 33] c = texture(lut, vec2(0.500000, ypos)); [vo/gpu/opengl] [ 34] weights[0] = c[0]; [vo/gpu/opengl] [ 35] weights[1] = c[1]; [vo/gpu/opengl] [ 36] weights[2] = c[2]; [vo/gpu/opengl] [ 37] weights[3] = c[3]; [vo/gpu/opengl] [ 38] // scaler samples [vo/gpu/opengl] [ 39] c = texture(tex, base + pt * vec2(0.0)); [vo/gpu/opengl] [ 40] color += vec4(weights[0]) * c; [vo/gpu/opengl] [ 41] c = texture(tex, base + pt * vec2(1.0)); [vo/gpu/opengl] [ 42] color += vec4(weights[1]) * c; [vo/gpu/opengl] [ 43] c = texture(tex, base + pt * vec2(2.0)); [vo/gpu/opengl] [ 44] color += vec4(weights[2]) * c; [vo/gpu/opengl] [ 45] c = texture(tex, base + pt * vec2(3.0)); [vo/gpu/opengl] [ 46] color += vec4(weights[3]) * c; [vo/gpu/opengl] [ 47] } [vo/gpu/opengl] [ 48] color *= 1.000000; [vo/gpu/opengl] [ 49] out_color = color; [vo/gpu/opengl] [ 50] } [vo/gpu/opengl] shader link log (status=1): [vo/gpu] Resizing texture: 688x532 [vo/gpu/opengl] vertex shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] in vec2 vertex_position; [vo/gpu/opengl] [ 7] in vec2 vertex_texcoord0; [vo/gpu/opengl] [ 8] out vec2 texcoord0; [vo/gpu/opengl] [ 9] void main() { [vo/gpu/opengl] [ 10] gl_Position = vec4(vertex_position, 1.0, 1.0); [vo/gpu/opengl] [ 11] texcoord0 = vertex_texcoord0; [vo/gpu/opengl] [ 12] } [vo/gpu/opengl] fragment shader source: [vo/gpu/opengl] [ 1] #version 420 [vo/gpu/opengl] [ 2] #extension GL_ARB_shader_image_load_store : enable [vo/gpu/opengl] [ 3] #define tex1D texture [vo/gpu/opengl] [ 4] #define tex3D texture [vo/gpu/opengl] [ 5] #define LUT_POS(x, lut_size) mix(0.5 / (lut_size), 1.0 - 0.5 / (lut_size), (x)) [vo/gpu/opengl] [ 6] out vec4 out_color; [vo/gpu/opengl] [ 7] in vec2 texcoord0; [vo/gpu/opengl] [ 8] uniform sampler2D lut; [vo/gpu/opengl] [ 9] uniform sampler2D texture0; [vo/gpu/opengl] [ 10] uniform vec2 texture_size0; [vo/gpu/opengl] [ 11] uniform mat2 texture_rot0; [vo/gpu/opengl] [ 12] uniform vec2 texture_off0; [vo/gpu/opengl] [ 13] uniform vec2 pixel_size0; [vo/gpu/opengl] [ 14] void main() { [vo/gpu/opengl] [ 15] vec4 color = vec4(0.0, 0.0, 0.0, 1.0); [vo/gpu/opengl] [ 16] #undef tex [vo/gpu/opengl] [ 17] #undef texmap [vo/gpu/opengl] [ 18] #define tex texture0 [vo/gpu/opengl] [ 19] #define texmap texmap0 [vo/gpu/opengl] [ 20] vec2 pos = texcoord0; [vo/gpu/opengl] [ 21] vec2 size = texture_size0; [vo/gpu/opengl] [ 22] vec2 pt = pixel_size0; [vo/gpu/opengl] [ 23] color = vec4(0.0); [vo/gpu/opengl] [ 24] { [vo/gpu/opengl] [ 25] vec2 dir = vec2(1.0, 0.0); [vo/gpu/opengl] [ 26] pt *= dir; [vo/gpu/opengl] [ 27] float fcoord = dot(fract(pos * size - vec2(0.5)), dir); [vo/gpu/opengl] [ 28] vec2 base = pos - fcoord * pt - pt * vec2(1.0); [vo/gpu/opengl] [ 29] vec4 c; [vo/gpu/opengl] [ 30] float ypos = LUT_POS(fcoord, 64.0); [vo/gpu/opengl] [ 31] float weights[4]; [vo/gpu/opengl] [ 32] c = texture(lut, vec2(0.500000, ypos)); [vo/gpu/opengl] [ 33] weights[0] = c[0]; [vo/gpu/opengl] [ 34] weights[1] = c[1]; [vo/gpu/opengl] [ 35] weights[2] = c[2]; [vo/gpu/opengl] [ 36] weights[3] = c[3]; [vo/gpu/opengl] [ 37] // scaler samples [vo/gpu/opengl] [ 38] c = texture(tex, base + pt * vec2(0.0)); [vo/gpu/opengl] [ 39] color += vec4(weights[0]) * c; [vo/gpu/opengl] [ 40] c = texture(tex, base + pt * vec2(1.0)); [vo/gpu/opengl] [ 41] color += vec4(weights[1]) * c; [vo/gpu/opengl] [ 42] c = texture(tex, base + pt * vec2(2.0)); [vo/gpu/opengl] [ 43] color += vec4(weights[2]) * c; [vo/gpu/opengl] [ 44] c = texture(tex, base + pt * vec2(3.0)); [vo/gpu/opengl] [ 45] color += vec4(weights[3]) * c; [vo/gpu/opengl] [ 46] } [vo/gpu/opengl] [ 47] color.a = 1.000000; [vo/gpu/opengl] [ 48] // scaler post-conversion [vo/gpu/opengl] [ 49] out_color = color; [vo/gpu/opengl] [ 50] } [ad] Uninit decoder. [vd] Uninit decoder. [vo/gpu/opengl] shader link log (status=1): [vapoursynth] destroying VS filters [vapoursynth] all requests terminated [vo/gpu] Resizing texture: 688x532 [vo/gpu] Dither to 8. [vo/gpu/x11] Enabling screensaver. [vo/gpu] Resize: 690x534 [vo/gpu] Window size: 690x534 (Borders: l=0 t=0 r=0 b=0) [vo/gpu] Video source: 690x480 (256:285) [vo/gpu] Video display: (0, 0) 690x480 -> (0, 0) 690x534 [vo/gpu] Video scale: 1.000000/1.112500 [vo/gpu] OSD borders: l=0 t=0 r=0 b=0 [vo/gpu] Video borders: l=0 t=0 r=0 b=0 [vo/gpu] Reported display depth: 8 [vapoursynth] uninitialized. [cplayer] Terminating demuxers... [osc] osc_init [cplayer] Done terminating demuxers. [cplayer] finished playback, success (reason 3) Exiting... (Quit) [ytdl_hook] Exiting... [stats] Exiting... [ipc_0] Exiting... [vo/gpu] Resizing texture: 690x534 [cplayer] Run command: change-list, flags=64, args=[shared-script-properties, append, osc-margins=0.000000,0.000000,0.000000,0.000000] [cplayer] Set property: shared-script-properties -> 1 [cplayer] Run command: change-list, flags=64, args=[shared-script-properties, remove, osc-margins] [cplayer] Set property: shared-script-properties -> 1 [console] Exiting... [osc] Exiting... [ao/pulse] draining... [vo/gpu] flushing shader cache [vo/gpu/x11] uninit ...