法线和切线到达像素/片段着色器时如何仍然正交?

问题描述 投票:0回答:1

我凭直觉认为,如果您从两个正交向量线性内插到另外两个正交向量,则生成的两个向量也将彼此正交。我假设如果您有基轴X,Y,Z,并且它们是彼此正交的单位向量,则可以通过旋转进行插值,结果仍然是三个正交向量。显然是that's not case (question I asked on Mathematics Stack Exchange

因此,我无法平均切线和法线以创建平滑外观的计划。但是我只是想,当顶点着色器将值发送到片段/像素着色器时,它们被赋予“线性插值”值,对吗?意思是如果我有正交的法线和切向量,那么当它们到达片段/像素着色器时,它们将不再彼此正交,对吗?这不是问题吗?

graphics fragment-shader vertex-shader
1个回答
0
投票
  1. 法线和切线在插值后可能不正交

    这是因为插值是插值位置而不是角度。这意味着如果您线性插入位置,角度通常会非线性变化。因此,在大多数情况下,您插入的向量不再相互对应(起始值和结束值除外)。

  2. 平滑TBN

    这是可能的,但是您需要再次对向量进行正交化,例如:

    t = cross(b,n)
    b = cross(n,t)
    t=normalize(t);
    b=normalize(b);
    n=normalize(n);
    

    然而,在大多数情况下,非正交性并不意味着坏,并且东西可以工作也没有此步骤。

© www.soinside.com 2019 - 2024. All rights reserved.