前置:https://blog.csdn.net/Jaihk662/article/details/107879539

一、Gamma 理论总结

在讲解这篇文章之前,需要先了解什么是 Gamma 空间和线性空间,也就是前置里的内容

当然这里也可以进行一个总结:

  • 显示器的输出在 Gamma2.2 空间,这对应着 
  • 伽马校正即是将颜色转换到 Gamma0.45 空间(sRGB对应的空间),对应 ,伽马校正和显示器输出平衡之后,正好结果就是 Gamma1.0 的线性空间
  • 所有的输入,计算和输出都统一在线性空间中,才能得到最真实的效果。但是这没有错和对,哪怕你不统一空间,能得到一个还算可以的效果也是没有问题的,甚至还更省性能

计算和输出都统一在线性空间的过程

关于 Linear Texture 和 sRGB Texture

我们拿到的一手纹理,哪些是线性空间(Gamma1.0)下的,又有那些是 sRGB(Gamma0.45) 空间下的呢?

  • 一般可以确定美术输出资源时都是在 sRGB(Gamma0.45)空间的,例如漫反射纹理、环境光纹理等:这些 RGB 通道直接作为颜色参考的,需要人眼参与被创作出来的纹理
  • 而电脑计算出来的程序纹理则是在线性空间(Gamma1.0)中的,例如噪声纹理、法线纹理等

如何告诉 Unity 这个纹理是否处于线性空间

如果你设置了特殊的 Texture Type,例如 Normal Map 和 Light Map,那么 Unity 就会知道这张纹理是线性空间下的,否则需要留意这个属性:

勾上之后,Unity 就会知道这张纹理是在 sRGB 空间下的了,所以对于噪声纹理、Mask 纹理这些就千万不要勾

二、Unity 中的色彩空间(Color Space)

在 Project Settings 里可以告诉 Unity 你使用的空间

  • Gamma:Unity 不会对输入和输出做任何处理
  • Linear:Unity 会自动帮你做统一线性空间的流程,对于 sRGB 纹理,Unity 在进行纹理采样之前(传递到着色器时)会自动进行 Gamma 矫正移除,对于 Linear 纹理则没有这一步;而在输出前,Unity 也会自动进行 Gamma 矫正。除此之外,Shaderlab 中的颜色输入也会被认为是 sRGB 颜色,从而自动进行 Gamma 矫正移除

需要注意的是:对于 Android 系统,Linear 只在 OpenGL ES 3.0 和 Android 4.3 以上支持,IOS 则只有 Metal 才支持

[Gamma] 前缀

[Gamma] _Metallic("Metallic", Range(0, 1)) = 0

Shaderlab 属性(Properties) 前面使用 [Gamma] 标注,可以让一个 Float 变量也进行 Gamma 矫正移除,前提是告诉 Unity 你使用 Linear 空间

参考文章:

  • https://docs.unity3d.com/cn/2018.4/Manual/SL-Properties.html
  • https://docs.unity3d.com/cn/2018.4/Manual/SL-PropertiesInPrograms.html
  • https://docs.unity3d.com/cn/2018.4/Manual/LinearRendering-LinearOrGammaWorkflow.html
  • https://zhuanlan.zhihu.com/p/66558476

UnityShader31:Gamma相关推荐

  1. Python使用sklearn构建广义线性模型:gamma回归(Gamma regression)实战

    Python使用sklearn构建广义线性模型:gamma回归(Gamma regression)实战 目录 Python使用sklearn构建广义线性模型:gamma回归(Gamma regress ...

  2. ISP算法:gamma矫正

    Gamma矫正:在视频系统,线性光Intensity通过Gamma校正转换为非线性的视频信号,通常在摄像过程内完成. 矫正原因:

  3. c语言产生gamma 分布的随机数,笔记:Gamma 分布的转化

    Gamma 分布 α 和β 均大于零,且令λ=1/β,假设 X 的密度满足: 就说 X 是服从参数为 (β,α) 的 Gamma 分布,记为Γ(β,α).Gamma 分布的两个参数中,第一个β 决定了 ...

  4. opencv:Gamma校正

    // 链接 https://blog.csdn.net/linqianbi/article/details/78617615 // Gamma 校正 #include <iostream> ...

  5. OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换

    OpenCV与图像处理学习五--图像滤波与增强:线性.非线性滤波.直方图均衡化与Gamma变换 三.图像滤波与增强 3.1 线性滤波 3.1.1 方框滤波 3.1.2 均值滤波 3.1.3 高斯滤波 ...

  6. MCS:连续随机变量——Gamma分布

    Gamma分布     Gamma分布几乎跟Erlang分布一样,唯一的区别是参数kkk,在Gamma分布中kkk可以是大于0的任意值. Gamma分布的概率密度函数: f(x)=xk−1θke−θx ...

  7. OpenCV 【十】——Gamma校正 ——图像灰度变化

    Gamma校正(C++.OpenCV实现) 1.作用: Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系: 伽玛校正由以下幂律表达式定义: 2.函数原型 v ...

  8. 剖析Focal Loss损失函数: 消除类别不平衡+挖掘难分样本 | CSDN博文精选

    作者 | 图像所浩南哥 来源 | CSDN博客 论文名称:< Focal Loss for Dense Object Detection > 论文下载:https://arxiv.org/ ...

  9. 有必要总结一下:matlab图像灰度调整——imadjust函数的使用

    参考:https://blog.csdn.net/Ibelievesunshine/article/details/79958899 在MATLAB中,通过函数imadjust是一个计算机函数,该函数 ...

最新文章

  1. 青少年电子信息智能创新大赛 -- 图形化编程挑战赛初赛试题说明
  2. pytorch中的torch.tensor.repeat以及torch.tensor.expand用法
  3. bg和fg指令(整理)以及 Linux中Ctrl+C、Ctrl+D等按键操作进程相关命令
  4. html表单提交后怎么发送邮箱,Dreamweaver中用表单制作了留言板,如何将内容提交后发到指定邮箱?...
  5. 怎么将SVG转成PNG(.NET工具包编写)
  6. java 最小生成树_图的最小生成树(java实现)
  7. linux搭建虚拟化平台报告,CentOS 7中搭建KVM虚拟化平台的方法步骤
  8. cs0246未能找到类型或命名空间名_实用小工具之整理标题及数据类型
  9. Jupyter Notebook——如何快速地以当前文件夹目录打开 Jupyter Notebook
  10. 如何使用QoS管理分配存储IOPS?
  11. 中心/设置地图缩放以覆盖所有可见的标记?
  12. 插件使用 之 Bmap
  13. 资产负债表 公式总结
  14. 20190612每日一句
  15. 最新最全的 SQL 入门教程,老少皆宜,强烈推荐!
  16. 计算机制图作品答辩,工程制图(第一章)答辩.ppt
  17. 【渝粤题库】广东开放大学 电算化会计 形成性考核
  18. php mongodb方法,PHP 操作mongodb api大部分方法
  19. 堆外缓存OHCache使用总结
  20. python3实现阿拉伯数字和中文数字转换

热门文章

  1. python骗局-我终于在生活中用到Python了!!!——用爬虫来揭露骗局真相
  2. python读音检测-python – 一个音符的录音音频会产生多个发音时间
  3. python从入门到精通pdf百度云-跟老齐学Python:从入门到精通 完整版PDF[7MB]
  4. python是什么专业学的-什么样的人适合学Python,应该怎么学?
  5. 哈弗F7x驾舱数字化测试 语音识别精准
  6. 输入法黑科技:语音识别准确率98% 用户超过6亿
  7. kafka安装使用说明
  8. CodeForces round 753 problem B Odd Grasshopper(奇怪的蚱蜢)
  9. ITU-T Technical Paper: QoS 的参数(非常的全,共计88个)
  10. python中唯一的映射类型是什么_Python基础类型之字典(dict)