90 likes | 282 Views
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).
E N D
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