Unity Linear Gamma色彩空间矫正测试
Gamma和Linear修正的问题相信网上已经有很多文章了。简单来说显示器的颜色输出不是线性的,根据硬件参数和输出颜色
信息拟合曲线是x^2.2,因此会使用一个x^0.45曲线将其拟合回线性。
因为0.5^0.45 = 0.73,0.5^2.2 = 0.217,我们可以通过一张0.5rgb的灰度图放Unity中观察变亮还是变暗
来判断Unity在线性空间下做了哪些操作,以及参数配置是否正确。
这里进入URP渲染管线,并设置为Linear线性颜色空间进行测试:
测试1:一张图片在ps里制作成(127,127,127)的纯色,导入Unity。不勾选sRGB,输出颜色较亮,勾选sRGB,输出颜色正常
结论:最终颜色输出时可能有gamma0.45处理。
测试2:frag里输出颜色为0.5,该shader最终屏幕输出时,输出颜色较亮
结论:进一步确定输出时有gamma0.45(pow(x,0.45))的处理。
测试3:增加一个UV偏移的shader参数值,在Gamma颜色空间和Linear颜色空间下切换查看,无区别
结论:颜色空间的修正处理类似滤镜,而正常传入Shader的字段数值不会做编解码,不参与显示相关的数值也不用做
纠正。
测试4:增加一个float类型的shader字段,直接输出在frag里,并将参数值设为0.5。输出颜色较亮,
而给参数加上[Gamma]前缀,输出时颜色正常。
结论:因为最终输出时屏幕会有一步gamma0.45处理,所以给常规参数追加一个gamma2.2处理,
这样输出就是原始颜色了(加上[Gamma]相当于pow(x,2.2))。
测试5(重要):Unity Linear颜色空间,一张Alpha0.5的纯黑图片,叠在白色背景上,但混合结果颜色并不是0.5的灰色。
尝试加pow(2.2)手动修复,然后换成Alpha0.5的白色图片,叠纯黑背景上。发现仅是对Alpha值修改在混合处理上没有用。
结论:首先明确一点Alpha通道不会进行sRGB矫正。但是Alpha值虽然没问题,Unity的混合处理却有问题。gamma0.45的修正是处理在
混合完成的结果上的,你并不知道混合结果的颜色是来自黑色叠白色,还是白色叠黑色,或是其他颜色相叠。
内建管线下可以创建Gamma RenderTexture,也就是sRGB为true的RT。但URP下似乎有些失效,所以这个问题博主自己目前还没解决。
虽然单改Alpha值没用,但我还是研究出了一个基于经验的公式,通过读取当前颜色和修改Alpha;做到了一部分还原:
float whiteAlpha = pow(color.a, 2.2);
float blackAlpha = 1.0 - pow((1-color.a), 2.2);
float lum = max(color.b, max(color.r, color.g));
color.a = lerp(blackAlpha, whiteAlpha, lum);
color.rgb *= color.a;
若要求不高又不想扩展管线,也可以试试。
最后总结下:
不用于图像输出的图片,如噪波,就不需要勾选sRGB(不勾选sRGB也叫做保持Linear)。不用于图像输出的shader字段,如UV偏移值
就不用处理。用于图像输出的shader字段,需要加[Gamma]前缀或者手动调用Gamma22ToLinear。
同样,用于显示输出的图像如果中途要进行逻辑计算,需要调用LinearToGamma22转回原始数值。
例如一些手游项目会合并多张贴图到一张,这就导致了Linear和sRGB混在一张图片内,这时候就需要代码里手动去转了。
Unity Linear Gamma色彩空间矫正测试的更多相关文章
- 聊聊Unity的Gamma校正以及线性工作流
0x00 前言的前言 这篇小文其实是在清明节前后起的头,不过后来一度搁笔.一直到这周末才又想起来起的这个头还没有写完,所以还是直接用一个月前的开头,再将过程和结尾补齐. 0x01 前言 结束了在南方一 ...
- unity linear work flow
看了下unity linear space的工作流 srgb read tex deferred gbuffer01 srgb rt float rt----pps float rt 最后 blit ...
- 实验 Unity Linear Color Space 发现结果不符合预期
美术前上个礼拜找我问光照图总是烘焙过暗的问题,一时兴起我在 Gamma 和 Linear 两个颜色空间切换了下,发现一个 Shader 明暗不同,另一个 毫无变化,于是激发了我去研究下在 Unity ...
- 浅谈unity中gamma空间和线性空间
转载请标明出处:http://www.cnblogs.com/zblade/ 一.概述 很久没有写文章了,今天写一篇对gamma空间和线性空间的个人理解总结,在查阅和学习了各个资料后,算是一个个人笔记 ...
- Unity导出iOS真机测试教程
原地址:http://unity3d.9tech.cn/news/2014/0410/40177.html 学 习了两天的Android开发,我感觉Android开发跟IOS开发和.NET平台下的开发 ...
- unity - ios打包真机测试及模拟器测试
本文介绍unity游戏如何在iphone机和ios模拟器上进行测试打包 准备工作:mac电脑一台.iphone一部.连接mac和iPhone的数据线.unity.Xcode.苹果开发者账号. 苹果开发 ...
- 关于Unity中混合模式、Alpha测试、深度测试、通道遮罩、面剔除的使用----渲染通道通用指令(二)
混合模式 着色完成后,需要把颜色混合到帧缓冲区里面,涉及到源和目标. 1:在所有计算完成后,决定当前的计算结果输出到帧缓冲区时,如何混合源和目标,通常用来绘制半透明的物体;2: Blend Off 关 ...
- unity linear space时 photoshop blend的正确设置
gamma correction的dcc设置 ps在线性空间下工作 blend的时候颜色设置 勾选用灰度系数混合rgb 1.0 这样就是在线性空间下工作了 这样素材在数学上是正确的 r8g8b8a8格 ...
- Unity碰撞器触发关系测试
本文刚体有关的内容不再赘述,主要测试碰撞器和触发器的消息关系. 刚体在这篇有测试:U3D刚体测试1-刚体非刚体物体非Kinematic等之间的碰撞关系 碰撞器测试结果: 1.A对象为Collider, ...
- 【Unity原神AR开发实战 2022】下载原神模型,PMX转FBX,导入到Unity,AR设置,测试应用程序,生成应用程序
文章目录 一.前言 二.模型下载 1.官网下载 2.模之屋官方下载 3.第三方链接 三.pmx转fbx 1.Blender插件CATS的下载与安装 2.pmx模型的导入 四.Unity开发部分 1.V ...
随机推荐
- MySQL和Oracle里面SQL转换
oracle环境有关sql的注意事项 比较特殊的: 1. 原有 MySQL字段设置为 not null default '' 原因: ORACLE 数据库 不允许存空字符串, 认为它跟null是一样的 ...
- 为什么 L1 正则化能做特征选择而 L2 正则化不能
假设我们的模型只有一个参数 \(w\),损失函数为 \(L(w)\),加入 L1 和 L2 正则化后的损失函数分别记为 \(J_1(w), J_2(w)\): \[\begin{gathered} J ...
- Go 语言基础:包、函数、语句和注释解析
一个 Go 文件包含以下几个部分: 包声明 导入包 函数 语句和表达式 看下面的代码,更好地理解它: 例子 package main import "fmt" func main( ...
- Windows下Net6开源akstream项目vs2022调试GB28181协议对接摄像头全流程
一.背景介绍 笔者经历多个项目对接摄像头需求,不同项目具体要求又有所不同,碰到的摄像头对接开发问题,整理记录.此篇主要用于记录备用及给有缘人提供解决思路等. 1. 同一局域网对接(海康摄像头),如 ...
- MogDB 使用样本数据集Mogila
MogDB 使用样本数据集 Mogila MogDB 提供了一个样本数据集 Mogila,本数据集借鉴了适用于 MySQL 的Sakila 示例数据库.Sakila最初由 MySQL AB 文档团队的 ...
- TypeScript 中类的理解?应用场景?
一.是什么 类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础 ❝ 类是一种用户定义的引用数据类型,也称类类型 ❞ 传统的面向对象语 ...
- Node中的EventEmitter? 如何实现一个EventEmitter?
一.是什么 我们了解到,Node采用了事件驱动机制,而EventEmitter就是Node实现事件驱动的基础 在EventEmitter的基础上,Node几乎所有的模块都继承了这个类,这些模块拥有了自 ...
- 阿里云云原生加速器企业硬之城携手阿里云 Serverless 应用引擎(SAE)打造低代码平台
简介: 作为入选阿里云首期云原生加速器的企业,硬之城此前也获得了阿里云首批产品生态集成认证,通过云原生加速器项目携手阿里云共建更加丰富的云原生产业生态圈,加速云原生落地. 作者 | 陈泽涛(硬之城产品 ...
- 走进RDS|说说关系型数据库与Serverless
简介:看到如今Serverless在云计算行业喷薄欲出的态势,像极了<星星之火,可以燎原>中的描述:虽然不能预测未来的发展和变化,但对于云计算来说这是个相对确定的方向.本文将和大家说说关 ...
- Arthas 初探--安装初步适用
简介: 由于在项目中遇到一种情况,某段代码在进行单元测试和在 tomcat 容器中运行的性能相差数百倍,因此需要分析在不同环境下某个方法执行的具体时间,从而确定问题.Arthas 可以做到无侵入的监控 ...