A downloadable CRT emulation process
It works in Eevee and Cycles render engines, and accepts image/video, as well as procedural texture input.
The shader is contained within a single node group with exposed property sliders, and can easily be further reconfigured and customized.
By default, the shader is set to emit light, which makes it a "real" light emitter when used in Cycles.
Various properties are exposed in the main shader node, allowing for easy configuration of the basic parameters, such as scale, aspect ratio, distortion, hue, saturation and other image and CRT parameters.
The MRMO-CRT "Basic" pack includes the CRT shader in a basic .blend scene, with customizable screen barrel distortion via modifiers.
The MRMO-CRT "Lite" pack includes the CRT shader in a basic .blend scene, with customizable screen barrel distortion via modifiers. This version of the shader includes only basic image processing, but should run significantly faster and should be much less taxing on the hardware.
The MRMO-CRT "Deluxe" pack includes everything from the Basic pack, plus a render-ready .blend scene with a CRT monitor model, customizable HDRI lighting and the CRT shader integrated in the monitor's screen, complete with reflections, customizable dust and fingerprint smudges. It includes three "preset" cameras- "full scene", "screen" and "detail". The text on the monitor model labels is editable.
MRMO-CRT was tested on Blender versions up to 3.0.
*Update V1.01:
-Added "Lite" version which includes only basic postprocessing that should run much faster;
-Updated the default rendering parameters to be less taxing on hardware (lower default resolution and sample rate)
-Updated the noise to conform to the shadowmask, now uses White Noise.
*Update: TriCRTops, a professional-grade CRT progressive scan emulation process added (at "Deluxe" version tier).
This is a new implementation of the CRT emulation process that aims to accurately reproduce the "look" of professional-grade CRT monitors using "every-other-line" progressive scan. It comes with its own set of customizations and an exclusive red-trimmed CRT monitor model.
It is currently working in Eevee only.
Image made usingFROGBLOCK font by @Polyducks
*Update: MRMO-CRT-GEO (and "Lite" version), an experimental Geometry nodes-based CRT progressive scan emulation process added.
This is a new CRT emulation setup, built from scratch and utilising Blender's geometry nodes for storing and manipulation of the input image/video. It is an experimental setup that might yield very interesting and "authentic" results.
The "Lite" version lacks several effects (like scanline-brightness distortion, "shift-ghosting" and "physical" shading, reflection, dust and smudges), but is otherwise fully functional (and free!).
*Update* MRMO-CRT-GEO has been updated with an experimental new version that supports motion blur (with looping) and stretching the input animation frames to the specified output frame number (allowing rendering several "actual" frames per input animation frame).
Licensing:
"Basic" (and "Lite") version and MRMO-CRT-GEO Lite license: MRMO-CRT "Basic" (and "Lite") version as well as MRMO-CRT-GEO Lite can be used in non-commercial projects. You can modify them to suit your needs. You may not redistribute, or resell them, even if modified. Credit is not necessary, but very much appreciated.
"Deluxe"/TriCRTops/MRMO-CRT-GEO version license: MRMO-CRT "Deluxe" version and TriCRTops can be used in both non-commercial and commercial projects. You can modify them to suit your needs. You may not redistribute, or resell them, even if modified. Credit is not necessary, but very much appreciated.
Status | Released |
Category | Other |
Rating | Rated 4.8 out of 5 stars (19 total ratings) |
Author | Mrmo Tarius |
Made with | Blender |
Tags | Blender,cathode-ray-tube,crt,monitor,mrmo,mrmocrt,mrmotarius,Retro,Shaders |
Click download now to get access to the following files:
Log in with itch.io to leave a comment.
I'm not very proficient at Blender, so there is this slight issue trying to use the experimental GEO build when inputting a picture or video where its giving me the error "Unknown socket value. Either the socket was not used or its value was not logged during the last evaluation". It doesn't happen with the other GEO builds. Is there a way to resolve that on my end?
What version of Blender are you using? That's the first thing to come to mind since there have been some compatibility "misalignments" between newer Blender versions as there have been many new things added, especially with geometry nodes :/
The experimental GEO version was made with 4.11 and it might be what breaks compatibility with earlier versions.
Yes! Your method results in a duplicate material that still uses the original node sub-groups. You could go through every group and make them unique, but it's not really feasible, so:
The quickest way I can think of is just appending the display and material from the MRMO-CRT .blend project into a new project, as many times as you need; this would create "proper" copies of the material (with its name ending in .001, .002 etc) with the subgroups properly copied.
Hey! I think that with some modification it would be possible to either render black as transparent or use the input image alpha, but due to the way the entire process is set up (including the use of camera lens blur) I guess the results wouldn't exactly be clean, and would require lots of internal rewiring to get it running properly. Maybe just mixing the shader result with a transparent shader using the input image alpha would be enough? I just never thought about including transparency into my CRT emulation processes since it usually involves rendering an entire display at once :D
I FOUND THE SOLUTION! Went back to the material today to mess around and see what the issue was. I noticed a bunch of random regular nodes like noise wouldn't even show up properly in Cycles, and I eventually traced it back to the first UV Map node. All you need to do is uncheck the "from instancer" option in the UV map node at the very beginning and the material will work fine. For anyone else who came here looking for the issue that's the solution if it hasn't been fixed by the time you see this.
Hi! I'm completely new on using Blender.
For the 'Basic' version, instead of pixelart image, does it support an animated pixelart?
As far as I'm using Blender (although I'm completely new), Blender doesn't support .gif formats (CMIIW). Because of that I had to convert the animated pixelart form .gif into .mp4/.avi format. I replaced the template input file into the video format I just converted. I tried changing the file format on the render output into video file. I also tried messing around with the frame number. Then I render it as an animation. However, only the first frame that was rendered.
Is there anything that I missed in the settings/rendering process?? Or is there a special case for animated gif/video files?
Thank you.
Hey! Yeah, Blender refuses to acknowledge gif format exists :D
Here's the steps for rendering an animation:
-Provide either frame-based or video input;
-Check the "cyclic" and "auto refresh" options;
-Edit the "end time" value in the timeline to match the number of frames of your input;
-Modify the render output settings as needed (set output path, format, resolution etc)
-Render -> Render animation (default shortcut Ctrl + F12)
Hope this helps!
this is pretty fun, I made this with it:
https://www.instagram.com/p/CXgGgmOqljW/
and probably use it more later, thank you :)
Hey! MRMO-CRT is Blender-based, and is as such best suited for rendering various showcases or adding CRT "flair" to existing assets/images, as well as being used in Blender 3d scenes as a material shader.
Also, feel free to pick the shader apart and reconstruct it in Unity or other developer platforms/engines if you want!
Hey thanks! I got introduced to node graphs withTilemancer, where I learned the basics of how a node graph works- from there, it was relatively easy to move on to Blender's node-based shader and compositor editors :)