Unity_ColorSpaceDouble解析

一般在混合细节贴图的时候会用到

这个值在Gamma Color Space时为2,在Linear Color Space时为4.594(2的2.2次方)。而透明通道在两个空间下都是2.

对于这个值可以这样来理解。一般在Gamma Color Space中将两个Color值相乘后,为了避免颜色变得很暗,会在后面乘以2。”

也就是说,为了避免颜色变暗,应该扩大两倍,但同时因为是在线性空间下,所以这个2要变成4.594。

 

例子:

纹理颜色:color = 0.8

细节贴图颜色:detailColor = 0.5(为什么细节贴图颜色是0.5,因为细节贴图是通过变亮或变暗改变纹理亮度,0.5恰好不改变亮度,大于0.5则增亮,小于0.5则变暗。细节纹理贴图往往用于产生细微的色彩偏移,所以这里以不改变亮度为例子)

当纹理贴图与细节贴图颜色融合的时候,即:color * detailColor,因为颜色值在0~1范围内,在Gamma空间下颜色相乘,亮度会降低一半,所以结果需要乘2才能的到正确结果。即:0.8 * 0.5 * 2 = 0.8

但是在Linear空间下读取纹理贴图颜色和细节贴图颜色的时候都会移除伽马矫正,读取到的颜色值:0.8 => 0.8 ^ 2.2 = 0.612,0.5 =>0.5^2.2 = 0.218  颜色值变小了,想要不改变原本的亮度,0.218需要转换回0.5才行,即0.218 * 0.5/0.218 = 0.5。所以融合之后不再是乘以2,而是乘以2 * 0.5 / 0.218 = 4.594

所以无论在伽马空间还是线性空间,融合之后只要乘Unity_ColorSpaceDouble就能得到正确结果。

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值