CathodeRetro::ScreenSettings

Settings describing the screen properties of the virtual CRT TV that is displaying the image: things like "how curved is the screen" and the appearance of the mask and scanlines.

Index

Members

distortion
                Vec2 distortion = { 0.0f, 0.0f }
              
Type
Vec2
Description

A pair of [0..1] values describing how much to distort the virtual screen.

The x value controls the horizontal distortion, and the y value controls the vertical distortion. A value of 0 means "no distortion along that axis."

  • These values are scaled to really max out at 1.0 - above 1.0 things get ... weird.
  • It is recommended that these values never get too far from each other - too much distortion on one axis vs. the other doesn't look right.
screenEdgeRounding
                Vec2 screenEdgeRounding = { 0.0f, 0.0f }
              
Type
Vec2
Description
How much additional rounding of the edges we want to emulate a screen that didn't have a rectangular bezel shape.
cornerRounding
                float cornerRounding = 0.0f
              
Type
float
Description
How much to round the corners (to emulate an old TV with rounded corners).
maskType
                MaskType maskType = MaskType::SlotMask
              
Type
MaskType
Description
The variety of mask to use.
maskScale
                float maskScale = 1.0f
              
Type
float
Description
The scale of the mask on the screen. At 1.0 there is one "tile" of the mask per input scanline. At 2.0 it is visually twice as large, making one tile per every two input scanlines.
maskStrength
                float maskStrength = 0.0f
              
Type
float
Description

How much the mask is multiplied with the on-screen image to produce the final output. A value of 0.0 means the mask is invisible, where a value of 1.0 means that the mask is fully multiplied with the on-screen image.

The math for this is:

                    maskedRGB = onscreenColor 
                      * lerp({white, maskRGB}, maskStrength)
                  

maskDepth
                float maskDepth = 0.5f
              
Type
float
Description

The darkness of the spaces between the phosphors in the mask. Adjusting this will adjust both the brightness of the resulting image as well as the amount of visibility of the mask.

A value of 0 means that the spaces between the phosphors are pure black.

phosphorPersistence
                float phosphorPersistence = 0.0f
              
Type
float
Description
How much of the previous frame to blend into the next frame: 0 for "none" and 1 for "the previous frame is just as bright as the current frame.
scanlineStrength
                float scanlineStrength = 0.0f
              
Type
float
Description
A [0..1] value describing how strong the scanline effect is.
diffusionStrength
                float diffusionStrength = 0.0f
              
Type
float
Description
A [0..1] value describing how much the "glass" in front of the "phosphors" diffuses the light passing through it.
borderColor
                Color borderColor 
                  = { 0.05f, 0.05f, 0.05f, 1.0f }
              
Type
Color
Description
The color around the edges of the screen, where there's no visible picture.