Tessellation - KlayGE游戏引擎 Skip to content

Archive

Tag: Tessellation
花了10分钟把ModelViewer中的GPU模型平滑处理从PN-Triangles改进成Phong Tessellation。平滑的效果很好,速度也提高了将近一倍。打开和关闭平滑模式的对比如下: [caption id="attachment_1450" align="aligncenter" width="600" caption="关闭Phong Tessellation的原始模式"][/caption] [caption id="attachment_1451" align="aligncenter" width="600" caption="打开Phong Tessellation的平滑模式"][/caption] 注意头部的棱角,打开Phong Tessellation后变成圆的了。 PN-Triangles需要在每个三角形patch的内部计算7个点的position和3个点的normal,并通过它们来二次插值出所有细分出来的顶点的position和normal。而Phong Tesse ...
上文介绍了D3D11的两个重要特性compute shader和multi-threaded,本篇专注于两个不能在D3D10硬件上使用的、纯D3D11的新特性tessellation和BC6H/BC7纹理压缩。 Tessellation 很 多人会说D3D11增加了tessellation shader这个stage,但真相是增加了hull shader、tessellator和domain shader三个stage。Hull shader的输入是patch的控制点(三角形、四边形这样的图元,最多有32个控制点),计算出tessellation等级、确定 tessellation的方法等。它的输出被送给固定单元的tessellation进行细分。Domain shader的输入是细分后的bary centric坐标、来自hull shader的控制点,它负责计算插值后的顶点坐标。 Tessellation早就存在于一些GPU。 D3D9 ...
花了几个小时吧Instanced Tessellation实现了一下,并集成到PNTriangle例子中了。这下在D3D10级别的显卡上也可以支持tessellation。Instanced Tessellation速度不错,蛮实用的。相关资料在:http://developer.download.nvidia.com/presentations/2008/GDC/Inst_Tess_Compatible.pdf。 目前还不支持Adaptive tessellation,所以每个三角形的细分级别都是一样的,对GPU来说是个负担。以后有空再做改进了。 细分5次以后的mesh相当密: 相比原先的mesh: