PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : @ zeckensack , demirug & co.


Mad-Marty
2002-07-07, 10:21:53
Hi,

kennt einer von euch einen OGL -> D3D Wrapper ? bzw. ist es möglich
die NV Techdemos auf einer R8500 dadurch zum laufen zu bringen ??


Von meinem Verständnis her liegt das doch nur daran das bei der Ati
die NV_xxxx extensions unter OGL fehlen (bzw. als nicht nutzbar zurückgegeben werden) oder ?


P.S. zeckensack: Falls es noch keinen gibt, kannst du es ja evtl. als 'impression' für dein nächstes Wrapperprojekt verstehen :-) !



byebye

ow
2002-07-07, 11:16:53
OGl D3D Wrapper gibt´s. Zb. ist in MESA ein derartiger Wrapper drin.


Solange der Wrapper keine NV Extensions nutzt, geht´s damit genausowenig wie mit einem OGL Treiber.


AFAIK proggt zs auschliesslich OGL, da hat er mit solchen Wrappern nicts am Hut.

zeckensack
2002-07-07, 22:47:07
Der einfachere Weg wäre sicherlich, einen OpenGL/OpenGL-'Extender' zu schreiben, sprich eine DLL, die sich in den Windows-Mechanismus zum Laden des OGL-Treibers einklinkt. Dieser würde dann die fehlenden NV-Extensions auf die entsprechenden ATI-Extensions abbilden und den Rest einfach an den 'richtigen' OGL-Treiber weiterreichen.

Das ist definitiv machbar, allerdings habe ich im Moment keine Zeit für sowas (Grundlagenforschung Windows-API, dynamischer Shadercompiler, hunderte von Funktionsprototypen, andere wichtige NV-Extensions wie zB VAR, 9x/2k/XP-kompatible Registry-Massage etc) und ehrlich gesagt auch keine Lust.

PS: Ich bin durchaus gewillt, mir demnächst Direct3D ins Hirn zu kloppen, aber meine Prioritäten stehen im Moment noch etwas anders (Prüfungen). Als kleine Hausaufgabe werde ich wahrscheinlich auch meinen Wrapper nach DX8 portieren :)

Demirug
2002-07-07, 22:53:56
Was den Wrapper angeht so habe ich doch etwas zweifel das sich die merkwürdigen Register Combinder von NVidia so ohne weiteres mappen lassen. Die Occulussion Culling funktionen kommen aber definitive erst mit DX9.

@zeckensack:

Bist du krank? Du und Direct3D?

zeckensack
2002-07-07, 23:24:21
Originally posted by Demirug
Was den Wrapper angeht so habe ich doch etwas zweifel das sich die merkwürdigen Register Combinder von NVidia so ohne weiteres mappen lassen.ATI's Shader-Extensions sind eine Obermenge von NVIDIA's (all caps!). Es gibt eigentlich nur zwei wichtige Unterschiede.

1)ATI's shader werden innerhalb eines glBeginFragmentShaderATI/glEndFragmentShaderATI-Paares vollständig festgelegt, von Anfang bis Ende (deckt sich AFAIK mit dem DX-Mechanismus). Bei NVIDIA dagegen kann ein Programm jederzeit einzelne Stufen 'mittendrin' verändern. Bei der Abbildung NV->ATI müssen also im 'Wrapper' jederzeit die vollständigen Einstellungen aller Stufen vorgehalten werden. Jedesmal, wenn eine einzige Stufe verändert wird, muß der komplette Shader neu kompiliert werden. Und dann wird's auch seeehr kompliziert, das ganze mit Display Lists* verträglich zu machen.

2)NV's Ansatz (register combiners) ist 'MIMD', sprich es werden immer mehrere festgelegte Operationen gleichzeitig auf die vorliegenden Register angewandt. Die Programmierbarkeit entsteht dadurch, daß das Programm auswählt, welche Register als Operanden benutzt werden, und welche Ergebnisse an die nächste Stufe weitergereicht werden. Die Operationen selbst sind nicht programmierbar.

ATI's Ansatz ist SIMD, also mit einer klassischen imperativen Sprache zu vergleichen. Da NV's Ansatz potenziell vier Operationen pro Stufe ausführt (Geforce3/4Ti besitzen 8 Stufen), reicht die maximale Programmlänge des R200 nicht aus, um einen Brute-Force-Ansatz durchzuführen. Hier müssen durch geschickte Analyse des Shader-Ablaufs gezielt 'unwichtige' Operationen verworfen werden.


*Display Lists speichern eine beliebige Menge von OpenGL-Funktionsaufrufen. ZB ist es denkbar, Konfigurationsänderungen an Stufe 1 und Stufe 5 eines NV-Shaders in eine Display List 'hineinzukompilieren', und diese Änderungen später (durch Aufruf der Display List) auf einen völlig anderen Shader draufzusetzen.
@zeckensack:

Bist du krank? Du und Direct3D? Erfreue mich guter Gesundheit, danke der Nachfrage :)
Die NeXe DX8-Tutorials machten einen recht guten Eindruck, was man ja von DX6 noch nicht gerade behaupten konnte ...
Ich denke, es kann nicht schaden, wenn ich mich mal damit beschäftige. OpenGL kenne ich mittlerweile ziemlich genau, und es wäre doch praktisch, wenn ich mein ... ähem ... Kompetenzportfolio um DX8 erweitern könnte. Zumal ich auch gerne in der Spieleindustrie arbeiten würde =)

Demirug
2002-07-07, 23:33:50
@zeckensack:

Danke für die ausführliche Erklärung. Genau das meinte ich mit merkwürdig. Mit der DX7 Pipeline gibt es deswegen einige interessante Effekte auf den GF1/2 Karten.

Ja DX6 war noch nicht das wahre. Aber richtig heftig war ja das erste D3D. Wenn man es mal verstanden hat eigentlich ganz nett aber bis man es mal verstanden hat.

Ja DX Kenntnisse sind in der Spieleindustrie nicht schlecht. Im Moment ist die Joblage dort aber nicht so toll. Aber das past jetzt nicht so ganz hier hin. Wenn du mehr Infos brauchst kannst du mir ja ne PM schicken.