PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ATI X1900 ohne "krumme" Texturen unter OpenGL?


Asmodeus
2006-02-16, 08:43:57
Kann es sein, dass ATI auch bei der neuen X1900 Serie unter OpenGL GL_ARB_texture_non_power_of_two immer noch nicht unterstützt? Oder übersehe ich eine Alternative, um "krumme" Texturen auch mit ner X1900 unter OpenGL nutzen zu können?

Gruss, Carsten.

Simon
2006-02-16, 09:12:13
ARB_texture_rectangle (http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_rectangle.txt)

Ist wie ARB_texture_non_power_of_two, nur ohne MipMapping und das texture_rectangle unterstützen die X800 Karten auch (bei den 9800Pro bin ich mir nicht so sicher).

Chris Lux
2006-02-16, 09:31:46
ARB_texture_rectangle (http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_rectangle.txt)

Ist wie ARB_texture_non_power_of_two, nur ohne MipMapping und das texture_rectangle unterstützen die X800 Karten auch (bei den 9800Pro bin ich mir nicht so sicher).
aber es gibt bei den RECTs einen einschneidenten unterschied, der sie nicht so allgemein nutzbar macht. sie werden nicht normalisiert adressiert, dh die texturecoordinaten liegen im intervall [0..width]x[0..height]. also achtung bei dieser aussage...

Simon
2006-02-16, 09:48:52
aber es gibt bei den RECTs einen einschneidenten unterschied, der sie nicht so allgemein nutzbar macht. sie werden nicht normalisiert adressiert, dh die texturecoordinaten liegen im intervall [0..width]x[0..height]. also achtung bei dieser aussage...
Ah, ich wußte, ich hab schon wieder was vergessen :biggrin:
Danke =)

Asmodeus
2006-02-16, 10:22:48
Ja, und ohne Mipmapping sind sie jedenfalls für meinen Anwendungszweck auch nicht zu gebrauchen. Irgendwie bin ich gerade mal wieder ziemlich enttäuscht von ATI. Zum einen ist die nagelneue X1900XT mit 512 MB maximal nur genauso schnell, in komplexen Szenarien sogar langsamer als eine 7800 GTX mit 256 MB, und das bei über 510 MByte Geometrie- und Texturdaten und dann sind meiner Meinung nach wichtige Extensions immer noch nicht umgesetzt, obwohl bei Nvidia schon seit 6800 vorhanden. Das alles gilt natürlich nur für meine eingeschränkte Sicht auf OpenGL und mein Anwendungsgebiet. Trotzdem bin ich gerade ziemlich froh, dass ich das Geld für die X1900XT nicht privat bezahlen musste.

Gruss, Carsten.

Simon
2006-02-16, 11:05:44
Kannst du deine NPOT nicht hochrechnen/skalieren/auffüllen auf POT?

Asmodeus
2006-02-16, 11:33:47
Kannst du deine NPOT nicht hochrechnen/skalieren/auffüllen auf POT?

Das würde bei der Größenordnung an Daten eine Menge Speicheroverhead bedeuten.

Gruss, Carsten.

Gast
2006-02-16, 11:33:52
Kann es sein, dass ATI auch bei der neuen X1900 Serie unter OpenGL GL_ARB_texture_non_power_of_two immer noch nicht unterstützt? Oder übersehe ich eine Alternative, um "krumme" Texturen auch mit ner X1900 unter OpenGL nutzen zu können?Allerdingenskirchen! Du hast übersehen dass die ATI-Treiber die GL-Version 2.0 unterstützen. Zumindest unter Windows :|
Dh du kannst npot-Texturen einfach so nutzen, auch wenn die Extension fehlt. Wahrscheinlich sind gewisse Anwendungsfälle schrottig langsames Software-Rendering, denn wenn alles schnell wäre würde IMO die Extension auch gemeldet.
Was genau du beachten musst weiß ich nicht, evtl mal bei OpenGL.org im Forum suchen oder so, oder bei Beyond3D fragen und zB von Humus die korrekte Antwort kriegen.

-zecki

Simon
2006-02-16, 11:35:32
Das würde bei der Größenordnung an Daten eine Menge Speicheroverhead bedeuten.
Ok, wie siehts mit texture atlas aus?

Gast
2006-02-16, 11:39:34
ARB_texture_rectangle (http://oss.sgi.com/projects/ogl-sample/registry/ARB/texture_rectangle.txt)

Ist wie ARB_texture_non_power_of_two, nur ohne MipMapping und das texture_rectangle unterstützen die X800 Karten auch (bei den 9800Pro bin ich mir nicht so sicher).Sogar die Radeon 7xxx-Serie und die RivaTNT unterstützen {EXT|NV|ARB}_texture_rectangle ... also bitte ...

-zecki

Asmodeus
2006-02-16, 11:41:00
Allerdingenskirchen! Du hast übersehen dass die ATI-Treiber die GL-Version 2.0 unterstützen. Zumindest unter Windows :|
Dh du kannst npot-Texturen einfach so nutzen, auch wenn die Extension fehlt. Wahrscheinlich sind gewisse Anwendungsfälle schrottig langsames Software-Rendering, denn wenn alles schnell wäre würde IMO die Extension auch gemeldet.
Was genau du beachten musst weiß ich nicht, evtl mal bei OpenGL.org im Forum suchen oder so, oder bei Beyond3D fragen und zB von Humus die korrekte Antwort kriegen.

-zecki

Ja, so wird die Extension bei ARB ja auch beschrieben, dass sie in dem Sinne eigentlich keine Extension ist, die initialisiert werden muss, um die Funktionalität zu nutzen, sondern quasi nur meldet, ob es geht. Und selbst wenn man die Extension nicht abfragt, sondern einfach NPOT-Texturen benutzt, läuft es, wenn es korrekt implementiert ist. Nur leider läuft es auf der ATI eben nicht, die NPOT-Texturen werden erstmal nicht korrekt wiedergegeben.

Gruss, Carsten.

Asmodeus
2006-02-16, 11:49:07
Ok, wie siehts mit texture atlas aus?

Ja, genau solche Texturatlanten benutze ich für gewisse Sachen. Nur muss man da eben auch immer eine gute Balance zwischen Texturgröße, Performance und Nutzbarkeit finden. Und bei mir ist eine ideale Größe 640x640. Wenn ich die Größe jetzt auf 1024x1024 hochsetze und entsprechend mehr kleine Texturen reinpacke, dann stimmt die Balance bezüglich der Performance nicht mehr so richtig. Wenn ich die Sache auf 512x512, 256x512 und 128x128 aufteile, dann stimmt die Balance auch nicht mehr bezüglich Nutzbarkeit und Performance. Und auch wenn das etwas bequem erscheint, so habe ich auch nicht unbedingt Lust, mich da so verbiegen zu müssen, nur weil die Sache bei ATI nicht so richtig funktioniert.

Gruss, Carsten.

Coda
2006-02-16, 12:25:34
Kann es sein, dass ATI auch bei der neuen X1900 Serie unter OpenGL GL_ARB_texture_non_power_of_two immer noch nicht unterstützt? Oder übersehe ich eine Alternative, um "krumme" Texturen auch mit ner X1900 unter OpenGL nutzen zu können?Die TMUs sind offenbar von den Features genau die gleichen geblieben wie bei der X800-Serie. Sehr schade das ganze.

nVIDIA ist da seit NV4x sehr viel fortschrittlicher, aber für sowas wird man ja nicht gelobt.

Simon
2006-02-16, 12:28:13
Sogar die Radeon 7xxx-Serie und die RivaTNT unterstützen {EXT|NV|ARB}_texture_rectangle ... also bitte ...

-zecki
Ist ja gut :usad:
Ich war mir halt nicht sicher und bevor ich schon wieder Falsches/Unvollständiges sage... :usad:

Wenn ich die Größe jetzt auf 1024x1024 hochsetze und entsprechend mehr kleine Texturen reinpacke, dann stimmt die Balance bezüglich der Performance nicht mehr so richtig.
Das versteh ich jetzt nicht :usad:
Da passen doch dann mehr kleine Texturen in die Große, somit sind weniger Texturwechsel fällig. Bitte klärt mich auf =)

Asmodeus
2006-02-16, 16:47:23
Ist ja gut :usad:
Ich war mir halt nicht sicher und bevor ich schon wieder Falsches/Unvollständiges sage... :usad:


Das versteh ich jetzt nicht :usad:
Da passen doch dann mehr kleine Texturen in die Große, somit sind weniger Texturwechsel fällig. Bitte klärt mich auf =)

Die Textur der Größe 640x640 enthält alle Texturen für ein Modell. Bei einer Textur der Größe 1024x1024 wären Texturen verschiedener Modelle gespeichert. Wenn ich das eine Modell anzeige, dann benötigt OpenGL bei der 640x640 Textur auch genau nur diese Textur. Angenommen, in eine 1024x1024 Textur passen nun die Texturen von 3 Modellen. Nun habe ich in einer Szene z.B. über 250 verschiedene Modelle. Jeweils von welchen 3 Modellen soll ich nun immer die Texturen in einer Textur zusammenfassen? In einer Ecke der Szene sind Instanzen dieser 3 Modelle vielleicht oft gemeinsam sichtbar, OpenGL benötigt also auch immer genau diese Textur. Aber wo anders sind diese drei Modelle vielleicht immer nur getrennt mir Instanzen ganz anderer Modelle zu sehen und OpenGL benötigt dann die anderen Texturen der anderen Modelle und immer auch diese 1024x1024 Textur, obwohl davon immer nur der Teil für ein Modell benötigt wird. *G* ich hoffe, das war jetzt halbwegs verständlich geschrieben. ;)

EDIT: Das ganze ist natürlich immer unter dem Gesichtspunkt betrachtet, dass die Texturdaten nicht alle immer komplett in den Videospeicher passen.

Gruss, Carsten.

Simon
2006-02-18, 10:35:14
Danke, jetzt hab ich das auch verstanden =)
Aber: Wenn du jetzt mehrere, beliebige Objekttexturen in eine 1024x1024-Textur zusammenfasst, dann hast du im Normalfall auch wieder nur einen texture switch für jedes Objekt. Im Idealfall sparst du dir aber 1-2 texture switches, wenn die Objekten gerade sichtbar sind =)