Effiziente Bikubische Filterung-code in GLSL?

Frage ich mich, ob jemand hat einen vollständigen, funktionierenden und effizienten code zu tun "Bikubisch" textur-Filterung in glsl. Es ist dies:

http://www.codeproject.com/Articles/236394/Bi-Cubic-and-Bi-Linear-Interpolation-with-GLSL
oder
https://github.com/visionworkbench/visionworkbench/blob/master/src/vw/GPU/Shaders/Interp/interpolation-bicubic.glsl

aber beide do 16 textur liest, wo nur 4 sind notwendig:

https://groups.google.com/forum/#!topic/comp.Grafik.api.opengl/kqrujgJfTxo

Jedoch die oben genannte Methode verwendet eine fehlende "kubisch" ()" - Funktion, ich weiß nicht, was er tun soll, und nimmt auch einen unerklärlichen "texscale" - parameter.

Gibt es auch die NVidia-version:

http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter20.html

aber ich glaube, das nutzt CUDA, was ist spezifisch für NVidia-Karten. Ich brauche glsl.

Könnte ich wahrscheinlich Anschluss der nvidia version zu glsl, aber dachte, ich würde zuerst Fragen, um zu sehen, wenn jemand bereits eine komplette, funktionierende glsl bikubische shader.

  • "aber beide do 16 textur liest, wo nur 4 sind notwendig:" dieser Beitrag wird Ihnen liegen. Die bikubische interpolation ist nicht zu tun, 4 Bilineare samples erstellen; das ist nur lineare Filterung in einem größeren Maßstab. Die bikubische interpolation erfordert dabei kubische interpolation der Werte, nicht die lineare interpolation. Und Sie können nicht tun, kubische interpolation durch eine Reihe von linearen Interpolationen. Es ist wie der Unterschied zwischen einer Bézier-Kurve und die Linien erstellt, indem die 4 Bézier-Punkte. Es ist nicht ganz dasselbe, oder?
  • Shader gepostet, dass ich etwas wie texcoord = Kubikmeter(lerp(texcoord)), so ist es im Grunde die Anwendung von zusätzlichen Funktion auf der Oberseite der textur-Koordinaten-interpolation. Diese Art der Filterung können verwendet werden zum anpassen der Bildgröße.
  • Sie irren sich; dokumentiert, wie in der GPUGems Kapitel 2 und unten geschrieben von JAre und Maf, es ist durchaus möglich, führen Sie "Bikubisch" lookup mit 4 lineare Interpolationen.
  • Und Sie können nicht tun, kubische interpolation durch eine Reihe von linearen Interpolationen. Das ist technisch nicht korrekt, das, wie De Casteljau-Algorithmus funktioniert
  • Die GPUGems Artikel ist nicht CUDA. Es ist entweder Cg oder HLSL.
InformationsquelleAutor Vern Jensen | 2012-11-21
Schreibe einen Kommentar