RBG 值是 0-255 整数,那么为什么选择 float4 作为矢量数据类型呢?
在我看来,字节将是 Fuse 中颜色的理想数据类型。
在某些情况下,RGB 值只是 1 字节 (0-255) 值。有许多常用的色彩空间使用多于或少于 1 个字节来表示颜色(例如紧凑的 8 位和 16 位色彩空间,或每通道使用 16 位甚至 32 位的 HDR 色彩空间)。在处理图像和 GL 纹理时,这些不仅仅是理论上的用途。
重要的是,这些中的每一个都代表该通道的一系列值,从 0(无强度)到 1(全强度)。这就是float
使用的原因:它是表示标准化范围的正确语义类型。Fuse 的默认图形后端 OpenGL 也恰好是用来表示颜色的。
float
byte
与具有离散增量的 a 不同,它具有连续值的优点。这对于插值很重要。考虑两种颜色之间的动画,具有线性渐变、改变不透明度或降低饱和度;所有这些都需要在一个连续的值范围内完成,例如浮点数。
float
还允许值大约为 1 和低于 0。虽然这些不能反映在最终显示中,但它们在计算过程中发挥作用。如果您按顺序执行许多颜色操作,您不想过早地钳制您的值。
不要担心内存带宽或存储空间等问题。实际存储的颜色值仅占内存的一小部分。
此外,Fuse 还支持颜色符号的常见十六进制语法。您可以使用简单#FAA
的浅红色,或#AB74FD80
更精确的半透明颜色。
首先,我假设浮点数是指一个 4 字节的值。
我可能会继续前进,但你明白了。