crt_display is a function that emulates a CRT display using aperture grille (Trinitron) or Cromaclear technologies. It is slow but gives interesting results. It implements various features like:
- Works at any (non-integer) upscaling factor
- Various ways of adjusting the scanline thickness and beam shape
- Low-pass filtering of the input signal
- Specific gamma target
- Beam glow
- Optional colored phosphor effect and shadow mask
- Colors shift caused by beam misalignment
- Automatic contrast adjustment
- Very large upscale is possible, showing the grid of phosphors.
- [x86] AviSynth+ or AviSynth 2.6.0 or greater
- [x64] AviSynth+
- Supported color formats: RGB24, RGB32
- Progressive input only
Latest version of the following plugins are recommended unless stated otherwise.
crt_display (clip src, float sw, float sh, float "voff", float "ppp", \ float "cutoff", float "scandist", float "sharpv", float "sharph", \ float "blurh", float "glowgain", float "glowh", float "glowv", \ float "glowsens", float "contrast", float "gamma", float "softclip", \ float "mix", float "beamshape", bool "phosphor", bool "pgrid", \ float "vcs", float "cromaclear", float "maskpp", float "gainb", \ float "halgain", float "halrange", string "pixel_type")
sw Horizontal scale factor. sh Vertical scale factor. voff Vertical centering of the scanlines. Set to 0, the scanlines are centered between two pixels. When set to 0.5, the scanline are centered exactly on a pixel. Default is pixel- centered. This is a sensitive setting when the scale factor is a small integer. When sh = 3, it's recommended to set the value closer to 0 to make centered the dark gap between the scanlines. ppp Number of phosphor triads per source pixel. It is recommended to select a value that makes the phosphors aligned with destination pixels (for example 1 phosphor triad = 2 dest pix), in order to avoid moire patterns and beating. cutoff Cutoff frequency of the low-pass filter at the electronic level. Lowering it thinners 1-pixel wide details. Good values are between 0.8 and 1. Effect is disabled at 1.0. scandist Relative distance between two scanlines. sharpv Vertical sharpness of the scanlines. High sharpness makes the lines look thinner especially at low luminance and may reduce the overall contrast. Low sharpness thickens the lines and make them slightly blend. Use values between 0.5 and 2.0. sharph Horizontal beam focus. Use values between 0.5 and 2.0. blurh Amount of horizontal bluring to apply after the final resizing. Requires phosphor to be set. Set it to 0 to disable bluring. Sometimes with medium scale factors, when the individual phosphors have a size close to a single destination pixel, the display becomes incredibly messy. Blurring in the horizontal direction make the neighbour phophors slightly merge and reduce the gird artefacts. Moreover, it alows to amplify more the contrast with reduced color artefacts. Usually, values in range 1.0-2.0 give good results. The sweet spot can be very narrow, don't hesitate to try steps as small as 0.1. It's also very dependent from other settings, adjust it after other parameters have changed. glowgain Amount of glow left by the beam. Disabled when set to 0. glowh Width of the beam glow, in phosphor triads. glowv Height in scanlines of the beam glow. glowsens Glow sensitivity to light. With 1 the glow is uniform. Greater values will leave the dark spots intact and only make the bright spots glow. contrast Manual contrast amplification. The neutral value is 1. The value of 3 is generally good when the scaling factor is not high and the individual phosphors overlap. Use a slightly greater value when cromaclear is enable (should be 4). Contrast loss caused by thin scanlines or large phosphors is hard to recover. When unspecified, the contrast is set as high as possible depending on the other parameters. gamma Gamma of the emulated monitor. Typically 2.4 to 2.8 for CRT monitors. Default is the sRGB gamma (2.2). softclip Gently saturates the pixel values. Generally in range 0-1. Slightly reduces the overall contrast when pixel values are not clipping. Set to 0 for hard-clipping. mix Amount of CRT-emulated picture in the result. Does not bypass the gamma processing. beamshape Another way to sharpen the scanlines. The higher the value, the thinner the beam. Use values between 1 and 3. This gives control on the thickness of the beam at high luminance. phosphor Enable phosphor processing. pgrid Enables the black grid enclosing each phosphor, at the price of a higher calculation cost. Useful only for large scale factors, when individual phosphors are clearly visible. Requires phosphor processing. vcs Vertical color shift in scanline units, misaligning the red and blue beams. Realistic values are between -0.25 and +0.25. When set to 0, the beams are correctly aligned. cromaclear Implements the NEC's cromaclear variant of the aperture grille, combining it with a shadow mask. The value gives the amount of horizontal black grid to be mixed. May reduce the contrast. maskpp Number of cromaclear units per scanline. Same as ppp but vertically. gainb Manual contrast gain for the blue. For some reasons, the phosphor mix may generate a yellow tint in the high luminance ranges, depending on various parameters. Values ranging from 1.05 to 1.2 are generally enough to fix it without creating excessive blue tint in the darker colors. Use a test pattern to adjust the value. halgain Amount of halation. Keep it to a low value, typically in range 0.01-0.05. Disable it with 0. halrange Halation radius, in phosphor triad units. pixel_type Final RGB format. "RGB24" or "RGB32".
See examples in the Doom9 discussion thread.
Version Date Changes
v1.0 2014/06/05 - Initial release
- Doom9 Forum - crt_display discussion.
Back to External Filters ←