Reusable library for GPU-accelerated image/video processing primitives and shaders, as well a batteries-included, extensible, high-quality rendering pipeline (similar to mpv's vo_gpu). Supports Vulkan, OpenGL, Metal (via MoltenVK) and Direct3D 11.
Become a financial contributor.
Top financial contributors
$55 USD since Jan 2021
$10 USD since Oct 2022
libplacebo is all of us
Our contributors 3
Thank you for supporting libplacebo.
Transparent and open finances.
Credit from Guest to libplacebo •
Let’s get the ball rolling!
News from libplacebo
Updates on our activities and progress.
- High-quality, optimized upscaling and downscaling including support for polar filters ("Jinc"), anti-aliasing, anti-ringing and gamma correct scaling.
- Color management and format conversions for a wide variety of HDR or wide gamut color spaces. This includes support for ICC profiles, ITU-R BT.1886 emulation, colorimetrically accurate clipping, custom 1D/3D LUTs, scene-referred OOTFs (such as HLG), constant luminance formats including ICtCp and a variety of film industry formats ranging from XYZ to Sony's S-Log or Panasonic's V-Gamut.
- Tunable debanding shader. This is based on flash3kyuu, expanded to provide high quality by combining multiple debanding passes.
- Dynamic HDR tone mapping, including shaders for real-time peak and scene-change detection, chroma-preserving (luma-only) tone mapping, highlight desaturation, dynamic exposure control and a variety of industry-standard EETFs including BT.2390.
- High performance film grain synthesis for AV1 and H.274, allowing media players to offload this part of decoding from the CPU to the GPU.
- A pluggable, extensible custom shader syntax, equivalent to an improved version of mpv's .hook syntax. This can be used to arbitrarily extend the range of custom shaders to include popular user shaders like RAVU, FSRCNNX, or Anime4K. See the mpv wiki on user scripts for more information.
Every attempt was made to provide these features at a high level of abstraction, taking away all the messy details of GPU programming, color spaces, obscure subsampling modes, image metadata manipulation, and so on. Expert-level functionality is packed into easy-to-use functions like pl_frame_from_avframe and pl_render_image.
libplacebo currently supports Vulkan (including MoltenVK), OpenGL, and Direct3D 11. It contains backwards compatibility code for very old versions of GLSL down to GLES 2.0 and OpenGL 1.3 and very old Direct3D feature levels down to 9_1.