5.3.1 颜色操作

来源:互联网 发布:淘宝上的尤尼克斯 编辑:程序博客网 时间:2024/06/05 08:45

一些矢量操作也适用于颜色矢量。例如,我们可以添加颜色矢量,以获得新的颜色:

(0.0, 0.5, 0) + (0, 0.0, 0.25) = (0.0, 0.5, 0.25)

通过结合中等强度绿色和低强度的蓝色,我们得到深绿色的颜色。

颜色也可以被减去,以获得新的颜色:

(1, 1, 1) – (1, 1, 0) = (0, 0, 1)

也就是说,我们开始是白色,减去红色和绿色部分,我们最后获得蓝色。

标量乘法也是如此。考虑以下情况:

0.5 (1, 1, 1) = (0.5, 0.5, 0.5)

也就是说,我们开始以白色与0.5相乘,我们最终获得中等阴影的灰色。另一方面,操作2(0.25,0,0)=(0.5,0,0)两倍于红色分量的强度。

显然,像点积和叉积表达式对颜色矢量没有任何意义。然而,颜色矢量可以得到自己的特殊颜色操作被称为调制或分量共乘。它被定义为:

modulation-multiplicatuin

这种操作主要用于光照方程。例如,假设我们有入射光线的颜色(r,g,b),当它撞击表面,反射50%红光,75%绿光和25%蓝光,并吸收其余部分。则颜色反射光线由下式给出:

(r, g, b) ⊗ (0.5, 0.75, 0.25) = (0.5r, 0.75g, 0.25b)

因此,我们可以从表面上看到,光线失去了一些强度,是由于表面吸收一些光。

在进行颜色运算时,有可能是你的颜色成分在[0,1]区间之外;考虑方程:(1,0.1,0.6)+(0,0.3,0.5)=(1,0.4,1.1),例如。由于1.0表示一个颜色成分的最大强度,你不能变得比它更加强烈。因此,1.1和1.0一样强烈。所以我们要做的就是使1.1→1.0。同样,显示器无法发出负光,所以任何负光(这可能会从减法运算导致)应锁定为0.0。

本文固定链接:http://www.oxox.work/web/directx11/color-operations/ | 虚幻大学

0 0
原创粉丝点击