RGB-Display Shader

I was wondering how they made displays looking so real in these typical motion-graphic reels.
You know?
Like smooth bokeh and moire patterns. But I figured out, that most of them are actually just filming real displays with their DSLR.
But this can’t be very hard in Blender right?
It actually isn’t and it’s quite fast to render. So why not going photoreal with displays too?

This is how it looks:

And this is how it’s done:

Tell me what you think!

(more pictures are on my Blog http://www.f-x-g.de/design/blender/rgb-display-shader/)

Thank you,


Wow great! Could you, please, to share the RGB dots texture? Thanks!!

Sure, but I have to dissapoint you… it’s just simple “pixel art” :wink:

If you do it yourself, keep sure that you use max red, green and blue values.
Like in this example for red.

If you don’t, you get different shades of the original picture / movie.


1 Like

I love how simple the solution is, but I would never have cracked it myself. Well done.

This is probably one of those things that people will dismiss as something they’ll ‘never need’ and then regret those words in a year when a client asks for something that requires this.

So on behalf of those people, let me say thanks in advance. :eyebrowlift:

Really cool idea ! Thanks for the tip !

I saw this on reddit, so I had to take a crack at it!

But, basically, I made an absolute mess of nodes that allows me to set the resolution of the screen to whatever I want with only two numbers, then insert any sized image file onto the screen and have it be converted to the resolution I made up for of my screen by averaging the colors beneath every pixel, so I can “fire and forget” textures onto the virtual computer screen with ease.

Really cool, and so simple. Thanks for sharing.

@Siah Sargus: in what theme on Reddit, please? I don’t know there are Blender questions on Reddit!

Thank’s for your kind words!
Basically that’s why I shared it. There was a time I really need something like this, but found nothing to it on the web.
Even though there is a small chance, but maybe one day I’ll need some sort of display-shader again and then a search will lead me back here :eyebrowlift2:

It’s one step further in the automation process right?
You scale one RGB pixel into one image pixel right?
But what’s the second seperate XYZ node doing? :wink:

It’s mostly at reddit.com/r/blender

The particular thread I saw was here:

Nothing here. It wound up being deleted. I was experimenting with a different horizontal scaling of pixels so that subpixels could have different intensities individually, and get a smidge more resolution out of the shader without looking unrealistic. I wound up just using another multiply node.

this is my procedural aproach, i’ve done some time ago, only bitmap texture is for screen image itself.:eyebrowlift:

Example render:

very nice!!

I made a shader like this a while ago that was completely procedural

here is the node setup:

This is the output:

And this is a close-up:

I’d love to see the node setup, but your first two image attachments seem to be broken?

should be fixed!

There we go, thank you very much!

In your node setup, I see that you specify a Gradient Texture multiplied by 1920, representing the desired screen width. Then you run that through a Modulo, which in turn connects to a color ramp with 3 hand made R-G-B stops.

My question about how this works: Blender will repeat the Gradient Texture 1920 times, in other words it will draw 1920 gradient columns across the screen? And each within each column instance it will display the full spectrum of the Color Ramp, which is cut up by the sawtooth shape of the Modulo node? So the final result will be that each column will be subdivided into strips of Red-Black-Green-Black-Blue-Black?

Have I got that right? Modulo confuses me to no end.

You’ve got that spot on! The black is just to break up the RGB for realism, and I multiply by 3 to compensate for the darkening.

I rebuilt your node setup and messed around a bit, and I learned a lot!! Thank you!!