首页 > 其他分享 >3.3 Tessellation Shader (TESS) & Geometry Shader(GS)

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

时间:2023-10-25 19:07:40浏览次数:37  
标签:GS Tessellation Shader 细分 顶点 图元 着色器


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

海浪,雪地等

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_执行顺序

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_算法_02

与置换贴图的结合

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_执行顺序_03


二、几何着色器的应用

几何动画

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_执行顺序_04

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_执行顺序_05

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_执行顺序_06

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

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_执行顺序_07


三、着色器执行顺序

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_执行顺序_08

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],如果有小数则向上取整。

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_算法_09

  • fractional_even_spacing:限制在[2,max],向上去最近的偶数。

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

  • fractional_odd_spacing:限制在[1, max -1]向上取最近的奇数,周长会被划分为n-2的等长部分,以及两个位于两端的部分(可能比中间部分更短)。具体长度与小数部分有关,为了获取更平滑的细分。

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_着色器_11

  • Inner Tessellation Factor

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

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_算法_13

4.GS的输入与输出

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

视频代码

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_执行顺序_14

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

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

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

3.3 Tessellation Shader (TESS) & Geometry Shader(GS)_着色器_18


标签:GS,Tessellation,Shader,细分,顶点,图元,着色器
From: https://blog.51cto.com/u_136836/8023706

相关文章

  • VMware Aria Operations for Logs 8.14 发布下载 - 集中式日志管理
    VMwareAriaOperationsforLogs8.14发布下载-集中式日志管理请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-logs/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org集中式日志管理VMwareAriaOperationsforLogs(以前称为vRealizeLogI......
  • 使用logstash迁移遇到的错误(es同步到es)
    环境:OS:Centos7ES:6.8.5 问题1:[2023-10-25T09:29:53,892][INFO][logstash.outputs.elasticsearch]retryingfailedactionwithresponsecode:429({"type"=>"es_rejected_execution_exception","reason"=>"rejectedexecu......
  • Python贝叶斯MCMC:Metropolis-Hastings、Gibbs抽样、分层模型、收敛性评估
     全文链接:https://tecdat.cn/?p=33961原文出处:拓端数据部落公众号在常规的马尔可夫链模型中,我们通常感兴趣的是找到一个平衡分布。MCMC则是反过来思考——我们将平衡分布固定为后验分布:并寻找一种转移核,使其收敛到该平衡分布。岛屿示例首先提供一个示例,以具体展示Metropo......
  • pgsql create table,cpp fill psql table via the third party library pqxx
    //createtablet1;createtablet1(idbigserialnotnullprimarykey,authorvarchar(40)notnull,commentvarchar(40)notnull,contentvarchar(40)notnull,headervarchar(40)notnull,isbnvarchar(40)notnull,objectvarchar(40)notnull,summaryvarchar(40......
  • CF1887E Good Colorings
    矩形的四个角颜色不同是个很难描述的条件,不妨利用行列二元关系转化,将\((x,y)\)颜色为\(c\)改为在\(x\)和\(y\)之间连接边权为\(c\)的边,则四角颜色不同就被我们转化为了,存在一个边权各不相同的四元环。此时把特殊条件【初始给定\(2n\)个格子\(2n\)个不同颜色】放在......
  • unity shader入门精要第六章原理总结
    前言开发中常常有一些画面表现上的需求,但苦于不会写Shader,没办法实现,现在特地来学习相关原理知识。UnityShader入门精要的第六章前的内容已经很详尽了,在此不做记录。但第六章中的基础光照模型比较常见,这部分内容在GAMES101中也有讲解,可见其重要性,在此记录一下。标准光照模型(Bli......
  • C++常用语法知识-- std::istringstream
    C++常用语法知识--std::istringstream介绍std::istringstream是C++标准库中的一个类,它用于从字符串中提取数据,并将数据转换为不同的数据类型。通常从字符串中解析数据,例如整数、浮点数等。使用方法创建std::istringstream对象,首先,需要创建一个std::istringstream对象,将......
  • [924] f-strings in Python
    ref:f-stringsinPythonref:Python'sF-StringforStringInterpolationandFormattingF-strings,alsoknownasformattedstringliterals,areafeatureintroducedinPython3.6thatprovideaconciseandconvenientwaytoembedexpressionsinside......
  • MyBatis-Plus和shardingsphere一起用。子查询取别名读取不到的问题。
    https://github.com/baomidou/mybatis-plus/issues/2585在使用MP和Shardingsphere的某些版本中,可能会出现join子查询表取别名之后,在where中用这个别名报错 Cannotfindownerfromtable.//重点是外层SQL不要出现*,不要使用别名,需要的字段都写清楚(内外层sql都要写清楚),......
  • [论文速览] SimCSE@ Simple Contrastive Learning of Sentence Embeddings
    Pretitle:SimCSE:SimpleContrastiveLearningofSentenceEmbeddingsaccepted:EMNLP2021paper:https://arxiv.org/abs/2104.08821code:https://github.com/princeton-nlp/SimCSEref:https://zhuanlan.zhihu.com/p/368353121关键词:contrastivelearning,sentenc......