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

Sti*_*ert 7 opengl math glsl

我在互联网上搜索了教程,实现和帮助.没有.

我唯一能找到的是广告牌着色器实现,它将mat4的左上角3x3矩阵设置为identity.这确实会丢弃旋转,但也有效地缩放.

有没有办法进行不丢弃(非均匀)缩放的广告牌?

注意:我不是在寻找任何人为我编程.只是我不能围绕具体细节.任何指向正确的方向都是受欢迎的.

Duc*_*tro 12

左上角3x3矩阵包含旋转,但也包含刻度.正如你所看到的那样,将3x3的上部核心核对.您需要先从3x3中提取比例来保留比例.3x3的每一列(作为矢量)通过获取每个列向量的大小来告诉您每个方向的比例.

如果您的4x4矩阵是

RSX   RSY   RSZ   T
0     0     0     1
Run Code Online (Sandbox Code Playgroud)

那么比例因子是

xScale = ||RSX||
yScale = ||RSY||
zScale = ||RSZ||
Run Code Online (Sandbox Code Playgroud)

保存这些,然后形成一个新的4x4矩阵做你已经做的事情,但也结合了规模.

xScale 0      0      xT
0      yScale 0      yT
0      0      zScale zT
0      0      0      1
Run Code Online (Sandbox Code Playgroud)