PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OGL_EXT Herstellerspezifisch ???


Mad-Marty
2002-09-29, 14:24:39
Hi, eigentlich sind OGL Extensions ja herstellerspezifisch,
jedenfalls alle non GL_ARB


aber als ich den GeoBench getestet hab ist mir folgendes aufgefallen:



-Welcome:-----------------------------------------------------------------------------------
The OpenGL Geometry Benchmark
Made by F. Brebion (admin@fl-tw.com)
Comments, suggestions are welcome...
-System-------------------------------------------------------------------------------------
Vendor: AuthenticAMD
Name: AMD Athlon(tm) XP 2000+
Speed: 1680 Mhz
-OpenGL-------------------------------------------------------------------------------------
Vendor: ATI Technologies Inc.
Version: 1.3.3302 Win9x Release
Renderer: Radeon 8500 DDR x86/MMX/3DNow!/SSE
Extensions: GL_ARB_multitexture GL_ARB_point_parameters GL_ARB_texture_border_clamp
GL_ARB_texture_compression GL_ARB_texture_cube_map GL_ARB_texture_env_add
GL_ARB_texture_env_combine GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3
GL_ARB_texture_mirrored_repeat GL_ARB_transpose_matrix GL_ARB_vertex_blend
GL_ARB_window_pos GL_S3_s3tc GL_ATI_element_array GL_ATI_envmap_bumpmap
GL_ATI_fragment_shader GL_ATI_map_object_buffer GL_ATI_pn_triangles
GL_ATI_texture_mirror_once GL_ATI_vertex_array_object GL_ATI_vertex_streams
GL_ATIX_texture_env_combine3 GL_ATIX_texture_env_route GL_ATIX_vertex_shader_output_point_size
GL_EXT_abgr GL_EXT_bgra GL_EXT_blend_color GL_EXT_blend_func_separate
GL_EXT_blend_minmax GL_EXT_blend_subtract GL_EXT_clip_volume_hint GL_EXT_compiled_vertex_array
GL_EXT_draw_range_elements GL_EXT_fog_coord GL_EXT_packed_pixels GL_EXT_point_parameters
GL_EXT_rescale_normal GL_EXT_secondary_color GL_EXT_separate_specular_color
GL_EXT_stencil_wrap GL_EXT_texgen_reflection GL_EXT_texture_env_add
GL_EXT_texture3D GL_EXT_texture_compression_s3tc GL_EXT_texture_cube_map
GL_EXT_texture_edge_clamp GL_EXT_texture_env_combine GL_EXT_texture_env_dot3
GL_EXT_texture_filter_anisotropic GL_EXT_texture_lod_bias GL_EXT_texture_object
GL_EXT_vertex_array GL_EXT_vertex_shader GL_HP_occlusion_test GL_KTX_buffer_region
GL_NV_texgen_reflection GL_NV_blend_square GL_SGI_texture_edge_clamp
GL_SGIS_texture_border_clamp GL_SGIS_texture_lod GL_SGIS_generate_mipmap
GL_SGIS_multitexture GL_WIN_swap_hint WGL_EXT_extensions_string WGL_EXT_swap_control

--------------------------------------------------------------------------------------------

Wie kommt es das das ding auf R8500 NV extensions nimmt ?

und 2te frage, wenn das alles per treiber exportiert werden kann, und jeder nutzen kann wieso mappt dann ATI nicht gleich die NV Befehle auf ihre eigenen um, dann könnt ich NWN spielen mit Shaded Water
;-)

Demirug
2002-09-29, 14:48:38
Mad-Marty,

ja manchmal übernimmt ein Hersteller die Extensions von einem anderen. Dies führt dann oft dazu das diese Extension irgendwann zu allgemeinen (GL_ARB) werden.

Nun gibt es aber auch extensions sind so Herstellerspezifisch das sich ein andere Hersteller bei dem Versuch diese zu übernehmen das Genick brechen würde da die Konzepte der Karten einfach zu unterscheidlich sind.

Das "Shaded Water" von NWN wird zum Beispiel im wesentlichen über die "Register Combinder" Extension von NVIDIA erzeugt. Diese Extension gehört eindeutig in den Bereich "sehr Herstellerspezifsich" und falls es technisch überhaupt möglich ist diese auf dem R200 nachzubilden wäre das sicherlich mit erheblichen Performancen einbussen verbunden. Das heist jetzt nicht das die NV-Karten eine bessere Fragmentpipeline als die R200 Karten haben sondern nur das bei beiden Karten dieser Teil erhebliche Unterschiede im Desgin aufweist.

Mad-Marty
2002-09-29, 15:28:09
Hi Demirug,


Danke für die Qualifizierte Antwort.

Hatte schon an dich oder Zeckensack spekuliert. *g* *schleim*


Ich verlange ja gar nicht das die zwangsweise die selbe verarbeitung
beschreiten, aber man könnte doch die ext erstmal unterstützen und
dann remappen und angepasst auf die Radeon das ausführen oder ?

soll heissen, da die Shaderbefehle eh gleich sind, kanns doch nicht so
unmöglich sein das zu machen ????

Mir gehts nur dadrum das am ende das auch so aussieht wie auf nv chips.

auf der anderen Seite verfluch ich natürlich Bioware für diese Schandtat !!!

byebye

Demirug
2002-09-29, 15:45:46
Mad-Marty,

unter OpenGL sind die Shaderbefehle eben leider nicht gleich. Der Aufwand die NVIDIA extension für einem R200 nachzubilden wäre deshalb recht hoch. Desweiteren sieht ATi natürlich auch keine Veranlasung die "Pixel Shader" Extensions von NVIDIA nachzubilden da sie für diesen Zweg eigene Extensions haben. So ein Schritt könnte man dann auch leicht als Kapitulation von ATi gegenüber NVIDIA missverstehen.

Wobei du den schuldigen an deinem Problem ja schon gefunden hast. Bioware.

Wer unter OpenGL entwickelt muss halt den Preis bezahlen und die Engine auf jeden Hersteller/Chip anpassen oder auf die Zusatzfeatures die Herstellerspezifische Extensions erfordern verzichten. Bioware hatte wohl am ende keine Lust/Geld/Zeit mehr die anpassung auf etwas anderes als NVIDIA zu machen. IMO ein schlechter Still.

zeckensack
2002-09-29, 23:26:43
Die Shadereinheiten sind nur unter DX8.1 vergleichbar (wobei der R200 hier bekanntermaßen in Führung liegt).

Mit den NV_register_combiners kann man ganz wilde Sachen machen, ein Großteil davon liegt unter der DX8-Pixel Shader-Sprache völlig brach. Unter OpenGL ist alles nutzbar.

Das Umsetzen von NV nach ATI ist schlicht unmöglich. Wenn alle Möglichkeiten von NV_register_combiners genutzt werden, ist dies schlicht zu viel für die R200-Hardware. Sie hat einfach nicht genug Ausführungseinheiten dafür.

Andersherum kann ATI's Shader auch Sachen, die die register combiners nicht beherrschen.

Erst dadurch, daß man gewisse Hardware-Fähigkeiten brachliegenlässt und auf den kleinsten gemeinsamen Nenner heruntergeht (in diesem Fall wäre das PS1.3 nach DX), lässt sich verlustfrei von der einen auf die andere Architektur umsetzen.
OpenGL selbst kann dies nicht allgemeingültig leisten, das muß schon (wie bereits gesagt) Bioware selbst erledigen.