Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Es kommt ja immer mal wieder auf, das Thema mit den Texturkoordinaten und mit den Filtern, besonders wenn es um Tilemaps geht.
Ich habe gerade mal einen Artikel geschrieben, der das Problem von drei Seiten beleuchtet und die unterschiedlichen Lösungen sowie ihre Probleme und Vorteile darstellt. Ich bitte um Feedback.
viele Grüße, Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Der Artikel ist gut und verständlich. Jedoch wird ihn niemand finden, wenn es keine anderen Artikel gibt, die auf ihn verlinken. Auch solltest du im Artikel selbst vielleicht noch den ein oder anderen Link platzieren (z.B. zu Mipmaps).
Warum steht in der Tabelle bei Mipmap-Kompatibilität/GL_NEAREST ein "—" statt eines Kreuzes? Mipmaps mit GL_NEAREST (na gut: wenn man es genau nimmt mit GL_NEAREST_MIPMAP_NEAREST) sind doch möglich.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7804 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Was mir fehlt ist so eine Aussage darüber was man nun eigentlich machen sollte. Der Artikel an sich beschreibt die Effekte, eventuell etwas knapp. Da sollten nochmal paar OpenGL Anfänger drüber lesen, ob sie alles mitbekommen.
Was ich noch gut Fände wäre, wenn du kurz noch die Begriffe Texturatlas und Tilemap beschreibst (in 2 kleinen Artikel). Links habe ich gesetzt. Also was ist es, warum macht man es, welche Formen gibt es (statische vs. generierte), worin unterscheiden sich beide. (Falls beide das gleiche sind, dann eventuell einen redirect)
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab da mal ne Frage zu Lösung 1. Hast du beim testen x1 == w und y1 = h genommen, wenn ja, dann sollte es pixel perfekt sein. Der Fehler der oft gemacht wird ist 0,0 bis 1,1 zu verwenden und auf das 8x8 Pixel Quad zu mappen. Der Offset ist notwendig, damit es Pixel Perfekt wird, weil man sonnst durch Rundungfehler alles aber keine korrekten texel fetches bekommt. Wenn ein Tile bei x0 = 4 anfängt und eine Breite von 4 Pixel hat, dann ist x1 = 8 und ab und zu wird wie bei array access aber mit -1 gearbeitet also x0 = 4 und x1 = 7. Das ist ein häufiger Fehler welcher auch beim Packen gemacht wird.
Ein weiterer häufiger Fehler kommt in Zusammenhang mit DXT, MipMaps und Atlanten. DXT erzeugt eine MipMap Pyramide bis 1x1 Pixel, zwar enthält diese immer noch 4x4 Pixel aber das ist in dem Fall nicht so interessant. Wenn man ein Atlas mit DXT verwendet, dann sollten Tilekanten immer ein vielfaches von 4 sein und entsprechend auch positioniert werden, sonnst werden Nachbarn beim nutzen mit rein gemischt und man sollte die Nutzung von Mipmaps bis dem Level beschränken, wo eines der Tiles 4x4 Pixel unterschreiten würde.
Am einfachsten ist, wenn man MipMaps garnicht erst verwendet, wenn man UI macht, Nearest Filter und Lösung 1 verwendet.
edit: Schön, dass du die Lücke im Wiki erkannt und dich darum kümmerst *daumen hoch*
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Schonmal vielen Dank fürs Feedback.
glAwesome hat geschrieben:
Warum steht in der Tabelle bei Mipmap-Kompatibilität/GL_NEAREST ein "—" statt eines Kreuzes? Mipmaps mit GL_NEAREST (na gut: wenn man es genau nimmt mit GL_NEAREST_MIPMAP_NEAREST) sind doch möglich.
Wusste ich garnicht Dann sollte da wohl ein ✘ hin!
@TAK2004: Sorry, ich kann nicht zu 100% folgen.
Ich habe x0 = 64, y0 = 192, x1 = 128, y1 = 256 gesetzt und dann wie im Artikel beschrieben geoffsettet. Ist das nicht das korrekte Vorgehen für Lösung 1?
@Flash: Eine Pauschale Aussage kann man nicht treffen, man muss herausfinden, was einem wichtig ist. Deswegen gibts am Ende die Tabelle. Das habe ich jetzt mit einem stückchen Text verdeutlicht.
grüße, Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, C/C++
Zitat:
@TAK2004: Sorry, ich kann nicht zu 100% folgen.
Ich habe x0 = 64, y0 = 192, x1 = 128, y1 = 256 gesetzt und dann wie im Artikel beschrieben geoffsettet. Ist das nicht das korrekte Vorgehen für Lösung 1?
Wenn das tile eine Breite und Höhe von 64 hat, dann ist es korrekt und es sollte kein matsch ergeben. Ich hab dir mal ein Testfile angehangen, womit du an den uvs sehr einfach testen können müsstest. Wenn dein Atlas größer war, kannst einfach in Gimp das Bild erweitern und dann als dds mit plugin exportieren, bzw. was für ein format du auch verwendest.
Das Grid erlaubt dir sehr einfach raus zu bekommen ob was im argen ist und der Border zeigt dir bleeding und falsche uv koordinaten.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Das Tile war 64×64 groß. Ist auch nicht verwunderlich, dass es matscht, schließlich ist das Rechteck das man aus der Atlastextur ausschneidet auch nur noch 63×63 groß, wenn man die Koordinaten um 0.5 verkleinert.
grüße
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 52 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.