学习笔记28(凹凸贴图,法线贴图,位移贴图)

为突出物体表面细节的三个贴图:bump/Normal 和 displacement

对于前俩其实本质上是差不多的,一个是存储高度差信息,一个是存储法线信息,就算是高度差,也是经过计算得到高度变化后的法线。总的来说他俩都是营造假的凹凸细节。

针对第三个就不一样了,他是真的对物体表面的顶点进行偏移。注意是顶点,像素是没办法偏移的,fragment出现的时候都是投影后的结果了,便宜肯定要在3D空间进行的,只能偏移后再投影,而投影之前没有fragment这一说,我们能够操控的就只有顶点,让顶点在3D空间下进行一个偏移。

下文所说的置换贴图应该就是displacement。

法线与置换贴图原理讲解以及烘焙制作! - 知乎 (zhihu.com)

所以说想要实现真正的凹凸,就要使用displacement的贴图,而这个贴图的实现是对顶点进行一个位置的偏移,如果说顶点比较稀疏,那么这个顶点偏移也无法带来比较好的凹凸效果。

而我们直接提供高精度的模型消耗有很大,所以动态细分就出现了,提供低模,低模进行细分来得到更多的顶点,再对这个顶点进行相应的偏移来得到真实的凹凸感效果。

这里还提到了雪地中的脚印,是可以使用曲面细分着色器来优化。

这里并不直接使用高精度的模型,而使用曲面细分,是因为这家伙会动脑子,他会根据距离和一些规则等信息来调整哪里需要细分,哪里不需要,哪里需要细分的精致,哪里需要需要粗略的细分。

Hull主要定义细分的参数:比如边上怎么细分,三角形内部如何细分。

Domin shader,由于我们细分的点是在重心空间,而我们要在这里把他给还原会原来的空间。

会有一个输入参数,patch,多个顶点的几何,同时会传进来一组属性,这个属性是这些顶点共用的,也就是针对这个patch的。

这个是交代,对于一条线如何分的,可以等分,也可以下面俩分法,没整明白。但是下面俩好像是为了更加平滑的过渡而存在的。

这个是内部添加三角形的时候,他是怎么添加的。

比如第一个,他这里如果指定了3,那么这里会把边分成3份(这个和上边的一条边分几份没关系,这个分三份是为了找到内部的点做的辅助点)

然后过该点的垂直线延长,两两垂直线找交点即可。

几何着色器就是输入图元,然后自己基于输入的图元顶点,构建出新的顶点或者沿用原图元的顶点,最后组合出一个新的图元输出。

猜你喜欢

转载自blog.csdn.net/yinianbaifaI/article/details/127702769