Können wir anisotrope Filterung für 3D-Texturen verwenden?

7

Unterstützen moderne GPUs die anisotrope Filterung für 3D-Texturen? Wenn ja, wie kann man es benutzen? Die OpenGL-Spezifikation scheint diesbezüglich nicht sehr genau zu sein. Von diesem Link :

Should anything particular be said about anisotropic 3D texture filtering?

  Not sure.  Does the implementation example shown in the spec for
  2D anisotropic texture filtering readily extend to 3D anisotropic
  texture filtering?
ap_
quelle

Antworten:

4

Die Hardwareunterstützung für die anisotrope 3D-Filterung ist mir nicht bekannt. Ich könnte mich jedoch in Bezug auf seine Existenz irren. Ich glaube, es wurde versucht.

Die Motivation für die anisotrope 2D-Filterung besteht darin, die Texturfunktion über den Bildschirmbereich, unter den sie fällt, genauer vorzufiltern als bei einem Boxfilter im Texturraum (normalerweise führt die anisotrope Filterung mehrere Boxfilter im Texturraum durch).

Diese Definition ist der Schlüssel. Die anisotrope 2D-Filterung versucht:

Integrieren Sie über den Teil einer ebenen Fläche, den Sie sehen können
(innerhalb eines einzelnen Pixels auf dem Bildschirm).

Was bedeutet anisotrope 3D-Filterung?

Integrieren Sie über den Teil von a. . . Volumen? . . . dass du kannst . . . sehen?
(innerhalb eines einzelnen ... Voxels? ... auf dem Bildschirm)

Das beste Analogon, das ich mir vorstellen kann, wäre eine anisotrope 3D-Textur-Suche entlang des Betrachtungsstrahls. Dies ist keine direkte Analogie. Das Problem dabei ist jedenfalls, dass Sie sich beim Rendern von Volumes tatsächlich viel mehr darum kümmern, wie diese Integration durchgeführt wird als im 2D-Fall.

Willst du Absorption? Emission? (Sie müssen eine Art Exponential ausführen, um sich zu integrieren.) Möchten Sie streuen? (Sie müssen eine Art Rekursion oder eine ungefähre Unschärfe durchführen, um sie zu integrieren). Dabei geht es nicht einmal darum, welche Art von Daten die 3D-Textur speichert. Bedeutet diese Textur Opazität oder Dichte ? Ist es diffus oder ist es Emission ? All dies muss unterschiedlich integriert werden.


Es gibt ständig neue Entwicklungen beim Rendern von Volumes, und auf jeden Fall gibt es so viele verschiedene suboptimale Möglichkeiten, wie Sie versuchen könnten, die anisotrope 2D-Filterung zu verallgemeinern. Der Zweifel, den die Spezifikation ausdrückt, macht für mich Sinn:

Tut die Implementierung. . . für 2D anisotrope Texturfilterung leicht auf 3D anisotrope Texturfilterung erweitern?

Nein.

imallett
quelle
1
Es erstreckt sich auf 3D. Sie können beispielsweise in Betracht ziehen, dass Sie beim Texturieren (eines Teils) eines Dreiecks tatsächlich eine durch die 3D-Textur geschnittene Oberfläche bewerten. Diese Form muss nicht isotrop sein. Alternativ könnte die 3D-Version ein Ellipsoid verwenden, genau wie eine anisotrope 2D-Filterung sich einem elliptischen Fußabdruck annähern kann.
Simon F
@ SimonF Hmmm, du hast recht! Das ist eigentlich eine bessere Verallgemeinerung als die, die ich gegeben habe, und sie scheint sich besser zu benehmen (wie in, es ist offensichtlicher, was zu tun ist).
Imallett