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中会出现对应不同数量的顶点。
  • 输出同样为图元,一个或多个,徐亚自己从顶点构建,顺序很重要同时需要定义最大输出的顶点数。

视频代码


相关推荐
十雾九晴丶33 分钟前
攻防世界--->gametime
算法
Aurora_th1 小时前
树与图的深度优先遍历(dfs的图论中的应用)
c++·算法·深度优先·图论·dfs·树的直径
马剑威(威哥爱编程)3 小时前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
算法萌新——13 小时前
洛谷P2240——贪心算法
算法·贪心算法
湖北二师的咸鱼3 小时前
专题:二叉树递归遍历
算法·深度优先
重生之我要进大厂4 小时前
LeetCode 876
java·开发语言·数据结构·算法·leetcode
KBDYD10104 小时前
C语言--结构体变量和数组的定义、初始化、赋值
c语言·开发语言·数据结构·算法
Crossoads5 小时前
【数据结构】排序算法---桶排序
c语言·开发语言·数据结构·算法·排序算法
自身就是太阳5 小时前
2024蓝桥杯省B好题分析
算法·职场和发展·蓝桥杯
孙小二写代码5 小时前
[leetcode刷题]面试经典150题之1合并两个有序数组(简单)
算法·leetcode·面试