PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : vertex und pixel shaders info


Bertl
2002-08-28, 11:56:59
Hallo!

Ich programmiere seit mehreren Jahren OpenGL Appliktationen (1.0 - 1.3) und moechte mich nun mit Vertex- und Pixel Shadern befassen. Kennt jemand eine Website oder ein Buch das einen guten Einstieg bietet?

Bertl

Demirug
2002-08-28, 13:54:33
Unter OpenGL bis 1.3 gibt es sowas wie Pixel und Vertexshader nicht. Vertexshader sind ab 1.4 vorhanden AFAIK gibt es aber noch keine Treiber dafür.

Für die "Pixelshader" musst du also im Moment immer auf die Herstellerspezifichen Extension zurückgreifen und bei den "Vertexshader" auf OpenGL 1.4 Treiber warten oder ebenfalls die Hersteller Extensions benutzen.

Für OpenGL 2.0 ist der einsatz von Hochsprachen für die Vertex und Fragmentpipeline vorgesehen. Ob es dazwischen noch eine allgemeine Extension für die "Pixelshader" gibt ist AFAIK noch nicht sicher.

Bertl
2002-08-28, 14:02:29
Danke fuer die Antwort!

Ich weiss, dass es eigentlich noch keinen richtigen Standard fuer Pixel- und Vertex Shader gibt und unter OpenGL 1.3 schon gar nicht :-) Ich wollte mich nur mit der Funktionsweise von Shadern vertraut machen. Notgedrungen wuerde ich das auch unter Direkt3D machen, aber OpenGL waere mir lieber.

Ich such nur einen Punkt an dem ich anfangen kann. Kennst du ein gutes Buch?

Bertl

RadioactiveMan
2002-08-28, 15:51:42
@ Demirug

Es gibt mittlerweile schon einen Treiber für die 1.4 Vertex Shader(ARB_vertex_program), leider derzeit aber nur für die Radeon9700.
NVIDIA wird sicher nachziehen(die neuste Version von CG enthält schon ein Profil für ARB_vertex_program), angekündigt sind ja neue Treiber mit SW NV30 Emulation für die neuen Extensions(wie z.B. NV_fragment_program).

@ Bertl

Bücher zu den OGL Pixel/Vertex Shader gibts keine, was wohl mit an mangelnden Standards liegt. Jedoch ähneln sich der Syntax von D3D Vertex Shadern sehr stark mit ARB_vertex_program und NV_vertex_program, weshalb es sehr einfach ist sie auf OGL zu portieren.
EXT_vertex_shader verfügt zwar über gleiche Funktionalität, ist jedoch viel umständlicher zu programmieren und wohl auch angesichts ARB_vertex_program bald nutzlos.

Als gute Print-Lektüre für Realtime Shader fällt mir eigentlich nur Direct3D ShaderX ein(http://www.shaderx.com), portieren kannst du die darin besprochenen PS/VS 1.1 Shader dann mit NVPARSE(GF3/GF4) bzw. dxvs2oglvp, diese Tools gibts bei NVIDIA, einen Parser für ATIs PS1.4 gibt es derzeit meines Wisses noch nicht.
http://cvs1.nvidia.com/OpenGL/src/tools/nvparse/nvparse_pixelshader_howto.txt
und http://developer.nvidia.com/view.asp?PAGE=opengl

Eine ganz nette Übersicht zu den VS1.1/PS1.4 bietet auch ATI http://www.ati.com/developer/SIGGRAPH02/GHProgrammability-notes.pdf