Skip to content

Version 2.0.0

Compare
Choose a tag to compare
@akgunter akgunter released this 26 Dec 09:09

Description

v2 release

The primary goal of this release was to refactor as much of the codebase as possible to make it more efficient, more intuitive for other shader devs, and more user friendly. I also fixed a number of bugs along the way.

Be aware that v2 is not backwards compatible with v1 configs, but it should be possible to translate them to v2.

Features

  • Performance improvements throughout the codebase
    • Accomplished by a combination of consolidating shader passes and rewriting a few of them
    • Improvement of 25% to 50% depending on configuration (probably closer to 25% in most cases)
  • Completely rewritten phosphor mask logic
    • Uses pulse waves to generate a fullscreen texture on the fly rather than tiling a small texture loaded from disk
    • Only recomputes the phosphor mask every 60 frames, making the trig nearly zero-cost
    • Can alter the aspect ratio of the phosphors on the fly, either to achieve a specific aesthetic or to compensate for moire patterns
  • Completely rewritten scanline logic
    • Generates the scanline shape on the fly and outputs it to a texture every 60 frames
    • Uses triangle waves to calculate intensities rather than modular arithmetic
  • Ability to rotate the simulated CRT
    • Can flip the CRT on either side or upside down
    • Results in horizontal or vertical scanlines
    • Also rotates the phosphors correctly (e.g. BGR phosphors if rotated 180 degrees)
    • Useful for emulating certain retro arcade platforms
  • Optional Input Blurring
    • Can apply a simple blur to the input video, which softens the image and can mitigate some artifacting
    • The effect is optimized to minimize compute time if the user has disabled it
  • Restructured Configs and UI
    • Minimized the config sections by default
    • Added Help sections with instructions on how to configure some things
    • Added version numbering to the UI and the preset file to assist debugging
    • Hid many settings behind an ADVANCED_SETTINGS option
  • Code restructuring
    • Fewer files, simpler naming, and hopefully more intuitive logic.

Hidden/Advanced Configs

  • Phosphor Mask
    • Phosphor thickness and sharpness
    • Mask Num Triads Across
  • Scanlines
    • Scanline Offset
    • Gaussian Beam Min Shape, Max Shape, and Shape Power
    • Convergence Offsets
  • Colors and Effects
    • Blur Radius
  • Screen Geometry
    • View Distance
    • Screen Tilt Angles
    • Screen Aspect Ratios
    • Geom Overscan

Removed Features

  • Horizontal Beam Blurring
    • Previously the scanlines had math that applied a narrow horizontal blur. This was an expensive operation that didn't meaningfully change the final appearance of the shader, so I removed it.
    • This might have been a consequence of my port to ReShade. Eventually I'll double-check the behavior of the RetroArch version and see if I need to re-add it with rewritten logic.

Bug Fixes

  • Gaussian beams are more flexible now because of the Linear Beam Thickness setting. This should make it easier to make very thin scanlines behave, although they might look too similar to linear beams to be worth the performance hit.
  • Rounding errors in the phosphor mask are far less likely due to the rewrite. 4k screens won't have tiling artifacts anymore.
  • Halation and Diffusion interact more realistically.