TFT display material

And another blender test for TFT display material.

While faking CRT screens seems to be quite common thing to do I haven’t seen that many attempts at emulating TFT displays and their characteristic defects like limited viewing angles, poor contrast, ghosting / smearing issues and backlight bleed.


4:3 320x240 TFT display with some backlight bleeding, click larger to see the screen at full size


Closeup of the led structure

My material setup includes screen resolution setup, glossy display coating, adjustable procedural rgb mask / diode gaps, backlight bleed mask with tint control and black level adjust.

The X and Y resolutions define how input image is pixelized and the aspect ratio can differ from the resolution and non-square pixels are also supported. The UV map of screen area should cover the whole image size so every pixel will be drawn.

Blendfile: http://xard.mbnet.fi/blenderartists/tft_display_material.blend

TODO: TN panel like viewing angles, custom bitmap rgb masks, motion blur / ghosting

PS. used older blender work of mine for the display image

1 Like

Here is video of a resolution test I did myself. In the video I’m turning on a separate glass layer (optional from the manufacturer, for a price off course :)) after a few frames. Given the outside nature (not real), the blue coating doesn’t show up as well as it does real life. The setup is about the same for a LED displaywall, without “color” mask off course (shape instead). Viewing angles are superb for the stuff I’m working with, so I don’t need to simulate any degrading. In fact, a lot of times where I have reflections in the display glass, I’m told to turn it off - and I hate not being able to be honest.

The “general idea” of the setup is this:


One warning though; even though I have a “pixel size fill”, I always use 1 because of moire hell otherwise. Another typical addition is to compensate for EV on the display brightness, so that display looks consistent no matter what exposure I’m using.

CarlG thanks for posting your node setup for comparison.

Yeah, the reflections dissappear in your video example quite quickly but they are slightly visible in higher densities as well. Also it seems that you have a nice imperfection mapping setup for the glass as where as my glass is completely perfect at the moment.

I can guess that the clients might not want any realistic imperfections or reflections to show, which is understandable but shame. Though if the if the manufacturers were totally honest with us the device promotion shots would probably look a bit different :wink:

I ended up making the pixel mask slightly blurry with color ramp as well as the rgb diodes as it makes the moire pattern / screendoor effect much less visible from distance and doesn’t look that bad from the up close either. Maybe a system which would fade away the mask with distance would make things better?

One thing i’m not quite happy with is how in my example the pixelization works with the original source image.

It would be preferable to have two UV map setup where other UV map (in case of spherical displays for example) defines the pixel mapping and the other defines how the texture image is projected to the screen. That kind of setup would give most freedom how to setup the pixels and the image on screen making UV texture translate, scaling and rotation very easy for the artist.

I don’t bother with imperfections on regular screens. They’re typically so minute you’d only notice them in animations (which I don’t do). The setup above is an optional special protective glass for certain situations (i.e. touch interface, people nearby etc). The main glass underneath is coated (rough, probably anti reflectant), which gives it a blue tint at facing angles. Although, I haven’t observed the version without the protective glass so I’m merely guessing how it behaves. However, the protective glass has imperfections from assembly I believe, and shifting double reflections are clearly visible in closeup even without animating. If perfect, it would just look like two different roughnesses stacked, and I wasn’t happy with that.

If I was to try blurry via color ramp, I would swap it out with a stepfunction that can be controlled externally. But I never need to, as I’m never close enough in my shots, and fill it completely instead, so moire isn’t that much of an issue. Also, there is no need to compensate much for brightness loss when pixels are reduced in size.

I never deal with client, I deal with sales, and sales lie for a living I guess :smiley: Although I prefer realism (within reason), it is actually not often required. Sometimes even screenshots will do, and I guess Eevee will help greatly on combining that, even if I will have to reduce the shading complexity.

Fading the mask with distance? Would cause change in brightness, not sure how I’d cope with that other than animating the brightness value. But I don’t need to since I don’t animate.

I do video walls, so I have array of units when I append them. Adjust the array, apply, then UV material bounding from view and adjust the material rows and columns. If I need a separate image on one of them (i.e. video conference), then I dupe the material, set it to 1x1 and re-UV the face. Also do blended projected screens (no blend zones though), but I limit the “simulation” to adding an emission shader to a diffuse (complex, gain, microroughness etc) shader. I haven’t done any domes yet.