小议Vertex的传出到fragment的输入的变化
发表于2018-06-03
问题:
我们在vertex里面,一般会把模型的顶点坐标进行相应的计算(如转换到投影坐标系),以及计算好与光影效果相关的向量,然后在fragment里面用这些值做相应的运算。但是,fragment用到的值却并不是vertex直接传过来的。
讨论:
首先,看一下这张图。(此图来自于网络)
渲染一个三角形可能会用到多个片段,比如三角形的中心的片元,用的数据是哪个呢?毕竟一个三角形只有3个顶点。
实际上,数据在输入到具体的某个片段会被插值运算。下图为法线的变化。
意义:
这样做的意义何在呢?试想,你想做个表面光滑的杯子,如果片段用的值是上面某个具体顶点的值,那算光照的时候会非常不准确。而片段的输入采用插值的做法,将很大程度省掉面数。