当前位置: 首页 > news >正文

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来调整颜色,实际上可以通过调整曲线和参数来实现更复杂的颜色效果。

相关文章:

Color Correction (颜色校正)

介绍 在Unity中,Color Correction (颜色校正) 是一种用于调整场景或游戏画面颜色的技术。其中,Curves(曲线)和Saturation(饱和度)是常用的Color Correction工具。通过Curves,可以对RGB通道进行…...

Unity-缓存池

一、.基础缓存池实现 继承的Singleton脚本为 public class Singleton<T> where T : new() {private static T _instance;public static T GetIstance(){if (_instance null)_instance new T();return _instance;} } 1.PoolManager using System.Collections; using S…...

ubuntu samba 配置常见问题

samba配置&#xff1a; sudo vi /etc/samba/smb.conf [xxx 共享文件名] comment share folder browseable yes writable yes guest ok yes path /workdir/code/favarite create mask 0777 directory mask 0777 sudo /etc/init.d/smbd restart 重启smb服务 以上操作…...

vue3.3-TinyMCE:TinyMCE富文本编辑器基础使用

一、TinyMCE官网 GitHub - tinymce/tinymce TinyMCE中文文档中文手册 二、官网介绍 TinyMCE是一款易用、且功能强大的所见即所得的富文本编辑器。同类程序有&#xff1a;UEditor、Kindeditor、Simditor、CKEditor、wangEditor、Suneditor、froala等等。 TinyMCE的优势&…...

基于以太坊+IPFS的去中心化数据交易方法及平台

自己的论文&#xff0c;哎费事 目录 基于以太坊IPFS的去中心化数据交易方法及平台 基于以太坊IPFS的去中心化数据交易方法及平台 摘要&#xff1a; 数据交易过程中存在数据权属不明和数据安全问题。本文开发了一种基于以太坊IPFS的去中心化数据交易方法及平台。方法包括&am…...

NestJS 的 拦截器 学习

拦截器会用到RxJs&#xff0c;所以在学习拦截器之前可以先了解一下它。 拦截器是使用Injectable()装饰器装饰的类并且实现了接口NestInterceptor。 拦截器受到 AOP(面向切面编程)技术的启发&#xff0c;具有如下的功能&#xff1a; 在方法执行之前/之后绑定额外的逻辑转换函…...

Spring AOP 中的代理对象是怎么创建出来的?

文章目录 1. AOP 用法2. 原理分析2.1 doCreateBean2.2 postProcessAfterInitialization2.3 getAdvicesAndAdvisorsForBean2.3.1 findCandidateAdvisors2.3.2 findAdvisorsThatCanApply2.3.3 extendAdvisors 2.4 createProxy 今天和小伙伴们聊一聊 Spring AOP 中的代理对象是怎么…...

解决@Scope(“prototype“)不生效的问题

目录 Scope(“prototype“)不生效Scope(“prototype“)正确用法——解决Bean多例问题 1.问题&#xff0c;Spring管理的某个Bean需要使用多例2.问题升级3. Spring给出的解决问题的办法&#xff08;解决Bean链中某个Bean需要多例的问题&#xff09; Scope(“prototype“)不生效 …...

Mybatis 知识点

Mybatis 知识点 1.1 Mybatis 简介 1.1.1 什么是 Mybatis Mybatis 是一款优秀的持久层框架支持定制化 SQL、存储过程及高级映射Mybatis 几乎避免了所有的 JDBC 代码和手动设置参数以及获取结果集MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO…...

PHP中关于is,between,in等运算符的用法是什么?

我们学习了解了这么多关于PHP的知识&#xff0c;不知道你们对PHP中关于is&#xff0c;between&#xff0c;in等运算符的用法是什么&#xff1f;是否已经完全掌握了呢&#xff0c;如果没有&#xff0c;那就跟随本篇文章一起继续学习吧 相关推荐&#xff1a;关于PHP中的增删改如…...

2023-07-29:华清远见嵌入式2017年线下班:文件IO笔记

这里写目录标题 华清远见嵌入式2017年线下班&#xff1a;文件IO笔记文件权限文件IO文件创建和打开操作文件关闭操作出错处理创建设备文件 || create || 老师自己忘了文件读操作练习&#xff1a;计算文件的大小&#xff1f;文件写操作练习&#xff1a;打开file1和file2&#xff…...

2023年第四届“华数杯”数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&#xff0…...

Typescript第七章 处理错误(返回null,抛出异常,返回异常,Option类型)

第七章 处理错误 Typescript竭尽所能&#xff0c;把运行时异常转移到编译时。Typescript是功能丰富的系统&#xff0c;加上强大的静态和符号分析能力&#xff0c;包揽了大量辛苦的工作。 但是有些问题是无法避免的&#xff0c;比如网络和文件系统异常&#xff0c;解析用户输入…...

Qt库xcb问题

首先在~/.bashrc中加入 export QT_DEBUG_PLUGINS1然后看具体的报错 查看某个库链接的库&#xff1a; ldd libqxcb.so然后找到真正缺少的库&#xff0c;再在路径下搜索&#xff0c;然后建立软链接。 https://blog.csdn.net/LOVEmy134611/article/details/107212845 https://…...

C++ | 哈希表的实现与unordered_set/unordered_map的封装

目录 前言 一、哈希 1、哈希的概念 2、哈希函数 &#xff08;1&#xff09;直接定址法 &#xff08;2&#xff09;除留余数法 &#xff08;3&#xff09;平方取中法&#xff08;了解&#xff09; &#xff08;4&#xff09;随机数法&#xff08;了解&#xff09; 3、哈…...

【漏洞挖掘】Xray+rad自动化批量漏洞挖掘

文章目录 前言一、挖掘方法二、使用步骤工具安装使用方法开始挖掘 总结 前言 自动化漏洞挖掘是指利用计算机程序和工具来扫描、分析和检测应用程序、网络和系统中的安全漏洞的过程。这种方法可以帮助安全专家和研究人员更高效地发现和修复潜在的安全威胁&#xff0c;从而提高整…...

Swagger UI教程 API 文档和Node的使用

在团队开发中&#xff0c;一个好的 API 文档可以减少很多交流成本&#xff0c;也可以使一个新人快速上手业务。 前言 swagger ui是一个API在线文档生成和测试的利器&#xff0c;目前发现最好用的。为什么好用&#xff1f;Demo 传送门 支持API自动生成同步的在线文档 这些文档可…...

P5691 [NOI2001] 方程的解数

[NOI2001] 方程的解数 题目描述 已知一个 n n n 元高次方程&#xff1a; ∑ i 1 n k i x i p i 0 \sum\limits_{i1}^n k_ix_i^{p_i} 0 i1∑n​ki​xipi​​0 其中&#xff1a; x 1 , x 2 , … , x n x_1, x_2, \dots ,x_n x1​,x2​,…,xn​ 是未知数&#xff0c; k 1 ,…...

rust里用什么表示字节类型?

在Rust中&#xff0c;字节可以使用 u8 类型来表示。 u8 是一个无符号8位整数类型&#xff0c;可以表示0到255之间的值&#xff0c;对应于一个字节的范围。 以下是一个示例&#xff0c;演示了如何声明和使用字节&#xff1a; fn main() {let byte: u8 65; // 表示字母A的ASCI…...

CMake简介

文章目录 为什么需要头文件为什么 C 需要声明头文件 - 批量插入几行代码的硬核方式头文件进阶 - 递归地使用头文件 CMake什么是编译器多文件编译与链接CMake 的命令行调用为什么需要库&#xff08;library&#xff09;CMake 中的静态库与动态库CMake 中的子模块子模块的头文件如…...

手把手教你搭建PaddleOCR开发环境:从CUDA配置到模型验证

1. 环境准备&#xff1a;从零搭建PaddleOCR开发环境 最近在做一个票据识别的项目&#xff0c;需要用到OCR技术。对比了几种开源方案后&#xff0c;发现PaddleOCR不仅识别准确率高&#xff0c;而且对中文支持特别好。但在搭建环境时踩了不少坑&#xff0c;特别是CUDA和cuDNN的版…...

终极WindowResizer完整指南:让窗口调整随心所欲

终极WindowResizer完整指南&#xff1a;让窗口调整随心所欲 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 你是否遇到过无法调整大小的应用窗口&#xff1f;WindowResizer是一款强…...

LangChain + AgentRun 浏览器沙箱极简集成指南

AgentRun Browser Sandbox 介绍 什么是 Browser Sandbox? Browser Sandbox 是 AgentRun 平台提供的云原生无头浏览器沙箱服务,基于阿里云函数计算&#xff08;FC&#xff09;构建。它为智能体提供了一个安全隔离的浏览器执行环境,支持通过标准的 Chrome DevTools Protocol (…...

Splunk Enterprise 9.4.10 (macOS, Linux, Windows) - 机器数据管理和分析

Splunk Enterprise 9.4.10 (macOS, Linux, Windows) - 机器数据管理和分析 安全信息和事件管理 (SIEM)、全面的日志管理和分析平台 请访问原文链接&#xff1a;https://sysin.org/blog/splunk-9/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sys…...

VS Code高效调试:自定义console.log快捷键与智能代码片段配置

1. 为什么需要自定义console.log快捷键&#xff1f; 每次调试JavaScript代码时&#xff0c;手动输入完整的console.log语句实在是一件让人抓狂的事情。想象一下这样的场景&#xff1a;你正在调试一个复杂的Vue组件&#xff0c;需要快速查看某个变量的值。按照传统方式&#xf…...

零成本玩转千问大模型!OpenClaw 配置秘籍(附每日500 Token福利)

&#x1f680;零成本玩转千问大模型&#xff01;OpenClaw 配置秘籍&#xff08;附每日500 Token福利&#xff09; 这份教程将带你完成从环境准备到成功验证的全过程&#xff0c;让你手中的工具“活”起来。 前期准备&#xff1a;搭建基石 在开始代码操作之前&#xff0c;我们需…...

17种智能体(Agent)架构全景解析:演进逻辑、工程价值与落地实践

17种智能体&#xff08;Agent&#xff09;架构按“单体→增强→工具→多智能体→操作系统级”的演进路径&#xff0c;分为5大类&#xff0c;核心逻辑是从简单到复杂、从基础到前沿&#xff0c;兼顾工程落地性和理论完整性。以下将对每一种架构模式进行详细拆解&#xff0c;结合…...

PasteMD免配置环境:Docker镜像封装,3条命令完成私有化AI格式化服务部署

PasteMD免配置环境&#xff1a;Docker镜像封装&#xff0c;3条命令完成私有化AI格式化服务部署 1. 项目简介&#xff1a;剪贴板智能美化工具 PasteMD是一个完全私有化的AI文本格式化工具&#xff0c;它基于Ollama本地大模型运行框架和强大的llama3:8b模型构建。这个工具的核心…...

新手福音:用快马生成交互式cad安装指南,轻松跨过第一道坎

作为一名CAD初学者&#xff0c;第一次安装软件时确实容易手忙脚乱。记得我当初光是找官方下载链接就花了半小时&#xff0c;安装过程中还差点勾选了捆绑软件。后来发现用InsCode(快马)平台可以快速生成交互式安装指南&#xff0c;整个过程变得特别顺畅。今天就把这个实用方法分…...

MiniCPM-V 4.5 本地部署全攻略:从环境配置到图片、视频、多图推理实战

MiniCPM-V 4.5 本地部署全攻略&#xff1a;从环境配置到图片、视频、多图推理实战 在人工智能技术飞速发展的今天&#xff0c;视觉-语言多模态模型正成为研究和应用的热点。MiniCPM-V 4.5作为这一领域的最新成果&#xff0c;凭借其卓越的性能和高效的推理能力&#xff0c;为开…...