笔记17 曲面细分与几何着色器

笔记17 曲面细分与几何着色器

铁名_IronName Lv4

曲面细分:Tessellation; 几何:Geometry

曲面细分着色器的应用

  • 海浪、雪地脚印等
  • 与置换贴图的结合
    曲面细分着色器可以根据距离或者其他规则,动态调整模型的复杂度,带来更好的性能。

几何着色器的应用

  • 几何动画
  • 草地等(与曲面细分着色器结合)

着色器执行顺序:读书笔记01《Unity Shader入门精要》 中的 GPU流水线

TESS 曲面细分

组成

曲面细分着色器由 Hull Shader(细分控制着色器),Tessellation Primitive Generator 和 Domain Shader(细分计算着色器)组成。

  • Hull Shader 用来定义一些细分的参数,比如在每一条边上如何细分,然后内部三角形如何细分。
  • Tessellation Primitive Generator 不可编程不可控制。
  • Domain Shader 把中心空间转换到我们要用的空间

输入与输出

  • 输入: Patch,可以看成是多个顶点的集合,包含每个顶点的属性,可以指定一个Patch包含的顶点数以及自己的属性
  • 功能: 将图元细分(可以是三角形,矩形等)
  • 输出: 细分后的顶点

流程

  • HULL Shader
    1.决定细分的数量 (设定Tessellation factor以及lnside Tessellation factor)
    2.对输入的 Patch 参数进行改变 (如果需要)
  • Tessellation Primitive Generation
    进行细分操作
  • Domain Shader
    对细分后的点进行处理,从重心空间 (Barycentric coordinate system) 转换到屏幕空间

HULL Shader 各参数解析

  • Tessellation Factor 决定将一条边分成几部分。有 equal_spacing, fractional_even_spacing, fractional_odd_spacing
  • Inner Tessellation Factor 分出内部的三角形/矩形

Demo 演示

(视频 08:00 开始,简单讲解了代码,略)

GS 几何着色器

输入与输出

  • 输入为图元(三角形,矩形,线等)根据图元的不同,shader中会出现对应不同数量的顶点
  • 输出同样为图元,一个或多个,需要自己从顶点构建,顺序很重要同时需要定义最大输出的顶点数

Demo 演示

基于三角形构建草地(视频 18:23 开始,略)

Oops!

看到评论区有人说视频讲得太表面了,建议看看 https://roystan.net/articles/grass-shader/

-作业-

根据今天课程内容,使用曲面细分和几何着色器做一些有意思的demo

想做麦田,先贴张游戏截图在这

  • 标题: 笔记17 曲面细分与几何着色器
  • 作者: 铁名_IronName
  • 创建于 : 2026-03-25 19:16:12
  • 更新于 : 2026-03-31 14:44:27
  • 链接: https://blog.ironname.top/2026/BRPlan/笔记17-技术美术百人计划/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论