GLSL | 广告牌着色器,保持缩放

7
我已经在互联网上搜索了教程、实现和帮助,但都没有找到相关内容。
我唯一能找到的是广告牌着色器实现,它将mat4的左上角3x3矩阵设置为单位矩阵。这确实舍弃了旋转,但也有效地舍弃了缩放。
有没有一种方法可以进行广告牌渲染而不会丢失(非均匀)缩放?
注意:我并不是要求别人替我编程。只是我无法理解具体细节。欢迎提供任何指向正确方向的指针。
1个回答

12

左上角的3x3矩阵包含旋转和缩放信息。正如您所见,删除上面的3x3矩阵也会删除缩放信息。为了保留缩放信息,您需要先从3x3矩阵中提取缩放信息。将3x3矩阵中的每一列视为一个向量,通过计算每一列向量的大小可以得到每个方向上的缩放信息。

如果您的4x4矩阵为:

RSX   RSY   RSZ   T
0     0     0     1

然后,比例因子是:
xScale = ||RSX||
yScale = ||RSY||
zScale = ||RSZ||

保存这些内容,然后形成一个新的4x4矩阵,继续做你已经在做的事情,同时还要考虑缩放。

xScale 0      0      xT
0      yScale 0      yT
0      0      zScale zT
0      0      0      1

运行得非常好!错过了检索比例因子的步骤。 - Stijn Frishert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接