几何着色器


一、介绍

位于顶点着色器之后,输入的是图元数据,不但能够获取点、线、面之间的关系,还能够进行新增以及删除的动作。

image-20211025102945956

二、使用规则

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)]

三、案例展示

image-20211025104918692 image-20211025105041109 image-20211025105052631 image-20211025105113846 image-20211025105125945 image-20211025105138318

DX 的解释

https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-geometry-shader

image-20211221154920509 image-20211221154944473

参考:

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/

https://www.youtube.com/watch?v=beSRCSRS6mI

https://github.com/keijiro/StandardGeometryShader


文章作者: 血魂S
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 血魂S !
  目录