PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FilterTester


Xmas
2002-08-24, 01:41:28
Ich hab mal ein kleines Programm geschrieben, mit dem man die Texturfilter-Methoden unter OpenGL auf anomalien Testen kann. Es ist zwar einfach, damit herumzuspielen, allerdings ist es nicht immer leicht zu erklären, was man da genau sieht bzw. wodurch einige Muster zustandekommen. Ich werds wohl morgen noch etwas ausführlicher erklären, hier jetzt erstmal der Link:
www.samx.de.vu/AnisoTester.exe

Voraussetzung ist eine Grafikkarte, die die OpenGL-Extensions EXT_texture_filter_anisotropic und EXT_texture_lod_bias unterstützt (sollten eigentlich alle GeForce-, Radeon- und Kyro-Karten tun, bei anderen bin ich nicht sicher).

ow
2002-08-24, 10:46:12
Der Kyro unterstützt kein EXT_texture_lod_bias, also läuft´s darauf nicht.

Extensions des Kyro:

OpenGL vendor string: Imagination Technologies
OpenGL renderer string: PowerVR KYRO
OpenGL version string: 1.2.1
OpenGL extensions (GL_):
GL_ARB_multisample,
GL_ARB_multitexture,
GL_ARB_texture_compression,
GL_ARB_texture_env_add,
GL_ARB_texture_env_combine,
GL_ARB_texture_env_dot3,
GL_EXT_abgr, GL_EXT_bgra,
GL_EXT_compiled_vertex_array,
GL_EXT_draw_range_elements,
GL_EXT_packed_pixels, GL_EXT_secondary_color,
GL_EXT_separate_specular_color,
GL_EXT_stencil_wrap,
GL_EXT_texture3D,
GL_EXT_texture_compression_s3tc,
GL_EXT_texture_env_add,
GL_EXT_texture_env_combine, GL_EXT_texture_filter_anisotropic,
GL_EXT_vertex_array, GL_S3_s3tc,
WGL_ARB_extensions_string,
WGL_EXT_swap_control.


[edit]

http://www.delphi3d.net/hardware/extsupport.php?extension=GL_EXT_texture_lod_bias

Xmas
2002-08-24, 11:07:34
Gefixt, läuft jetzt auch ohne Extensions (wenn auch dann nicht mehr so brauchbar).

Quasar
2002-08-24, 16:12:18
Kann es sein, dass der Link momentan nicht geht?

Xmas
2002-08-24, 16:26:53
Bei mir funktioniert der einwandfrei.

ow
2002-08-24, 18:00:04
Originally posted by Xmas
Gefixt, läuft jetzt auch ohne Extensions (wenn auch dann nicht mehr so brauchbar).

Zu spät, hab den PC gewechselt.;)

Läuft fehlerfrei auf meiner GF2MX.
Nettes Tool.:)

ow
2002-08-24, 18:01:14
Originally posted by Xmas
Bei mir funktioniert der einwandfrei.

Bei mir aber jetzt nicht mehr ("diese Adresse ist nicht erreichbar").

[edit] lohnt es sich überhaupt, die neue Version zu downloaden und wie funzt das jetzt ohne Extensions?

Xmas
2002-08-24, 18:16:52
Probiert mal
http://home.t-online.de/home/06821692972-0001/AnisoTester.exe

In der neuen Version sind die Aniso/LOD-Regler einfach funktionslos, wenn die Extensions nicht unterstützt werden. Außerdem kann man die Mipmap-Farben abschalten und eine Ebene anzeigen lassen, die man auch nach hinten verschieben kann.

Ob es sich lohnt? Na ja, sind eh nur 48 KiB...;)

ow
2002-08-24, 19:13:53
Jep, das funzt.:)

Frank
2002-09-04, 23:27:03
eine kleine Frage...
wie sieht das Codemäßig aus, um meinetwegen Anisotropisch zu filtern...

also
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN/MAG_FILTER,...) ??? oder? :|

Xmas
2002-09-05, 00:14:17
Originally posted by Frank
eine kleine Frage...
wie sieht das Codemäßig aus, um meinetwegen Anisotropisch zu filtern...

also
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN/MAG_FILTER,...) ??? oder? :|
Nein, anisotropes Filtern ist Teil einer Extension, GL_EXT_texture_filter_anisotropic.

Folgende Funktion kannst du verwenden, um zu prüfen ob eine Extension unterstützt wird:

bool gIsExtensionSupported(const char *extension)
{
const GLubyte *extensions = NULL;
const GLubyte *start;
GLubyte *where, *terminator;

/* Extension names should not have spaces. */
where = (GLubyte *)strchr(extension, ' ');
if( where || *extension == '\0' )
return false;

extensions = glGetString(GL_EXTENSIONS);

/* It takes a bit of care to be fool-proof about parsing the
OpenGL extensions string. Don't be fooled by sub-strings,
etc. */
start = extensions;
for( ;; ) {
where = (GLubyte*)strstr((const char*)start, extension);
if( !where )
break;
terminator = where + strlen(extension);
if( where == start || *(where - 1) == ' ' )
if( *terminator == ' ' || *terminator == '\0' )
return true;
start = terminator;
}
return false;
}


Und für den anisotropen Filter dann:

double MaxAniso;
glGetDoublev( GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &MaxAniso );

glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, int(MaxAniso) );

Wenn GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT und GL_TEXTURE_MAX_ANISOTROPY_EXT nicht definiert sind, brauchst du möglicherweise aktuellere GL.h und GLExt.h, die du z.B. bei NVidia oder ATI downloaden kannst. Oder aber ich kann dir die #defines raussuchen.

Der anisotrope Filter ist zusätzlich zum normalen Nearest/Linear/Mipmap blabla, wobei bei Radeon 7x00/8x00/9000 GL_<x>_MIPMAP_LINEAR eben als GL_<x>_MIPMAP_NEAREST interpretiert wird

Frank
2002-09-05, 12:16:57
Danke

muss ich dann gleich mal probieren :)

Exxtreme
2002-09-08, 05:27:33
@ Xmas
Könnte man das Tool so erweitern, daß man FSAA durch das Tool zuschalten kann?

Gruß
Alex

Xmas
2002-09-09, 16:35:40
Originally posted by Exxtreme
@ Xmas
Könnte man das Tool so erweitern, daß man FSAA durch das Tool zuschalten kann?

Gruß
Alex
Nein, FSAA kann man unter OpenGL idiotischerweise nicht durch die Anwendung forcen. Die entsprechende Extension GL_ARB_multisample gibt als maximale Sampleanzahl immer die Anzahl der im Treiber eingestellten Samples zurück, d.h. wenn man FSAA im Treiber deaktiviert kann man auch die Extension nicht gebrauchen. Quincunx kann man über eine weitere Extension aktivieren.

In Direct3D kann man FSAA forcen, allerdings nur über die Sampleanzahl. Weder die Quincunx-Modi noch 4xS sind möglich. Zumindest kann man hier über eine Bitmaske auf die einzelnen Samples zugreifen, wodurch mit etwas Aufwand ganz nette Effekte oder auch RGSS möglich ist.

Xmas
2002-10-02, 13:29:36
Neue Version 1.2 gibts hier (http://www.beyond3d.com/misc/Anisotest/TextureFilteringTestAndSource.zip) zum Download.

Exxtreme
2002-10-02, 13:38:13
Ein kuhles Programm, die Version 1.2.

Gruß
Alex

zeckensack
2002-10-02, 14:34:47
Fantasticz!

Was ich noch nicht ganz verstanden habe:
Wenn man den Tunnel benutzt und an der Texturrotation spielt, dann dreht sich das ganze spiralförmig nach innen.
Ist das eine Rotation via Texturmatrix?
Es fällt mir etwas schwer, das Bild zu deuten :D

Xmas
2002-10-02, 23:19:53
Originally posted by zeckensack
Fantasticz!

Was ich noch nicht ganz verstanden habe:
Wenn man den Tunnel benutzt und an der Texturrotation spielt, dann dreht sich das ganze spiralförmig nach innen.
Ist das eine Rotation via Texturmatrix?
Es fällt mir etwas schwer, das Bild zu deuten :D
Exakt das ist es.