Unity Texture2D的sRGB(Color Texture)的作用

2023-10-22 11:59

本文主要是介绍Unity Texture2D的sRGB(Color Texture)的作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

https://blog.csdn.net/gaojinjingg/article/details/103504413

在gramma空间下,勾选与否无关。

在liner空间下,勾选shader会自动将读到的像素作gramma矫正,即x的0.45次方

不勾选,shader读到的就是原始的颜色值

 

然后unity如果选了gramma空间,会自动将输出颜色做一个伽马矫正,偏暗,相当于拍照对图片的自动处理。

 

透明通道的值不会受到伽马编码的影响,勾选与否都不会影响其线性值。值得注意的是ps里必须用这个取色

最近遇到两个色域空间所表现出来颜色不一样的问题。原理就请查其他作者的参考文章。总结如下

1. 当美术制作的图为8位时(256种颜色),颜色为经过Gamma骄正。 32位图时为真实颜色,表现为灰度值8位时为0.5. 32位时为0.2

   也就是说用8位图制作时为非线性空间。 32位时为线性空间.  

2.因为显示器最终都会进行一次display gamma骄正(将8位颜色值域转换成32位线性值),所以我们需要在GPU进行一次encoding gamma骄正(所有的颜色计算都转换到线性空间下进行计算)。这样输出的最终颜色值才最接近真实的颜色。

3. 个人电脑使用的一个标准叫sRGB,它使用的encoding gamma大约是0.45(也就是1/2.2)。这个值就是为了配合display gamma为2.5的设备工作的。这样,end-to-end gamma就是0.45 * 2.5 = 1.125了。 (注:sRGB(standard Red GreenBlue)通用色彩标准)

4.  当为unity选择gamma空间时, 代表不经过encoding gamma值矫正。 选择liner时,会将所有计算都放到线性空间下。

5. 当选择liner时,你的texture又是在32位线性空间下制作时,需要将texture的sRGB选项取消掉,不然untiy会再次将你的texture进行一次骄正,得到的颜色将不对.

6. 制作贴图时使用sRGB色域空间,并在unity中,将sRGB勾上

7. 当你想要通过shader手动矫正时代码:fragColor.rgb = pow(fragColor.rgb, 1.0/2.2);
————————————————
版权声明:本文为CSDN博主「Unity高锦锦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/gaojinjingg/article/details/103504413

这篇关于Unity Texture2D的sRGB(Color Texture)的作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/261312

相关文章

Java面试八股之JVM参数-XX:+UseCompressedOops的作用

JVM参数-XX:+UseCompressedOops的作用 JVM参数-XX:+UseCompressedOops的作用是启用对象指针压缩(Ordinary Object Pointers compression)。这一特性主要应用于64位的Java虚拟机中,目的是为了减少内存使用。在传统的64位系统中,对象引用(即指针)通常占用8字节(64位),而大部分应用程序实际上并不需要如此大的地址空间

【Unity Shader】片段着色器(Fragment Shader)的概念及其使用方法

在Unity和图形编程中,片段着色器(Fragment Shader)是渲染管线中的一个阶段,负责计算屏幕上每个像素(片段)的颜色和特性。片段着色器通常在顶点着色器和任何几何处理之后运行,是决定最终像素颜色的关键步骤。 Fragment Shader的概念: 像素处理:片段着色器处理经过顶点着色器和几何着色器处理后,映射到屏幕空间的像素。颜色计算:它计算每个像素的颜色值,这可能包括纹理采样、光

【Unity Shader】Alpha Blend(Alpha混合)的概念及其使用示例

在Unity和图形编程中,Alpha Blend(也称为Alpha混合)是一种用于处理像素透明度的技术。它允许像素与背景像素融合,从而实现透明或半透明的效果。Alpha Blend在渲染具有透明度的物体(如窗户、玻璃、水、雾等)时非常重要。 Alpha Blend的概念: Alpha值:Alpha值是一个介于0(完全透明)和1(完全不透明)的数值,用于表示像素的透明度。混合模式:Alpha B

Service在Android中的作用:技术难点、面试官关注点、回答吸引力与代码举例

在Android开发中,Service是一个重要的后台服务组件,它允许应用程序在后台执行长时间运行的操作,而无需与用户进行直接交互。Service在多种场景下发挥着关键作用,下面我们将从技术难点、面试官关注点、回答吸引力和代码举例四个方面,对Service的作用进行详细阐述。 一、技术难点 生命周期管理:Service的生命周期相对独立,与Activity和Fragment等组件不同。因此

#ifndef #define #endif 和 extern C的作用

ifndef #define #endif 防止头文件被重复引用 被重复引用”是指一个头文件在同一个cpp文件中被include了多次,这种错误常常是由于include嵌套造成的。比如:存在a.h文件#include "c.h"而此时b.cpp文件导入了#include “a.h” 和#include "c.h"此时就会造成c.h重复引用。 头文件被重复引用引起的后果: 有些头文件重复引用只是

Unity Meta Quest 开发:关闭 MR 应用的安全边界

社区链接: SpatialXR社区:完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 📕教程说明 这期教程我将介绍如何在应用中关闭 Quest 系统的安全边界。 视频讲解: https://www.bilibili.com/video/BV1Gm42157Zi 在 Unity 中导入 Meta XR SDK,进行环境配置后,打开 Assets > Plugins > An

linux关于epoll概述(各项组成,以及作用)

在 Linux 中,多个进程可以各自创建自己的 epoll 对象,每个进程都有独立的 epoll 实例,即拥有独立的 eventpoll 结构体和相关的数据结构(如红黑树、就绪列表等)。 当一个进程调用 epoll_create 函数时,Linux 内核会为该进程创建一个 eventpoll 对象。这个对象用于管理该进程所关注的文件描述符及其相关事件。 每个进程通过 epoll_ctl 函数向

ThreadLock 项目中的作用

ThreadLock 为本地线程,为每一个线程提供一个局部变量,也就是说只有当前线层可以访问,是线程安全的。原理:为每一个线程分配一个对象来工作,并不是由ThreadLock 来完成的,而是需要在应用层面保证的,ThreadLock 只是起到了一个容器的作用。原理为ThreadLock 的 set()跟 get()方法。 具体实现代码 public void set(T value)

深度学习常见概念解释(四)——损失函数定义,作用与种类(附公式和代码)

损失函数 前言定义作用种类1. 均方误差损失(Mean Squared Error Loss,MSE)公式特点和优点缺点使用场景示例代码在机器学习框架中的使用总结 2. 交叉熵损失(Cross-Entropy Loss)公式特点和优点使用场景示例代码在机器学习框架中的使用总结 总结 前言 在机器学习和深度学习中,损失函数(Loss Function)起着至关重要的作用。它是模型

web工程中的web.xml文件有什么作用呢?

eb工程中的web.xml文件有什么作用呢?它是每个web.xml工程都必须的吗? 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。 那什么时候需要,什么时候可以不需要呢? 要想回答上面的问题,得先了解web.xml文件使用来干什么的。web.xml文件是用来配置:欢迎页、servlet、filter等的。当你的web工程没用到这些时,你可以