AVSCube

From Avisynth wiki
Revision as of 19:09, 11 July 2023 by FranceBB (Talk | contribs)

Jump to: navigation, search
Abstract
Author Donald Graft
Version v1.3
Download avscube_1.3.zip
Category Adjustment Filters
License Open source
Discussion Doom9 Thread

Contents

Description

AviSynth+ plugin to load and apply Adobe 3D LUTs to a clip. Ported from VapourSynth timecube plugin.

Requirements


Syntax and Parameters

Cube (clip, string "cube", int "cpu", int "interp", int "fullrange")


clip   =
Input clip; the filter receives and delivers the RGBP16 color space.


string  cube = ""
Full path of the 3D LUT file. This must be an Adobe *.cube file.


int  cpu = INT_MAX
cpu: default INT_MAX, which selects best SIMD.
  • 0 : SIMD_NONE
  • 1 : SIMD_SSE41
  • 2 : SIMD_AVX2
  • 3 : SIMD_AVX512


int  interp = 0
interp: default 0 selects the worse interpolation method for backwards compatibility reasons.
  • 0 : trilinear interpolation
  • 1 : tetrahedral interpolation



int  fullrange = 1
  • 0 : limited range
  • 1 : full range


Trilinear vs Tetrahedral

Trilinear interpolation is used by default only for historical reasons.
When Cube() was first developed it only had one interpolation method, namely trilinear.
Although this was far from ideal as it can produce ripples, plenty of people used this function, therefore when tetrahedral was introduced it was agreed to leave trilinear as default to allow people to still obtain the same results when upgrading the version.
However, in practice, tetrahedral should always be used and it's the suggested method.

Source - Trilinear - Tetrahedral:
Trilinear vs Tetrahedral Interpolation.png

As you can see, in the right hand side waveform (tetrahedral) there are no ripples.

Examples

Apply 3D LUT to clip obtained from BlankClip:

BlankClip(pixel_type="RGBP16", color=$ff0000)
Cube("...\test.cube")
ConvertToYUV420()

Apply 3D LUT to HDR10 PQ clip obtained from DGSource() to go to HLG:

# Source
DGSource("THE GREAT WALL.dgi")
# From Limited Range 10bit YUV420 to 16bit Full Range Planar RGB z_ConvertFormat(pixel_type="RGBP16", colorspace_op="2020:st2084:2020:limited=>rgb:st2084:2020:full", dither_type="error_diffusion")
# Load and apply "PQ_to_HLG.cube" to go from PQ to HLG Cube("PQ_to_HLG.cube", fullrange=1, interp=1)
# From 16bit Full Range Planar RGB to Limited Range 10bit YUV420 with dithering z_ConvertFormat(pixel_type="YUV420P10", colorspace_op="rgb:std-b67:2020:full=>2020:std-b67:2020:limited", dither_type="error_diffusion")


Changelog

Version         Date            Changes
v1.3            2022/01/21      - Updated to timecube version 1.3 base code.
                                - Added frame properties passthrough.
                                - Updated the help document.
v1.1            2019/01/25      - Rather than upgrade to r2a I ported the fullrange fix only.
v1.0            2018/08/16      - Initial release


Archived Downloads

Version Download Mirror
v1.3 avscube_1.3.zip avscube_1.3.zip
v1.1 avscube_1.1.rar avscube_1.1.rar
v1.0 avscube_1.0.rar avscube_1.0.rar


External Links

  • Doom9 Forum - FranceBB LUT Collection
  • GitHub - ColorMatch3D - tool that creates a .cube 3D LUT that matches colors of a reference image with a different grading. Discussion thread
  • GitHub - hlg-tools - this tool suite consists of the basics needed to generate 3D LUTs that will convert video streams from Perceptual Quantizer (PQ) HDR into Hybrid-Log Gamma (HLG) HDR. Discussion thread, original discussion thread
  • AMPAS CLF LUT PseudoCode - Walkthrough on different interpolation methods




Back to External Filters

Personal tools