GLSL filtering in Vapoursynth, suche Empfehlungen?

  • //!COMPUTE 32 24 256 1

    Äh .... überlege gerade was du meinst.


    Der Metadata !//COMPUTE in Zeile 2 bei NVShader legt fest, dass es ein compute Shader ist und wie dessen Parameter sind.

    Wird dann von libplacebo umgesetzt.


    Du musst halt für Nvidia GPU Zeile 2 und 10 ändern. Für optimale Performance.


    //!COMPUTE 32 24 128 1

    //!WHEN OUTPUT.w OUTPUT.h * LUMA.w LUMA.h * / 1.0 >

    //!WIDTH OUTPUT.w

    //!HEIGHT OUTPUT.h

    // User variables

    #define SHARPNESS 0.25 // Amount of sharpening. 0.0 to 1.0.

    #define NIS_THREAD_GROUP_SIZE 128

  • Hmm,... habe einen clip

    MPEG-4 AVC, current color space: YUV420P8, bit depth: 8, resolution: 3840x2160, fps: 25, color matrix: 2020ncl, yuv luminance scale: full, scanorder: progressive

    Wenn ich den einfach decode, kriege ich normal Datenraten,

    LibavSMASHSource 123.95 fps

    LWLibavSource 124.19 fps (prefer_hw=0)

    LWLibavSource 125.73 fps (prefer_hw=1)

    ffms2 164.96 fps

    wenn ich jedoch einen GLSL Filter mittels placebo.Shader einbinde, kriege ich nur so 17,5 fps:

    LumaSharpenHook 17.67 fps

    CAS.glsl 17.81 fps

    adaptive-sharpen.glsl 17.84 fps

    Anime4K_Denoise_Bilateral_Mean 17.66 fps

    bSat.hook.glsl 17.22 fps

    filmgrain.glsl 17.49 fps

    CPU und GPU auslastung sind < 18%


    Hier mal ein Beispielskript.


    Irgendwie erscheint mir das falsch. Einerseits habe ich im Kopf das die GLSL Filtering ziemlich flott sein müsste und andererseits sind die alle bei ca.17,5fps.


    -> Hat jemand ne Idee was da schief laufen könnte? Oder ist das normal und ich habe es einfach falsch im Kopf?


    Cu Selur

  • ich denke schon, aber frag den ihn am besten selber. Am einfachsten selbst mit mpv ausprobieren.


    in die input.conf von mpv z.B. folgendes rein:


    input.conf:


    F4 no-osd change-list glsl-shaders toggle "~~/shaders/nlmeans.glsl"; show-text "Non-local means (LUMA only)"


    dann einfach mpv starten, Bild anhalten und mit F4 den Shader togglen.


    2 Beispielbilder:

    https://raw.githubusercontent.…se%3Dalls%3D5_nlmeans.png

    https://raw.githubusercontent.…/shaders/lena_nlmeans.png



    Reddit Link:

    https://www.reddit.com/r/mpv/c…nonlocal_means_denoising/


    Vielleicht ist noch die next Variante interessant:


    https://github.com/AN3223/dotf…aster/.config/mpv/shaders


    https://raw.githubusercontent.…shaders/nlmeans_next.glsl


    What's the diff between thoes variants?


    AN3223


    The only variant in the repo worth using is nlmeans_next.glsl for temporal denoising, it's the same but it loads all of the storage textures for the frames, which is only compatible with vo=gpu-next (and they slow down the shader a good bit even if the feature isn't being used).

  • Gerade mal mit:

    und mit

    Code
    1. clip = core.placebo.Shader(clip=clip, shader="I:/Hybrid/64bit/vsfilters/GLSL/nlmeans_next.glsl", width=640, height=352)

    krieg aber bei beiden nur einen Haufen grüner Pixel.

  • Habe jetzt vapoursynth nicht probiert. Bei mpv funktioniert der Shader bei OpenGL ohne Probleme.


    Wenn ich aber die gpu-api auf vulkan stelle, läuft der Shader nur mit den Intel Treibern. Bei den Nvidia Treibern meines Desktop Systems (Linux, 515.76) bekomme ich da nur grüne Punkte oder ganz schwarzes Bild.

  • Hmm,... hab ne Geforce GTX 1070ti, aber alle Treiber nach der 512.96 haben bis dato das Problem, dass ich auf meinem HP Z27Q nur ein schwarzes Bild bekomme, wenn beide DisplayPorts angeschlossen sind (was nötig ist für 5k). Der Monitor sagt das Signal, was er bekommt ist 5k@60Hz, nur das Bild ist komplett schwarz.

    -> Grummel, mitder Windows 517.57 Treiberversion, gleiches Spiel. :(


    Cu Selur

  • Es sieht so aus, als ob die 1070ti keine 5k in 60 Hz darstellen kann. 4k in 60 Hz, das geht.

    Sollte das Bild auch bei 4k mit 60 Hz schwarz bleiben, dann weiß ich momentan auch nicht weiter. 5k mit 30 Hz müsste funktionieren.

    Es könnte sein, dass die DP-Kabel nur 15- oder 18 GBit/s übertragen, statt 36 GB. Für 5k ist das zu wenig. Das ist immer die Gefahr mit Beipackstrippen.

  • Pro Jo:

    grafik.png

    Doch geht, da bei den ersten 5k+ Monitoren zwei 2560x2880 Displays verbaut sind, die über zwei Displayport 1.2 Kabel angesprochen werden. :)

    Läuft hier seit 5+ Jahren ohne Probleme.

    Problem ist anscheinend 'nur', dass NVIDIA das in den Treibern nach Version 512.96 nicht mehr unterstützt. :(


    Cu Selur


    Ps.: ja über ein einzelnes Kabel geht nur 4k@60Hz. ;)

  • Ja, hast recht, das müsste eigentlich funktionieren. DP 1.2 reicht bis 8k. Mich wundert nur, dass die modernen Treiber dann einen Rückschritt machen.

    Das ist bei NVIDIA sehr ungewöhnlich, da eine RTX 3090 auch 8k-Spiele wiedergeben.


    Und zurück auf einen älteren Treiber willst du nicht? Verstehe, diese sind nicht so effizient.

    Die Einstellungen im GK-Treiber stimmen, das geht bei 5k nicht anders.


    Irgendetwas stimmt da nicht. Ich lese in den Spezifikationen vom HP, dass dieser maximal 2560 x 1440 Pixel anzeigt.


    Nur als Test:

    Hast du schon einmal im GK-Treiber auf 2560 x 1440 Pixel gestellt?


    Dann müsste ein Bild zu sehen sein. Scheinbar wird die Bildauflösung in den neuen Treibern anders definiert.

    Mich wundert nur, dass nirgends in der Anleitung steht, dass das Display des HP eine 5k Bildauflösung hat. 3840 x 2160 Pixel (UHD) sehe ich da auch nicht.

    Mir ist das nicht suspekt, dass ein Monitor für 410 Euro eine 5k-Auflösung bietet. Günstige 5k-Monitore kosten normalerweise noch ab ca. 5.500 Euro.


    Es mag sein, dass der HP ein 5k-Bildsignal erkennt, aber in Wirklichkeit ist das kein 5k-Signal. Ich meine, du hast einen 2k-Monitor gekauft.

    Darum ist auch das Bild bei 5k schwarz, das gibt für mich eher einen Sinn.


    Der GK-Treiber erkennt, dass hier 2 DP-Kabel angeschlossen sind, darum werden 5120 x 2880 Pixel angezeigt.

    Das HP-Display hat aber nur 2560 x 1440 Pixel bei 60 Hz.


    Ich vermute, dass die älteren GK-Treiber auf die entsprechende Bildauflösung geschaltet haben, bei der man noch ein Bild erkennt.

    Die neuen Treiber machen das scheinbar nicht mehr, sondern nehmen die Bildauflösung so, wie man das einstellt.

    Du dachtest, dass der Monitor beim Anschluss von 2 DP-Kabel eine 5k-Auflösung bietet. Du hast immer nur mit 2560 x 1440 Pixel geschaut.

    Das ist dir nie aufgefallen. Ein echtes 5k-Bild sieht ganz anders aus.


    Ich kann nur vermuten, dass es so ist. Aber vielleicht hast du ja recht.

  • Zitat

    Und zurück auf einen älteren Treiber willst du nicht?

    Bin ich aktuell zwangsläufig, nur unterstützen die neueren Treiber, neuere Vulkan&Co Versionen. :(


    Zitat

    Hast du schon einmal im GK-Treiber auf 2560 x 1440 Pixel gestellt?

    Wie gesagt, bis 4k geht alles, aber dann geht es nur über ein Kabel. Probleme gibts halt, wenn man auf 5k will.


    Zitat

    Dann müsste ein Bild zu sehen sein. Scheinbar wird die Bildauflösung in den neuen Treibern anders definiert.

    Mich wundert nur, dass nirgends in der Anleitung steht, dass das Display des HP eine 5k Bildauflösung hat. 3840 x 2160 Pixel (UHD) sehe ich da auch nicht.

    Mir ist das nicht suspekt, dass ein Monitor für 410 Euro eine 5k-Auflösung bietet. Günstige 5k-Monitore kosten normalerweise noch ab ca. 5.500 Euro.

    Ich habe den Monitor schon 5 Jahre und der war einiges teurer als 410€. Das für ~400€ ist die G3 Variante!

    Das ist ein komplett anderer Monitor. Da hast du dich verguckt.


    Das -> https://support.hp.com/us-en/document/c04591534 / https://www.prad.de/technische…nitor-datenblatt/hp-z27q/ / https://www.anandtech.com/show…ew-aiming-for-more-pixels ist der, den ich habe.


    Zitat

    Günstige 5k-Monitore kosten normalerweise noch ab ca. 5.500 Euro.

    Der 5k von Dell hatte damals ~2000€ gekostet,..



    Cu Selur