Archiv verlassen und diese Seite im Standarddesign anzeigen : Cg mit ATI 9500/9700
Chris Lux
2003-02-17, 14:39:07
hi,
welche openGL extensions werden von den ATI Treibern unterstützt für die vertex- und fragmentshader. ich frage weil ich gern mal mit Cg experimentieren würde. profile für ARB_vertex_program und ARB_fragment_program werden von Cg unterstützt (wobei fragment_program noch nicht richtig funktionieren soll). hat jemand vielleicht erfahrung damit, möchte mir nämlich (noch) keine geForceFX kaufen da wäre mir eine billige 9500 lieber für die sachen.
Demirug
2003-02-17, 14:47:44
ARB_vertex_program kann sie auf jeden Fall da reicht sogar schon eine 8500 dafür. Da die 9500 Pro ARB_fragment_program unterstützt ist davon auszugehen das es auch die nonpro kann da es sich ja um den gleichen Chip handelt.
Chris Lux
2003-02-17, 15:05:35
laut dem Cg Toolkit sollen die ARB_xxx_program aber auf den 2.0 Versionen der shader basieren, desshalb gibt es für die <2.0 shader auch eigene profile.
wegen dem pro und non-pro mach ich mir keine sorgen, ich mach mir nur sorgen ob Cg mit den extension zusammenarbeitet auf ner ati karte und ob die extensions von den ati treibern unterstützt werden.
danke trotzdem für die hilfe ;)
Demirug
2003-02-17, 15:25:37
Originally posted by Hans Ohlo
laut dem Cg Toolkit sollen die ARB_xxx_program aber auf den 2.0 Versionen der shader basieren, desshalb gibt es für die <2.0 shader auch eigene profile.
wegen dem pro und non-pro mach ich mir keine sorgen, ich mach mir nur sorgen ob Cg mit den extension zusammenarbeitet auf ner ati karte und ob die extensions von den ati treibern unterstützt werden.
danke trotzdem für die hilfe ;)
Ja es gibt auch noch OpenGL Profile für "ältere" NVIDIA Karte weil ja zum Beispiel ARB_fragment_program mit einer Karten vor NV30 nicht möglich ist. ARB_vertex_program müsste eigentlich auch mit einer Karte >= NV20 gehen. Da könnte ich mich jetzt aber auch täuschen. Die Profile für die reinen NVIDIA Extensions sind noch enthalten weil damit eben alles angefangen hat.
Ja die ATI-Treiber können ARB_vertex_program und ARB_fragment_program und wenn Cg mit dem entsprechende Profil einen Shader erzeugt muss dieser auch laufen (ausser der Compiler hat noch einen Bug).
Chris Lux
2003-02-18, 08:02:52
hmm,
jez kommen immer mehr fragen.
ich habe in den openGL Extensions Specs nachgeschlagen und wurde nicht fündig auf welcher (sagen wir mal directX-)version diese beiden extensions basieren. bei arb werden beide als version 1.0 geführt, was aber _nicht_ den directX-versionen entspricht.
vor allem der satz aus dem Cg SDK mach mich stuzig:
The DirectX 9 profiles (vs_2_x and ps_2_x), OpenGL ARB profiles (arbfp1 and arbvp1), and NV30 OpenGL profiles (fp30 and vp30) generally support longer, more complex programs and offer more features and functionality to the developer. These are referred to as advanced profiles
würde ja bedeuten, das ARB_xx_program mehr kann als die NV20, die ja zu den DIrectX8 karten zählt, uns somit nur kurze (wie kurz eigentlich?) programme ohne verzweigungen kann.
mann, nix zu finden, was diese extensions mit directx in verbindung bring. (gut ich arbeit jez erstmal ;))
Demirug
2003-02-18, 08:34:58
Die ARB_fragment_program Extension entspricht in etwa den PS 2.0
Mit der ARB_vertex_program Extension kenne ich mich nicht so aus aber AFAIK ist da nichts drin was verhindert das es auf einer DX8 Karte läuft.
Die Programmgrösse ist eine etwas komplizierte angelegenheit weil man ja vorher nicht weiss wie viele Assembler Instruktionen der Compiler aus der Hoschsprache erzeugt.
Chris Lux
2003-02-18, 10:28:16
hmm,
weisst du vielleicht wo man nachlesen kann was die genauen unterschiede zwischen vs1.x und vs2.0 ausser der programmgrösse sind? denn wenn es 2.0 wäre kann man ja so ein programm nicht auf nem nv20 laufen lassen (auch wegen den verzweigungen). find das alles sehr verwirrend.
edit: meinst du mit 'in etwa' drüber (2.0+ von nvidia) oder drunter?
ist es eigentlich möglich einen shader mit dem dx9 profil zu kompilieren und dann in openGL zu benutzen oder gibt es bei den compilaten dann unterschiede zwischen openGL und dx?
Demirug
2003-02-18, 10:48:43
Die Beschreibung was die DX-Shader können findet man im Hilfefile des SDKs oder im MSDN-Online: http://msdn.microsoft.com/library/en-us/directx9_c/directx/graphics/reference/shaders/shaders.asp?frame=true
Mit "in etwas" meine ich das der Funktionsumfang etwa der gleiche ist wie bei einem DX 2.0 PS. Aber dabei handelt es sich um Details und so genau kenne ich die Spec auch nicht. Die NV30 Fragment Extension geht hat aber einen grösseren Funktionsumfang als ARB_fragment_program.
Und mit DX Profilen erzeuge Shader laufen auf keinen Fall mit einer OpenGL Anwendung. Dafür sind die unterschiede im Syntax und dem Handling der Shader doch zu gross.
Rampage 2
2003-02-20, 15:56:03
Wie soll ATI-Hardware denn Cg unterstützen können???
Demirug
2003-02-20, 17:34:10
Originally posted by Rampage 2
Wie soll ATI-Hardware denn Cg unterstützen können???
Cg erzeugt aufgrund von unterschiedlichen Profilen shader für unterschiedliche API-Schnittstellen.
Für DX werden zum Beispiel auch die VS und PS 2.0 unterstützt. Shader die mit den Profilen compiliert wurden laufen auch auf R300 Karten. Für OpenGL gilt das gleiche. Shader welche für ARB_vertex_program oder ARB_fragment_program erzeugt wurden laufen auf R300 Karten.
Es gibt aber auch Cg Profile die Shader erzeugen die nur mit NVIDIA Hardware laufen.
@Demi:
Hab da ne Frage: wie sieht denn das später in der Praxis nach dem Shader-kompilieren aus? Hat man dann zB. mehrere .exe oder .dll, also pro Profil zB. eine, oder gibt das irgendwie ein Progromm mit mehrerern Renderpfaden für unterschiedliche Chips?
Demirug
2003-02-20, 18:00:30
Originally posted by ow
@Demi:
Hab da ne Frage: wie sieht denn das später in der Praxis nach dem Shader-kompilieren aus? Hat man dann zB. mehrere .exe oder .dll, also pro Profil zB. eine, oder gibt das irgendwie ein Progromm mit mehrerern Renderpfaden für unterschiedliche Chips?
Ich bin mir jetzt nicht ganz sicher auf was du dich hier beziehst.
Bei Cg (und HLSL auch) gibt es zum einen einen Komandozeilen Compiler und dann noch eine Möglichkeit den Compiler über eine API anzustossen. In beiden Fällen gibt man das Profil das man benutzten möchte mit an. Cg hat dann pro Profile eine DLL. Bei HLSL habe ich mir das noch nicht so genau angeschaut.
War es das was du wissen wolltest?
Originally posted by Demirug
War es das was du wissen wolltest?
Ja könnte hinkommen.:D
Ich wollte wissen, wieviele exe oder dll entstehen.
Bei Spielen, die d3d&ogl als APi unterstützen liegen die dlls mir den Renderfunktionen auch getrennt vor (zB. d3ddrv.dll und opengldrv.dll unter UT).
Also wird mit cg dann zB. eine d3dps11.dll - d3dps20.dll geben.
Demirug
2003-02-20, 18:40:51
Originally posted by ow
Ja könnte hinkommen.:D
Ich wollte wissen, wieviele exe oder dll entstehen.
Bei Spielen, die d3d&ogl als APi unterstützen liegen die dlls mir den Renderfunktionen auch getrennt vor (zB. d3ddrv.dll und opengldrv.dll unter UT).
Also wird mit cg dann zB. eine d3dps11.dll - d3dps20.dll geben.
Bei einer "moderne" Engine werden die unterschiedlichen Pfade nicht mehr programmiert (OK bei OpenGL leider zu Teil schon noch) sondern man parametriert die Engine. Das soll heisen das man alle Effekte in einer oder mehren Dateien speichert und bei laden der Engine die Version des Effekts auswählt die am besten zur Hardware passt.
Die noch extremere Variante ist es einen zur Karte passenden Renderpfad aus den Effektdateien zur Laufzeit in eine Render-DLL umzusetzten. Hierbei würde man dann nicht die Engine parametrien sondern einen Enginecompiler.
ah ja, thx:)
ich glaub ich hab´s kapiert.
zeckensack
2003-02-20, 20:44:51
Originally posted by Hans Ohlo
hmm,
jez kommen immer mehr fragen.
ich habe in den openGL Extensions Specs nachgeschlagen und wurde nicht fündig auf welcher (sagen wir mal directX-)version diese beiden extensions basieren. bei arb werden beide als version 1.0 geführt, was aber _nicht_ den directX-versionen entspricht.
vor allem der satz aus dem Cg SDK mach mich stuzig:
würde ja bedeuten, das ARB_xx_program mehr kann als die NV20, die ja zu den DIrectX8 karten zählt, uns somit nur kurze (wie kurz eigentlich?) programme ohne verzweigungen kann.
mann, nix zu finden, was diese extensions mit directx in verbindung bring. (gut ich arbeit jez erstmal ;))
Selbstverständlich findest du nichts, was diese Extensions mit DirectX Graphics in Verbindung bringt :)
Das ist eben eine andere Geschichte. ARB_fp kann das, was es eben kann. Ein direkter Vergleich mit DX ist hier nicht erwünscht, weil's die spec auch nicht verständlicher machen würde für Leute die die DX-Shader nicht kennen. Und selbst wenn man diese kennt, das Programmiermodell ist anders und erfordert in jedem Fall sowieso eine Erklärung.
arbfp1/arbvp1 sind interne Bezeichnungen des Cg-Compilers, die entsprechende Extension trägt keine Versionsnummer (die Spec hat eine, aber die dient nur zur Dokumentenrevision).
Chris Lux
2003-02-24, 07:48:28
Originally posted by zeckensack
Selbstverständlich findest du nichts, was diese Extensions mit DirectX Graphics in Verbindung bringt :)
Das ist eben eine andere Geschichte. ARB_fp kann das, was es eben kann. Ein direkter Vergleich mit DX ist hier nicht erwünscht, weil's die spec auch nicht verständlicher machen würde für Leute die die DX-Shader nicht kennen. Und selbst wenn man diese kennt, das Programmiermodell ist anders und erfordert in jedem Fall sowieso eine Erklärung.
ich wollte nur eine verbindung haben um zu sehen auf welcher höhe (feature bezogen) sich die arb extensions im vergleich zu dx befinden um herauszufinden mit welcher graka man was machen kann (bezogen auf sachen wie max. programmlänge usw). vor allem gings mir um die sachen wie branching usw.. werd ich doch mal die extensionsspec rannehmen müssen (die seeeehhr unübersichtlich ist und es sehr schwer macht vergleiche zu den dx vs und ps zu machen)
arbfp1/arbvp1 sind interne Bezeichnungen des Cg-Compilers, die entsprechende Extension trägt keine Versionsnummer (die Spec hat eine, aber die dient nur zur Dokumentenrevision).
nein diese token sind jene welche am anfang eines solchen programms stehen, hat nichts mit Cg zu tun. Cg generiert ja nur programme, welche dann an die jeweiligen extensions gegeben werden.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.