这条线到底做了什么
ra.rgb * ra.w / max(ra.r, 1e-4) * (bR.r / bR);
我感到困惑的部分是如何翻译
(bR.r / bR);
浮点数除以vec3? 我想将它转换为C ++,但是返回一个浮点除以向量的所有元素是什么?等
(无法访问显卡进行检查?)
答案 0 :(得分:4)
这是分量划分的一个例子,它的工作原理如下:
如果操作数中的基本类型不匹配,则应用 4.1.10 “隐式转换”部分中的转换来创建匹配类型。 [...]转换后,以下情况有效:
[...]
- 一个操作数是标量,另一个是矢量或矩阵。在这种情况下,标量操作独立应用于矢量或矩阵的每个分量,从而产生相同大小的矢量或矩阵。
vv vec3
(bR.r / bR);
^ float
标量bR.r
基本上被提升为vec3 (bR.r, bR.r, bR.r)
,然后执行分量划分,产生vec3 (bR.r/bR.r, bR.r/bR.g, bR.r/bR.b)
。
vec3 (1.0, bR.r/bR.g, bR.r/bR.b)