Color Correction (颜色校正)

这篇具有很好参考价值的文章主要介绍了Color Correction (颜色校正)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

介绍

在Unity中,Color Correction (颜色校正) 是一种用于调整场景或游戏画面颜色的技术。其中,Curves(曲线)和Saturation(饱和度)是常用的Color Correction工具。通过Curves,可以对RGB通道进行非线性调整,从而影响画面的色调和对比度。而Saturation用于调整画面的饱和度,使颜色更加鲜艳或淡化。

方法

Curves(曲线)

在Unity中,Curves用于调整RGB通道的曲线,其参数如下:

  • Input Range(输入范围):指定输入的像素范围。通常是0到1,但也可以是其他范围。
  • Output Range(输出范围):指定输出的像素范围。通常是0到1,但也可以是其他范围。
  • Curve(曲线):通过调整曲线上的点来改变像素的颜色值。可以在曲线上增加或减少点,以创建不同的颜色映射。

Saturation(饱和度)

在Unity中,Saturation用于调整画面的饱和度,其参数如下:

  • Saturation(饱和度):设置饱和度的值。0表示完全灰度(黑白),1表示原始饱和度,大于1增加饱和度,小于1减少饱和度。

举例子

Curves(曲线)例子

1. 增加对比度

using UnityEngine;

public class ColorCorrectionExample : MonoBehaviour
{
    public AnimationCurve redCurve;
    public AnimationCurve greenCurve;
    public AnimationCurve blueCurve;

    private Material material;

    private void Awake()
    {
        material = new Material(Shader.Find("Custom/ColorCorrection"));
    }

    private void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        material.SetTexture("_MainTex", source);
        material.SetFloatArray("_RedCurve", redCurve.keys.Select(key => key.value).ToArray());
        material.SetFloatArray("_GreenCurve", greenCurve.keys.Select(key => key.value).ToArray());
        material.SetFloatArray("_BlueCurve", blueCurve.keys.Select(key => key.value).ToArray());
        Graphics.Blit(source, destination, material);
    }
}

2. 创建色调效果

using UnityEngine;

public class ColorCorrectionExample : MonoBehaviour
{
    public AnimationCurve redCurve;
    public AnimationCurve greenCurve;
    public AnimationCurve blueCurve;

    private Material material;

    private void Awake()
    {
        material = new Material(Shader.Find("Custom/ColorCorrection"));
    }

    private void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        material.SetTexture("_MainTex", source);
        material.SetFloatArray("_RedCurve", redCurve.keys.Select(key => Mathf.Sin(key.value)).ToArray());
        material.SetFloatArray("_GreenCurve", greenCurve.keys.Select(key => Mathf.Cos(key.value)).ToArray());
        material.SetFloatArray("_BlueCurve", blueCurve.keys.Select(key => Mathf.Tan(key.value)).ToArray());
        Graphics.Blit(source, destination, material);
    }
}

Saturation(饱和度)例子

1. 提高饱和度

using UnityEngine;

public class SaturationExample : MonoBehaviour
{
    [Range(0f, 2f)]
    public float saturationValue = 1f;

    private Material material;

    private void Awake()
    {
        material = new Material(Shader.Find("Custom/Saturation"));
    }

    private void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        material.SetTexture("_MainTex", source);
        material.SetFloat("_Saturation", saturationValue);
        Graphics.Blit(source, destination, material);
    }
}

2. 减少饱和度

using UnityEngine;

public class SaturationExample : MonoBehaviour
{
    [Range(0f, 2f)]
    public float saturationValue = 1f;

    private Material material;

    private void Awake()
    {
        material = new Material(Shader.Find("Custom/Saturation"));
    }

    private void OnRenderImage(RenderTexture source, RenderTexture destination)
    {
        material.SetTexture("_MainTex", source);
        material.SetFloat("_Saturation", 1f / saturationValue);
        Graphics.Blit(source, destination, material);
    }
}

以上代码中使用了自定义的Shader(Custom/ColorCorrection和Custom/Saturation)来进行颜色校正操作。这里我们只是提供了简单的例子来演示如何使用Curves和Saturation来调整颜色,实际上可以通过调整曲线和参数来实现更复杂的颜色效果。文章来源地址https://www.toymoban.com/news/detail-622074.html

到了这里,关于Color Correction (颜色校正)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity一张图带你看懂Button的各种颜色设定(HighLighted、Pressed、Selected、Disabled Color)

    button会有个基础颜色,建议设定为白色,因为这个基础颜色会和后续的颜色产生一个叠加效果。 NormalColor 基础时候的颜色 HighLightedColor 当鼠标放上去时显示的颜色 Pressed Color 当鼠标按下,但是不松开时的颜色, Selected color 当鼠标按下后,选中该按钮的颜色 DisabledColor,当该按

    2024年02月11日
    浏览(48)
  • 计算机视觉颜色校正方法

    调色是指通过调整图像的色调、饱和度和亮度等参数来改变图像的整体颜色效果。这种调整可以是主观的,根据个人或艺术家的审美意图进行。调色通常用于图像处理、摄影和电影制作等领域,以达到特定的视觉效果或情感表达。 色彩校正(Color Correction)则是指对图像的色

    2024年02月13日
    浏览(30)
  • 颜色校正矩阵(CCM)的简单介绍

    目录 前言 1 CCM的简单介绍 1.1为什么要做CCM 1.2CCM的含义 2 CCM调试方法 3 结论        在ISP tuning过程中经常会遇到通过各个平台算法标定的颜色校正矩阵(CCM)不能完全满足需求的情况,比如饱和度偏低或者偏高,某个色块的色偏方向和对比机不同等,这个时候就需要自己手

    2024年02月10日
    浏览(26)
  • flutter开发实战-颜色Color与16进制转换

    flutter开发实战-颜色Color与16进制转换 代码如下 https://blog.csdn.net/gloryFlow/article/details/132219192 flutter开发实战-颜色Color与16进制转换。 学习记录,每天不停进步。

    2024年02月13日
    浏览(28)
  • Unity Color对比Color32、对应PS的通道解释

    官网文档: Unity - Scripting API: Color Unity - Scripting API: Color32 Color和Color32可互转。Unity默认貌似用的是Color。那区别是什么呢? Color :   使用 Float (4字节,32位!) 对应一个通道。那么RGBA=4个*4字节*8= 128 bit ! 大有大的好处。能表示的色彩数量也越高。甚至可以跟HDR直接做结合

    2023年04月14日
    浏览(22)
  • Unity中Shader的帧缓存区Clear(color+Z+stencil)

    帧缓存区 Alpha测试 模板测试 深度测试 混合 1920 ∗ 1080 ∗ 3 1024 1024 = 5.93 M B frac{frac{1920 * 1080 *3}{1024}}{1024} = 5.93MB 1024 1024 1920 ∗ 1080 ∗ 3 ​ ​ = 5.93 MB Clear(color + Z + stencil)

    2024年02月10日
    浏览(35)
  • 解决小程序-wx.canvasGetImageData()-RGB取色盘苹果手机获取颜色慢问题

            最近做了一个微信小程序控制蓝牙设备,通过小程序中的RGB取色盘,获取当前的RGB颜色,通过蓝牙发送给设备,设备接收到RGB以后,做出相应的调整。  图1:RGB取色盘         在安卓手机上运行正常,能够迅速的相应我的手部滑动位置,并获取到颜色,非常的跟手

    2024年02月09日
    浏览(33)
  • Unity 转微信小游戏Error building Player: Incompatible color space with graphics API

    Unity 开发 微信小游戏,进行转换小游戏时报Error building Player: Incompatible color space with graphics AP错误,主要原因是不兼容WEBGL2.0。 需要在 Unity Editor中File-Build settings-Player Settings中设置Color space为Gamma。默认值是Linear这需要WebGL2.0支持。 勾选选项WebGL2.0(Beta)选项。也可解决上述问题

    2024年02月14日
    浏览(31)
  • 现代 CSS 解决方案:accent-color 强调色

    accent-color 是从 Chrome 93 开始被得到支持的一个不算太新属性。之前一直没有好好介绍一下这个属性。直到最近在给一些系统整体切换主题色的时候,更深入的了解了一下这个属性。 简单而言,CSS accent-color 支持使用几行简单的 CSS 为 表单元素 着色,是的,只需几行代码就可以

    2024年03月09日
    浏览(31)
  • 四、Unity中颜色空间

    通过点击菜单Edit-Project Settings-Player页签-Other Settings下的Rendering部分进行修改,参数Color Space可以选择Gamma或Linear。 当选择Gamma Space时,Unity不会做任何处理。 当选择Linear Space时,引擎的渲染流程在线性空间计算,理想情况下项目使用线性空间的贴图颜色,不需要勾选sRGB,如果

    2024年02月14日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包