Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Usage

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
Old 18th April 2018, 11:50   #10  |  Link
SuperLumberjack
French Registered User
 
SuperLumberjack's Avatar
 
Join Date: Aug 2016
Location: France
Posts: 333
Quote:
Originally Posted by lansing View Post
Oh gosh, please just simply number your test scripts, no one cares about what they call.

For the ringing problem, you'll need to go with some higher end resizer like nnedi3.

And it's pretty clear now that adding a shader on top gives the best visual effect for these retro games. As the main problems with these low resolution images are the pixelated diagonal lines and the lack of texture when upscaled, so you can't blur them because that will turn them into ugly color blocks. The vertical and gird shader looks like the answer here, as they both added fake details to "smooth" out the diagonal lines and added fake "textures" into the color blocks.
Oh gosh, please be nice and maybe a little more fun ! It's not more complicated with names than with numbers, because it follows a logic order. Besides, I think it's easier to recognize a script with a name

But thanks for the advice of the nnedi3 !

But I already used it, and it's not really an anti-ringing filter like MadVR uses The other problem is to begin a script with nnedi3. I never begin a script with this filter because the straight lines become distored. But it's true that it's good to clean the image

Otherwise, I just want to remind that I don't want scanlines or grids. Il will tell you why. It's because in the old times, even if we have these kinds of picture with the CRT display, it was always when we were close to the screen, but never at a certain distance. And personnally, I never glued my nose to the screen

So I think, this passion for the scanlines and grids are a bit too exagerated. To a certain distance, the old CRT displays delivered a normal and clean picture I think. I never had the souvenirs of having seen scanlines at this time.

But you can post your experimentations here. It's always interesting and I think it's the good subject for this Long live diversity !


Quote:
Originally Posted by raffriff42 View Post
Very clear description of why the shader effect looks good!

Which gives me an idea! Suppose we emulate the shader by
  1. smoothly sizing to 1/4 or 1/2 of the final size, then pixel sizing the rest of the way (to retain some jagginess);
  2. de-registering the RGB colors slightly (to imitate the phosphor arrangement); and
  3. superimposing a black grid pattern?
I already have a grid pattern generator function, made years ago (part of an attempt to recreate NTSC dot crawl artifacts). The grids are not exactly like the shader grids, but they might be close "enough."





Code:
LoadPlugin("<path>\PointSize_x64.dll")

## (source RGB32)

xBRZ(2) 
Org = Last

Org
GaussResize(1408, 1080, p=70)
ConvertToYV24
gridmask_square(2)
ConvertToRGB32
Trim(0, length=1)
Loop(Org.FrameCount)
Dots = Last

Org
GaussResize(1408/4, 1080/4, p=70)
PointResize(1408, 1080)
ShiftRedBlue(rx = -2, bx = +2)
Overlay(Dots, mode="darken", opacity=0.25)
Levels(0, 1.0, 255-64, 0, 255, coring=false)

ConvertToYV12(matrix="Rec709")
return Last

# https://forum.doom9.org/showthread.php?p=1803247#post1803247
##################################
### shift and/or resize Red and Blue relative to Green
##
## @ rx, ry, bx, by     - "shift" red & blue position
## @ rxd, ryd, bxd, byd - "delta" width & height
##
function ShiftRedBlue(clip C, 
\           float "rx", float "ry", 
\           float "bx", float "by",
\           float "rxd", float "ryd", 
\           float "bxd", float "byd")
{
    Assert(C.IsRGB, 
    \   "ShiftRedBlue: source must be RGB")
    rx  = Float(Default(rx,  0))
    ry  = Float(Default(ry,  0))
    bx  = Float(Default(bx,  0))
    by  = Float(Default(by,  0))
    rxd = Float(Default(rxd, 0))
    ryd = Float(Default(ryd, 0))
    bxd = Float(Default(bxd, 0))
    byd = Float(Default(byd, 0))
    C
    return (C.IsRGB24)
    \ ? MergeRGB(
    \     ShowRed.Spline64Resize(Width, Height, -rx, -ry, Width-rxd, Height-ryd)
    \   , ShowGreen
    \   , ShowBlue.Spline64Resize(Width, Height, -bx, -by, Width-bxd, Height-byd)
    \   )
    \ : MergeARGB(
    \     ShowAlpha
    \   , ShowRed.Spline64Resize(Width, Height, -rx, -ry, Width-rxd, Height-ryd)
    \   , ShowGreen
    \   , ShowBlue.Spline64Resize(Width, Height, -bx, -by, Width-bxd, Height-byd)
    \   )
}

## http://forum.doom9.org/showthread.php?t=170433
#######################################
### create a fixed pattern of dots.
function gridmask_square(clip C, int size)
{
    C
    return mt_logic(
    \   mt_lutspa(mode="absolute", chroma="-128",
    \             expr="x "+String(size)+" / pi * cos 108 * 126 + "),
    \   mt_lutspa(mode="absolute", chroma="-128",
    \             expr="y "+String(size)+" / pi * cos 108 * 126 + "),
    \  "andn")
}

Thanks to share your ideas and your experimentations ! It's always very (very very) interesting and enriching !

But as I said to lansing, I don't want scanlines or grids, but I love to see the knowledge you share

Let's say that my idea is rather to rethink the original picture, imitate a kind of old feeling, but keep a maximum quality.

It's like a remastering the idea !

Last edited by SuperLumberjack; 18th April 2018 at 12:03.
SuperLumberjack is offline   Reply With Quote
 

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 11:03.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.