Geometry shader
description
Transcript of Geometry shader
Geometry shader Mateusz Sołtys
Geometry shader•Geometry shader jest to shader
odpowiedzialny za przetwarzanie prymitywów (podstawowych obiektów sceny).
•Zaprezentowany w listopadzie 2006 r.•Wprowadzony do wersji core w OpenGl
3.2 (wcześniej był dostępny jako rozszerzenie).
Geometry shader• W przeciwieństwie do vertex shadera
geometry shader może tworzyć nowe prymitywy.
•Geometry shader jest opcjonalny i nie musi zostać użyty w programie.
•Output Vertex Shadera = Input Geometry Shadera
•Outpu Geometry Shadera = Input Fragment Shadera
Po co?•Do generowania punktowych spritów
•Tesselacji
•Renderowania do mapy sześciennej
•Shadow volume
•Przybliżanie krzywych
•Modyfikowanie złożoności siatki
Prymitywy wejściowe•Punkty (GL_POINTS) – 1 wierzchołek•Linie (GL_LINES) - 2•Trójkąty (GL_TRIANGLES) - 3•Linie z przyległymi wierzchołkami
(GL_LINES_ADJACENCY) – 4•Trójkąty z przyległymi wierzchołkami
(GL_TRIANGLE_ADJACENCY) – 6
Prymitywy wyjściowe
•Punkty (GL_POINTS) – 1 wierzchołek
•Łamana (GL_LINE_STRIP) – >1
•Pasek trójkątów (GL_TRIANGLE_STRIP) -
>3
Geometry shader może zmieniać następujące zmienne:•Gl_Position•Gl_TexCoord[]•Gl_FrontColor•Gl_BackColor•Gl_PointSize•Gl_Layer•Gl_PrimitiveID
Funkcje•EmitVertex() – określa że vertex jest
skończony i jest dodany do aktualnego prymitywu
•EndPrimative() – określa że obecny prymityw wyjścia jest skończony i że następny może być rozpoczęty
Pytania na kolokwium•W jakiej kolejności wykonywane są
shadery•Jakie 2 główne funkcje są specyficzne
dla geometry shadera