"clean edges and preserving important details" das meinte ich mit eine Art AntiAliasing (das eigentliche KI an der ganze Sache).
Die Methode AntiAliasing auf Pixelbasis (benachbarte Pixel an den Rändern werden quasi dupliziert, verschoben, ausgeglichen...) begann mit OpenCL.
Verbesserte Variante davon ist in Cuda implementiert.
Auch in OpenGL gibt es das schon länger, jedoch nicht so hochwertig wie z.B. das von Cuda. Eyeon bzw. BMD nutzt die OpenGL Variante (mit allen Parameter) auch in Fusion (OpenGL Renderer)... Wirkt sich auch auf Images, z.B. wenn man ImagePlane hinzufügt und Video oder Bild drauf zieht.
Bildschirmfoto 2022-04-19 um 13.46.14.png
Man muss aber vorher auch sharping Node zwischen ImagePlane und Bild oder Video anhängen und auch da ein wenig justieren...
Ein Beispiel:
ohne
Bildschirmfoto 2022-04-19 um 14.09.39.png
mit
Bildschirmfoto 2022-04-19 um 14.10.42.png
Die Kanten von weiße Schrift auf dem orangen Pullover, sind danach besser/glatter, danach kann man es logischerweise auch hochskalieren.
Code: Alles auswählen
{
Tools = ordered() {
Renderer3D1 = Renderer3D {
CustomData = {
ToolVersion = 2,
},
Inputs = {
GlobalOut = Input { Value = 119, },
Width = Input { Value = 1920, },
Height = Input { Value = 1080, },
UseFrameFormatSettings = Input { Value = 1, },
["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
SceneInput = Input {
SourceOp = "Merge3D1",
Source = "Output",
},
RendererType = Input { Value = FuID { "RendererOpenGL" }, },
["RendererOpenGL.AntiAliasing.Nest"] = Input { Value = 1, },
["RendererOpenGL.AntiAliasing.Channels.RGBA.HighQuality.Enable"] = Input { Value = 1, },
["RendererOpenGL.AntiAliasing.Presets.Nest"] = Input { Value = 1, },
["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.LowQuality.RateX"] = Input { Value = 16, },
["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.LowQuality.RateY"] = Input { Value = 16, },
["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateX"] = Input { Value = 16, },
["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.HighQuality.RateY"] = Input { Value = 16, },
["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.Filter.Type"] = Input { Value = FuID { "BesselSSFilter3D" }, },
["RendererOpenGL.AntiAliasing.Presets.Color.Supersampling.Filter.WindowMethod"] = Input { Value = 3, },
["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.LowQuality.SampleCount"] = Input { Value = 3, },
["RendererOpenGL.AntiAliasing.Presets.Color.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateX"] = Input { Value = 3, },
["RendererOpenGL.AntiAliasing.Presets.Aux.Supersampling.HighQuality.RateY"] = Input { Value = 3, },
["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.LowQuality.SampleCount"] = Input { Value = 2, },
["RendererOpenGL.AntiAliasing.Presets.Aux.Multisampling.HighQuality.SampleCount"] = Input { Value = 3, },
["RendererOpenGL.AccumQuality"] = Input { Value = 32, },
},
ViewInfo = OperatorInfo { Pos = { 668.667, 75.2424 } },
SubInputsData = {
RendererOpenGL = {
Version = 1
}
}
},
Merge3D1 = Merge3D {
Inputs = {
["Transform3DOp.Translate.Z"] = Input { Value = -0.402326379103733, },
SceneInput1 = Input {
SourceOp = "ImagePlane3D1",
Source = "Output",
},
SceneInput2 = Input {
SourceOp = "Camera3D1",
Source = "Output",
},
},
ViewInfo = OperatorInfo { Pos = { 533.333, 75.2424 } },
},
ImagePlane3D1 = ImagePlane3D {
Inputs = {
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 1, },
MaterialInput = Input {
SourceOp = "Sharpen2",
Source = "Output",
},
["MtlStdInputs.MaterialID"] = Input { Value = 1, },
},
ViewInfo = OperatorInfo { Pos = { 415.333, 74.6364 } },
},
Camera3D1 = Camera3D {
Inputs = {
["Transform3DOp.Translate.Z"] = Input { Value = 1.66038543949097, },
AoV = Input { Value = 19.2642683071402, },
["Stereo.Mode"] = Input { Value = FuID { "OffAxis" }, },
FilmGate = Input { Value = FuID { "BMD_URSA_4K_16x9" }, },
ApertureW = Input { Value = 0.831496062992126, },
ApertureH = Input { Value = 0.467716535433071, },
["SurfacePlaneInputs.ObjectID.ObjectID"] = Input { Value = 2, },
["MtlStdInputs.MaterialID"] = Input { Value = 2, },
},
ViewInfo = OperatorInfo { Pos = { 532, 39.4848 } },
},
Sharpen2 = ofx.com.blackmagicdesign.resolvefx.sharpen {
Inputs = {
sharpen = Input { Value = 1.79999995231628, },
detailGroup = Input { Value = 1, },
finest = Input { Value = 0.02, },
fine = Input { Value = 5, },
medium = Input { Value = 1, },
large = Input { Value = 1, },
lcGroup = Input { Value = 1, },
chroma = Input { Value = 1, },
blendGroup = Input { Value = 1, },
blend = Input { Value = 0, },
ignoreContentShape = Input { Value = 0, },
legacyIsProcessRGBOnly = Input { Value = 0, },
resolvefxVersion = Input { Value = "1.0", },
},
ViewInfo = OperatorInfo { Pos = { 405.333, 30.3939 } },
}
}
}
Einfach im Fusion Node Bereich hinzufügen und Bild oder Video mit Sharpen2 Node verbinden.
Nur wie bereits erwähnt, ist natürlich nicht so toll wie Cuda Upscale...