XaiJu
ompuco
ompuco

patreon


OBS NTSCFX [analog video] Filter (WIP)

This is an early version of my NTSC modulation/demodulation filter script for easy analog-video-esque visuals in OBS.


SETUP:

1) Download the attached LUA script on this post, NTSCFX.lua

2) In OBS, open Tools > Scripts to open the Scripts window

3) Under the box listing loaded scripts, click the + button ('Add Scripts') & choose the downloaded script

4) Back in the main OBS window, right click your scene (or source) & choose Filters

5a) [optional but recommended] Click the + button in the lower left of the filters window & add 'Scaling/Aspect Ratio', name it "Downscale" for reference, & in the options for this filter, choose a lower resolution like 640x360. This will scale down the scene or source to the chosen resolution before running NTSCFX

5) Click the + button in the lower left of the filters window & add 'NTSCFX by ompuco'

5b) [optional but recommended] Click the + button in the lower left of the filters window & add 'Scaling/Aspect Ratio', name it "Upscale" for reference, & in the options for this filter, choose 'Base (Canvas) Resolution. This will bring the scene or source back to full resolution & should be after both Downscale & NTSCFX

NOTE:

For the best results, add a noise/grain filter pass before the NTSCFX filter (this is not built into OBS but can be found easily online), & make sure to utilize 'Scaling/Aspect Ratio' filters before & after NTSCFX to modulate/demodulate the image at a lower resolution, improving performance & making the effects much more perceivable.

Tap count has been lowered from my personal setting of 179 down to 49, as it can be quite expensive, but this can be changed with the define on line 281 (FIR_SIZE). Higher values will require many more texture reads per pixel, but can yield much more dramatic results & awesome color bleeds, though it also currently has an impact on color saturation that I haven't been able to balance yet. Change this with caution, & do not raise it too high.

Message from Sam:


Hey y'all! Thank you so much for the support on here, it means so much to me & seriously helps me afford the time to work on the sorts of stuff I'm most interested in.

I figured it might be cool to start sharing some of the things I made for myself on here that aren't quite ready for a public release, so I'm excited to share with y'all my fun little NTSC filter for those cool analog vibes on OBS streams!

I recently started learning how to write custom scripts (and soon perhaps plugins) for OBS, the streaming software I use for my silly little VTuber-heavy streams where I just chat & play games & make things occasionally. I'd grown a bit weary of some of the plugins I would use for things like shaders that provided some very tight limits on what I was able to do (no HDR buffers, no feedback/backbuffers, no choice in alpha blending modes, etc), so I thought I'd start writing my own. I tried at first to do things in C++, but I'm still way too much of a beginner in that area to get much done, so I ultimately decided to move towards LUA scripts, which are great thanks to how portable they are & how easy it is to set them up in a fresh copy of OBS without any fancy installation needed.

This NTSC filter is something I wrote for OBS as the first attempt at a complex custom filter setup, since it seemed like a good starting point for the other kinds of effects I'd like to create. I've been using it on a number of streams to great reception! It's still heavily a work in progress I'd like to get back to (pretty soon, in fact) & isn't exactly user-friendly, but it does perform all the modulation & demodulation steps in one filter entry!

Currently, there are no controllable parameters at all, and it's highly recommended to use this with OBS's "Scaling/Aspect Ratio" filters both before & after, lowering the resolution to run the emulation on & then scaling back up to full resolution. This is intended to be used on top of full scenes, but can be used on objects as well.

Anyways, I'd love to know what y'all think! It's not exactly ideal for analyzing the code inside & is still a mess, but I'm sure some of y'all might have much more fun actually trying it out with things for streams & whatnot. I look forward to seeing what y'all might make with this!

OBS NTSCFX [analog video] Filter (WIP)

Comments

I finally finally got around to setting this up, I love it a lot! The only thing that doesn't work for me is that it doesn't seem to preserve the alpha from my chroma/luma key filters - if I try to add them *after* the NTSC filter, then chroma starts getting applied to any green artifacts in the source. Otherwise this really rules and I hope it gets more updates in the future :D

Zoë F Wolfe

This is so cool! Thank you so much for sharing this! If I ever get to streaming sometime, I'm gonna have to use this somewhere, this effect's just too neat!

Holly Tenna Lotor


More Creators