可能是一个愚蠢的问题,但是我无法find(或者不理解) 规范或其他问题(例如, 这个问题)的结论性答案。
对于平滑插值的变化vec
和mat
顶点着色器输出/片段着色器input,是单独插入vector还是matrix的每个元素?
GL规格秒。 13.5.1(剪切)描述了“与顶点相关的输出值”的线性剪辑空间插值。 它还说,这些是vector的组成部分,但没有提到matrix。
同样,秒。 14.5.1(光栅化行)和14.6(光栅化多边形)描述了“片段的相关数据f ”的插值。 vector或matrix的每个元素是否被视为单独的“相关数据”,并且是独立于vector或matrix的其他元素进行插值的?
秒。 11.1.3.10(着色器输出)和15.1(片段着色器variables)提到插值,但是在其他地方提到细节。
同样,在GLSL规范中 ,sec。 4.5(插值限定符)说,插值发生,但不区分标量和多分量variables。
我正在寻找关于如何插入vec
和mat
s的明确声明,如果有的话。 或者让我知道如果没有! 谢谢!
(注意:答案可以是任何OpenGL版本。)
TL; DR:是的,这是组件式的。
正如你所说,GLSL规范有计算“与片段相关的数据”的公式,就像这样:
GLSL 330规格:3.5.1基本线段栅格化
该片段的关联数据
f
的值,无论是变化着色器输出还是剪辑w
坐标,都可以find(1- t )· f a / w a + t·f b / w b f = ------------------------(3.6) (1- t )/ w a + t / w b其中
f a
和f b
分别是与段的起始和终止端点相关的数据;w a
和w b
分别是段的开始和结束端点的剪辑w
坐标。
“数据”是指整个向量/matrix还是单独的分量可能并不完全清楚,但重点在于它并不重要,因为标量和向量/matrix之间的乘法和除法是以分量方式定义的。