Sony TV Trinitron KV-M1420B


Wow, that’s a very cool process you used, actually starting with a high quality photo and extracting data from it like that. I don’t fully understand it, mind you, but I appreciate the scientific approach nonetheless!

Does this require high resolutions in order to look good? Guess I’ll find out soon enough :smiley:

1 Like

I don’t understand the reason for this; is this to reduce moire?

Scanlines which become “vertical” is not my fact :slight_smile: It is just my screen observation of this true TV. I try to reproduce it with my shader.

My description “vertical” is poor (sorry), because scanlines are basically horizontal. But if you try to follow them on previous photo, you will see that they tends to change orientation (vertical).

Does this require high resolutions in order to look good?

I submitted 2 shader presets:

  1. The standard one
  2. The “sharp” one

If you plan to use shader with a low resolution screen, I advice to use standard preset. The quality will be good. Otherwise, if you plan to use it with Full HD (except cores with vertical orientation), QHD, 4K screens you may use the “sharp” one. The quality will be maximal.

He did the ‘normals displacement’ and ‘blend overlay’ shaders, which control curvature and mask effects, respectively:

In playing around with your shader, the unique thing it does that I find really impressive is the varying phosphor width as you move from the center to the edges of the screen, which is something you see/experience when looking at an actual curved surface, due to perspective and foreshortening. It really ramps up the verisimilitude of the curvature effect.


Thanks for the link!

You’re right. I wrote a math model which helps me to place columns and scanlines. Below a screenshot of my app :

My GUI helps me to find in a visual way constants of my formula that is:

  • a parabola of equation: ax^2 + (1-a)x where “a” is a constant to be find (Parabola straightness parameter on control panel)
  • projection of parabola with Z parameter associated to its extremities (interpolated in 1/Z manner) where “Z” is an another contant to be find (Perspective correction parameter on control panel)

Below a piece of code of my app which implements that:


In order to see more about parametrization of my CRT meshes:

I create meshes at maximal resolution 12MP: 4032x3024 in order to maximize accuracy.


So the application makes the mesh with your help?

Yep, I wrote it in this way.

When I began this project, I realize that I have to map 102287 pixels! I prefer to let my computer do this kind of job :slight_smile: In order to achieve that, I wrote this App. My job remains to find good math formulas.

1 Like

This is greatest. Do you plan to release this shader in glsl-shaders?


Yep :slight_smile: I plan to code it in legacy GLSL with OpenGL ES compatibility.


Thank you too. We look forward to the day it is released.

I’ll try to submit it next week…


Great job, man. Looking forward to it!

Thanks a lot! I like to share my developments …

1 Like

Done! :slightly_smiling_face: legacy GLSL code is available for desktops and embedded devices. I created a pull request Here


I downloaded it right away. Thank you for porting a great shaders to GLSL!

You’re welcome :slightly_smiling_face:

Your feedbacks are welcomed. It may help me to improve my work.

As you can see, I added one preset for slow GPU in CRT GLSL shader directory. (It is not present in SLANG repository because modern hardware supports easily my shader computations) If you experienced poor performances, it can help as it use hardware bilinear interpolation instead of Jinc2 custom program. Jinc2 is high quality scaling/sampling algorithm which minimizes moire effect with this kind of images. So by using “-fast” variant of shader, you may obtains moire. If moire occurs, you can fight it by changing final output resolution (in “video” section of RetroArch menu)


1 Like

Nice shader. Is it possible to add a parameter option to turn the curvature feature off?

Yes it is possible to turn off this feature, but it is not the goal of this kind of filter. I want to mimic real known TV models. For now, I try to fit the KV-M1420B rendering. The KV-M1420B looks like this:

If people wants, I can create a new filter which mimic the Sony Trinitron KV-21CL10B. This CRT TV is flat, and so, do not present curvature. The KV-21CL10B TV looks like that:

If people adds “like” :hearts: to this message, It will encourage me to implements the “crt-yo6-KV-21CL10B.slangp” and “crt-yo6-KV-21CL10B.glslp”. It is a long process …