一、介绍
位于顶点着色器之后,输入的是图元数据,不但能够获取点、线、面之间的关系,还能够进行新增以及删除的动作。
二、使用规则
a、渲染目标限制
渲染目标最低为 4.0 :target 4.0
b、属性
maxvertexcount(number) //設定 Geometry Shader 的最大輸出頂點數
c、输入
point //点图元数据
line //线图元数据
lineadj //线图元数据,包含临近线图元数据
triangle //面图元数据
triangleleadj //面图元数据,包含临近面数据
d、输出
PointStream //点 stream 数据
LineStream //线 stream 数据
TriangleStream //面 stream 数据
e、Stream 方法
Append(struct) //新增 stream 数据
RestartStrip() //使用 TriangleStream 时,需要使用这个方法形成面图元数据
f、定义几何着色器
#pragma geometry MyGemometryProgram
g、设置输出的顶点数
[maxvertexcount(3)]
三、案例展示
DX 的解释
https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-geometry-shader
参考:
https://mp.weixin.qq.com/s/wutD7y7kGmu0t07Ph4EfhA
https://tedsieblog.wordpress.com/2019/04/09/unity-geometry-shader-cookbook/
https://github.com/ted10401/GeometryShaderCookbook
https://www.youtube.com/watch?v=7C-mA08mp8o
https://gamedevbill.com/geometry-shaders-in-urp/