With the default CRT black level of 0.1 you get a gamma of 2.4, which is the standard for Rec709/Rec2020 and the 1886 transfer function for dim surrounds, except if you enable the dim to dark option which takes it to 2.45 gamma for the mentioned spaces.
So now you control the system emulated gamma with the CRT black level option. 0.1 being 2.4, 0.0 being 2.6 and varying in between. I can make a function fit to remap the values so the effective gamma can be shown in the OSD for adjustment purposes (check at the bottom).
One thing I didn’t mention is that phosphor dynamics apply their own gamma if they are non-linear. Here is a summary.
So for example 2.4 converts to 2.75 with a phosphor gamma of 1/0.88.
To get an effective gamma of 2.4 you would need to set the CRT gamma to 2.1 but you can’t reach that with CRT black level limit of 0.35. Only when phosphor dynamics are 1/0.9 you can set CRT black level to 0.35 and match the gamma of 2.55=2.3^(1/0.9)
(EDIT: or leave black level at 0.1 and raise brightness to 30 as per the below expression)
Scanline shaders should notify the gamma change when phosphor dynamics are applied, so you can make more sense of the whole system gamma.
To note “CRT black level” won’t make a big change on the black lift/pedestal, it’s mainly for calculating gamma, to actually raise the pedestal you use CRT brightness, but obviously any change in range will modify the gamma which is assumed.
Here is the expression for the effective gamma:
bl=0.1 # Black Level
br=0 # CRT Brightness
bl_gamma = 1.0/(-0.054348*pow(exp(bl) ,-9.45461)+0.437886)
br_gamma = 1.0/( 2.057430*pow(exp(br/10.),0.028201)-1.060440)
gamma = pow(bl_gamma,br_gamma)
Then you have to account for the phosphor dynamics gamma on top.
sys_gamma = pow(gamma,ph_gamma)