was ist die fwidth glsl Funktion tatsächlich verwendet?
Jedes mal, wenn ich betrunken durchsuchen, so sehe ich eine unbeantwortete fwidth Frage.
Und es macht mich Frage mich, wie es eigentlich gedacht war.
Das Lesen der Dokumentation ist es:
abs(dFdx(p)) + abs(dFdy(p)).
Es ist also nicht die klassischen mip-Selektion, die ist max(dx,dy).
Ist es für alternative mip-Auswahl? Aber ich kann nicht finden, ein Fall, in dem abs(dx)+abs(dy) wäre besser.
Es muss einige siggraph Papier oder gemeinsamen Algorithmus ich bin völlig fehlt, die nutzt diese Funktion. Und es muss wirklich beliebt, weil es in GLSL.
Das einzige, was ich denken kann, ist einige 2d-post-filter fehlt mir.
Aber was?
Ich bin sicher, dass jemand hier weiß, und sobald Sie sehen, dass es es offensichtlich.
Also: Welchen Algorithmus verwendet abs(dx)+abs(dy)?
- Das 2D post-Filterung, die Sie erwähnen, ist ein anständiges Beispiel eigentlich.
- aber welcher filter?
- Treffen Sie Ihre Wahl. Anti-aliasing, edge-detection, die anisotrope Filterung. Tatsächlich, nach einigen Google-ing fand ich ein Beispiel benutzen hier, wo es ist verwendet für das anti-aliasing von einem cel-shading-shader.
- chatten in den Kommentaren jetzt 🙂 ich fand das Zeug auch, aber es scheint nicht wichtig genug, um es in der Sprache. es muss etwas anderes sein! für 2d das einzige, was ich denken konnte ist, dass es vielleicht ein ok-Vorhersage. ich fühle mich immer noch wie es ist eine laute offensichtliche Sache, für die es aber.
- Nur weil es nicht "so wichtig" für Sie bedeutet nicht, dass es nicht wichtig ist. Bart gab Sie 4 Szenarien, in denen die Funktion wichtig wäre. Durch alle Rechte, das sollte eine Antwort.
- Ich weiß nicht, wie viel mehr Magische, die Sie erwarten, es zu sein, um zu zählen, wie wichtig? Es ist eine oft verwendete Art von Funktion in Szenarien, ähnlich denen, die ich erwähnt. Ich weiß nicht, die nitty gritty details, was es läuft darauf hinaus, in Bezug auf die tatsächliche "code" an die GPU geschickt, aber ich könnte mir vorstellen, dass einige Vorteil dieser Funktion über die Bewertung Aufrufe dFdx und dFdy selbst. Aber das ist Reine Spekulation meinerseits.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie eigentlich Recht auf das Geld mit der 2D-filtern Vorschlag. Alle filter, die sich auf irgendeine Art von Metrik für die Geschwindigkeit der änderung zwischen einem pixel und seinen Nachbarn profitieren könnten von dieser Funktion.
Beispiele wären anti-aliasing, edge-detection, die anisotrope Filterung. Ich bin sicher, es gibt mehr Beispiele, die man sich vorstellen kann.
Scheint es auf Ihre Frage und Kommentare, die Sie erwartet, dass es ein mind-blowing Grund für diese Funktion enthalten sein, die in GLSL. Ich würde einfach sagen, dass es ist eine nützliche Funktion zu haben. Vielleicht hat jemand mit mehr in die Tiefe Kenntnisse über die tatsächlichen Interna der diese Funktion können Sie bieten mehr detail auf, was passiert, hinter den kulissen (d.h. wenn alle performance-Verbesserung gegenüber einer handschriftlichen gleichwertig mit dFdx und dFdy).
dies ist die totale Ableitung der Funktion DF = dF/dx*dx + dF/dy*dy .sehen Sie die ähnlichkeit?
fWidth >= DF oder in Worten fWidth ist die mögliche maximale änderung in einem fragment variable F, zwischen einer aktuellen fragmants benachbarten Pixel. dh die 8 umliegenden Pixel in der 3x3-Nachbarschaft.