introduction to geometry shaders patrick cozzi analytical graphics, inc
Post on 20-Dec-2015
243 views
TRANSCRIPT
![Page 1: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/1.jpg)
Introduction to Geometry Shaders
Patrick Cozzi
Analytical Graphics, Inc.
![Page 2: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/2.jpg)
Overview
Geometry Shaders in the Pipeline Primitive Types Applications Performance
![Page 3: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/3.jpg)
Birds Eye View
Create or destroy primitives on the GPU Requires DirectX 10 or GL_ARB_geometry_shader4
GeometryShader
![Page 4: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/4.jpg)
Geometry Shaders in the Pipeline
VertexShader
FragmentShader
Vertices in world coordinates
VertexShader
FragmentShader
Vertices in world coordinates
Perspective Divide and
Viewport Transformation
clip coordinates window coordinates
![Page 5: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/5.jpg)
Geometry Shaders in the Pipeline
GeometryShader
VertexShader
FragmentShader
PrimitiveAssembly
PDand
VT
GeometryShader
VertexShader
FragmentShader
PrimitiveAssembly
ClippingPDand
VT
GeometryShader
VertexShader
FragmentShader
PDand
VT
clip coordinates clip coordinates
window coordinates
![Page 6: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/6.jpg)
Primitive Types
GeometryShader
Output primitives can be disconnected
![Page 7: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/7.jpg)
Primitive Types
Input Primitives GL_POINTS GL_LINES GL_TRIANGLES Adjacency
Output Primitives GL_POINTS GL_LINE_STRIP GL_TRIANGLE_STRIP
![Page 8: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/8.jpg)
Primitive Types
Input primitive type doesn’t have to equal output primitive type
blogs.agi.com/insight3d/index.php/2008/10/23/geometry-shader-for-debugging-normals/
![Page 9: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/9.jpg)
Applications
Implement glPolygonModeTriangles Points or Line Strips
Emulate GL_ARB_point_spritePoints Triangle Strips
![Page 10: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/10.jpg)
Applications
Displacement Mapping Single pass generate a cube map Extrusions
Shadow volumesFins along silhouettes for fur rendering
![Page 11: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/11.jpg)
Applications: Fur in Lost Planet
Render surface, write buffers forFur ColorAngleLength
GS turns each pixel into a translucent polylineAutomatic LOD
![Page 12: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/12.jpg)
Images from meshula.net/wordpress/?p=124
color angle length
Applications: Fur in Lost Planet
![Page 13: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/13.jpg)
Performance
Duplicates per-vertex operations for vertices shared by primitives
GeometryShader
VertexShader
5 vertices processed 9 vertices processed
![Page 14: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/14.jpg)
Performance
GeometryShader
GeometryShader
GeometryShader
GeometryShader
Must guarantee order in == order out
![Page 15: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/15.jpg)
Performance
Order guarantee affects parallelism
GeometryShader
GeometryShader
GeometryShader
Reorder Buffer
Clipping
![Page 16: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/16.jpg)
Performance
Buffer size needs to support a number of threads running in parallel
![Page 17: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/17.jpg)
Performance
Maximum number of vertices a GS will output:
GEOMETRY_VERTICES_OUT_ARB
Determines the speed of GS execution Make this and vertex sizes as small as
possible
![Page 18: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/18.jpg)
Performance
GeForce 8, 9, and GTX2xxOutput size = vertex size *
GEOMETRY_VERTICES_OUT_ARB
Maximum output size: 1,024 scalarsPerformance is inversely proportional
to output sizeNot a continuous function:
• 1-20 scalars: Peak Performance• 27-40 scalars: 50% Performance• On GeForce 8800 GTX
![Page 19: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/19.jpg)
Performance
BenefitsReduces vertex buffer memory usage
• Compute in GS, e.g. normals• Create more geometry• No need to duplicate (e.g. compared to
equivalent VS implementation)
Less memory == less bus trafficReduces vertex attribute setup cost
![Page 20: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/20.jpg)
Summary
Modify incoming primitive or make a limited number of copies
Not for Large scale amplificationInstancing
![Page 21: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/21.jpg)
Resources
www.microsoft.com/downloads/details.aspx?FamilyId=96CD28D5-4C15-475E-A2DC-1D37F67FA6CD&displaylang=en
Introduction to Direct3D 10SIGGRAPH 2007 Course Notes
![Page 22: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/22.jpg)
Resources
www.opengl.org/registry/specs/ARB/geometry_shader4.txt
GL_ARB_geometry_shader4
![Page 23: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/23.jpg)
Resources
www.realtimerendering.com
Section 3.5
![Page 24: Introduction to Geometry Shaders Patrick Cozzi Analytical Graphics, Inc](https://reader031.vdocuments.mx/reader031/viewer/2022033018/56649d4b5503460f94a2800f/html5/thumbnails/24.jpg)
Resources
developer.nvidia.com/object/gpu_programming_guide.html
Section 4.6