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

标签 math opengl glsl

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

我唯一能找到的是将 mat4 的左上角 3x3 矩阵设置为标识的广告牌着色器实现。这确实丢弃了旋转,但实际上也丢弃了缩放。

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

注:我不是在寻找任何人为我做我的编程。只是我无法理解细节。欢迎任何指向正确方向的指针。

最佳答案

左上角的 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

关于math - GLSL |广告牌着色器,保持缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15937842/

相关文章:

algorithm - 如何从三个点计算角度?

javascript - Math.pow() 出现错误

c++ - C++ 中的 BigNum 代码

java - 添加数组的元素直到它达到一个值,当达到该值时找到索引

c++ - 延迟着色、存储位置或从深度构造它

c++ - OpenGL 相机位置和天空盒

opengl - OpenGL 文件 glew.h 和 gl.h/glu.h 之间的区别

c++ - 没有有用信息的 GLSL 链接失败

opengl - glStencilFunc中mask参数的作用是什么

glsl - Vulkan 是否支持着色器中的原子浮点操作?