2017-04-27 5 views
-1

Beim Rendern ein equirectangular 360 Textur codiert, ist es in der Regel eine Lookup wieWie (falsch) mipmap equirectangular rendering?

u = atan(x,z) 
v = acos(y) 

Die equirectangular Textur ist bereits sehr vorfiltriertem. Das Einschalten von Mipmaping funktioniert nicht. u ist nicht kontinuierlich und die Textur selbst hat keine einheitlichen Daten in uv. Und das Erstellen von Mipmaps mit einer 2x2 Box Downsample ist auch nicht richtig für die equirectangular.

Aber Annahme der 2x2-Box für Miplevels und Hardware-Mipmap-Lookup, gibt es eine gute Möglichkeit, entweder lod oder Gradienten, die Sinn macht zu berechnen?

Verwenden Sie nur dFdx (v) und dFdy (v) Art von Arbeiten mit kleinen Viewports. Aber es muss einen besseren Weg geben?

+1

Was ist eine 'eqirect' Textur? – ybungalobill

+0

@ybungalobill: etwas wie das http://photographyreel.com/image/9-narthex-equirect-panoramic-photography – starmole

+0

Es wird eine "equirectangular Projektion" genannt. Hatte noch nie jemanden gehört, der es auf "eqirect" verkürzt hat, und Google scheint dem zuzustimmen. – ybungalobill

Antwort

0

Sie können die Mipmaps mit der Funktion glGenerateTextureMipmap() generieren und die Lookup-Funktion texture(tex, uv) verwenden. Es wird schon die Arbeit machen.

Sie sollten jedoch normalisieren die uv Koordinaten, so dass sie in der [0,1] Bereich sind:

u = atan(x,z) 
v = acos(y) 
uv = uv/6.283185 + .5 
+0

Ich habe die Normalisierung ausgelassen - für Derivate spielt das keine Rolle. Mip-Maps einfach so einzuschalten, funktioniert nicht. Das ist die Frage :) glGenerate wird nur einen 2x2-Box-Filter machen. Aber eqirect ist bereits vorgefiltert. – starmole

+0

@starmole: Hast du das versucht? Warum es nicht funktioniert? Was meinst du damit, dass deine Textur bereits vorgefiltert ist? Laden Sie es nicht einfach als 2D-Rasterbild? Können Sie eine Beispieldatei posten? Mein Ansatz wird definitiv für die Beispieldatei funktionieren, die Sie verlinkt haben - es ist egal, ob es "eqirect", "webmerc" oder "lambcyl" ist. – ybungalobill