3.3 Tessellation Shader (TESS) & Geometry Shader(GS)

一、曲面细分着色器的应用

海浪,雪地等

与置换贴图的结合


二、几何着色器的应用

几何动画

草地等(与曲面着色器结合)


三、着色器执行顺序

1.TESS的输入与输出

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

2.TESS流程

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

3.HULL Shader各参数解析

  • Tessellation Factor
    • 决定将一条边分成几部分:
    • equal_spacing:将一条边等分,限制在[1,max],如果有小数则向上取整。
    • fractional_even_spacing:限制在[2,max],向上去最近的偶数。
    • fractional_odd_spacing:限制在[1, max -1]向上取最近的奇数,周长会被划分为n-2的等长部分,以及两个位于两端的部分(可能比中间部分更短)。具体长度与小数部分有关,为了获取更平滑的细分。
  • Inner Tessellation Factor

4.GS的输入与输出

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

视频代码


相关推荐
551只玄猫2 分钟前
KNN算法基础 机器学习基础1 python人工智能
人工智能·python·算法·机器学习·机器学习算法·knn·knn算法
charliejohn3 分钟前
计算机考研 408 数据结构 哈夫曼
数据结构·考研·算法
POLITE311 分钟前
Leetcode 41.缺失的第一个正数 JavaScript (Day 7)
javascript·算法·leetcode
CodeAmaz25 分钟前
一致性哈希与Redis哈希槽详解
redis·算法·哈希算法
POLITE31 小时前
Leetcode 42.接雨水 JavaScript (Day 3)
javascript·算法·leetcode
Tim_101 小时前
【算法专题训练】36、前缀树路径和
算法
好易学·数据结构1 小时前
可视化图解算法76:最大子数组和
数据结构·算法·leetcode·面试·动态规划·力扣·笔试
副露のmagic1 小时前
更弱智的算法学习 day13
学习·算法
青岛少儿编程-王老师2 小时前
CCF编程能力等级认证GESP—C++1级—20251227
java·c++·算法