View Full Version : Fixing and adding things onto a new DotCrawlPlus version
RGMOfficial
29th May 2022, 00:01
Hi, guys.
So, since the original DotCrawlPlus is a little less than 10 years old, it's expected to become somewhat obsolete.
I'm thinking of forking this filter, after all, this filter has last updated in 2014, and many things changed, specially on my perception of analog video artifacts in general.
So, yeah, i'm starting making an unofficial version 3.
After all, some parts of the filter are not as realistic as actual analog video footage (like this comment (https://forum.doom9.org/showthread.php?p=1877980#post1877980)).
On the moment, my missions on this project are:
- Improvements in performance
- Moving rainbows
- Better rainbowing
and some missions i'm starting to think otherwise...
I'm still new to some stuff, so any help are appreciated.
I'm starting with the moving rainbows thing.
Just need to know if i can animate mt_lutspa or something like that?
Also, credits to @raffriff42, the nice guy who created the original filter.
https://files.catbox.moe/r1bt1n.png
SaurusX
31st May 2022, 15:44
I fully endorse your plan. Degradation filters for AVISynth are in short supply and they would definitely be of use on occasion. Training neural networks for instance.
When it comes to fake composite rainbows, there's been some discussion on one of the Discord channels I'm on by using the following:
AddGrain(0,0.6,0.4,50000,seed=1) #credit to @Zarxrax
Overlaying it with a diagonal edge mask gives a decent approximation.
real.finder
31st May 2022, 19:54
maybe someone can use https://forum.doom9.org/showpost.php?p=1924679&postcount=19 to make a plugin for avs
RGMOfficial
1st June 2022, 17:29
I fully endorse your plan. Degradation filters for AVISynth are in short supply and they would definitely be of use on occasion. Training neural networks for instance.
When it comes to fake composite rainbows, there's been some discussion on one of the Discord channels I'm on by using the following:
AddGrain(0,0.6,0.4,50000,seed=1) #credit to @Zarxrax
Overlaying it with a diagonal edge mask gives a decent approximation.
So, i tried.
Changed the makedotcrawl function, but maintained the mask.
##################################
### generate a rainbow pattern
##
## @ sat - chroma intensity (default 1.0)
## @ xluma - ratio of clip cross-luma to fixed pattern (0..1; default 0.75)
##
function dpc_makerainbow(clip C, float "sat", float "xluma")
{
sat = Float(Default(sat, 1))
xluma = Float(Min(Max(0, Default(xluma, 0.75)), 1))
C
AddGrain(0,0.6,0.4,50000,seed=1)
}
Test images on attachments (using rainbow=1.0)
RGMOfficial
1st June 2022, 23:09
Did some changes on the code, and actually...
the rainbowing looks great and realistic.
function dpc_makerainbow(clip C, float "sat")
{
sat = Float(Default(sat, 1))
color_sat = int(50000*sat)
C
AddGrainC(var=0,uvar=color_sat,hcorr=.9,vcorr=.4,seed=1)
}
Also, i added a new preset, that i've been using with the original plugin. It's the preset used on the screenshot below.
## @ preset - choices:
## "mild" - minimal effect
## "medium" - softer chroma; a little added noise
## "heavy" - very soft & noisy
## "strong" - like medium but more so
## "bigdot1" - larger dots #1
## "bigdot2" - larger dots #2
## "bigdot3" - larger dots #3
## "betacam" - Analog formats - Betacam
## empty string ("") defaults to "medium";
## unrecognized values raise an error.
https://files.catbox.moe/x0t6od.png
SaurusX
3rd June 2022, 15:27
Another thing to consider regarding rainbows is that they generally live only on DIAGONAL edges. Would it be preferable to alter the mask to only affect diagonal edges? It would add another layer of realism to the effect.
RGMOfficial
7th June 2022, 00:00
Another thing to consider regarding rainbows is that they generally live only on DIAGONAL edges. Would it be preferable to alter the mask to only affect diagonal edges? It would add another layer of realism to the effect.
Can you provide an example script?
Here's the mask script:
function dpc_uumidpass(
\ clip C, int "tlo", int "thi", bool "setupmode")
{
tlo = Default(tlo, 128)
thi = Default(thi, 148)
setupmode = Default(setupmode, false)
CG = C.Grayscale()
Last = CG
Blur(1, 1)
FFT3DFilter(bt=1, bw=64, bh=64, ow=32, oh=32,
\ sigma=0, sigma2=0, sigma3=500, sigma4=100000)
Subtract(UUGaussianBlurY(rad=1))
mt_expand()
Grayscale()
return (setupmode)
\ ? dpc_histostretch(50.0, 0.01, 1.8, true)
\ : Levels(tlo, 1.8, thi, 0, 255, coring=false)
}
function UUGaussianBlurY(clip C, float "var", float "rad")
{
var = Max(0.0, Float(Default(var, 1.0)))
rad = Max(1.0, Float(Default(rad, Pow(var, 0.5))))
var = Pow(Min(Max(0.0, rad), 60.0), 2.0)
w0 = C.Width
h0 = C.Height
w1 = Round(w0/rad)
h1 = Round(h0/rad) /* formerly "w0/rad" ?? */
B = C.BilinearResize(
\ Min(Max(12, w1 + (w1 % 2)), w0),
\ Min(Max(12, h1 + (h1 % 2)), h0))
B = B.Blur(1.0).Blur(1.0)
return (var<0.01) ? C
\ : (var<1.5) ? C.Blur(0.85 * var)
\ : (B.Width>8 && B.Height>8) ? B.GaussResize(w0, h0)
\ : B.BilinearResize(w0, h0)
}
Also, sorry for the late reply.
ognirats
11th June 2022, 11:56
Holy hell that looks nice
ognirats
11th June 2022, 11:57
Now how do I implement it
ognirats
11th June 2022, 12:41
Nvm, found this thread https://forum.doom9.org/showthread.php?t=184188
it works wonderfully
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.