【Unity3D Shader】学习笔记-渐变映射①

简介: Gradient-Map(渐变映射)常用于Color Gradient颜色分级、颜色校正等。本篇主要用于将图像中的灰度范围映射到指定的渐变填充色中,通过渐变映射图来制作不同的效果。 通过修改不同的渐变映射纹理就可以获得不同的效果,好的的效果就需要根据场景制作特定的映射纹理进行调效果,Shader代码相对简单,在片段着色器中进行效果处理,

【Unity3D Shader】学习笔记-渐变映射①


引言


   Gradient-Map(渐变映射)常用于Color Gradient颜色分级、颜色校正等。本篇主要用于将图像中的灰度范围映射到指定的渐变填充色中,通过渐变映射图来制作不同的效果。

    [声明:本笔记系列文章的图片资源都源自百度图片搜索,如有问题联系我]

一、针对场景的后处理效果


微信图片_20220424221307.png


图1 原场景效果


微信图片_20220424221311.png


微信图片_20220424221315.png


图2 渐变映射效果1


微信图片_20220424221319.png


微信图片_20220424221323.png


图2 渐变映射效果2

二、直接对图片进行处理


微信图片_20220424221327.png


图1 原图


微信图片_20220424221331.png


图2 渐变映射效果


三、效果的处理步骤


   1. 获取原纹理的灰度值(下面给了2种计算灰度值的方法)


// 通过RGB三通道的平均值计算获得灰度值
float gray_value = (col.r + col.g + col.b) / 3;
// 心理学灰值
float gray_value = dot(col.rgb, fixed3(0.299, 0.587, 0.114));


2. 根据灰度值采样Gradient Map纹理。


// 通过灰度值采样纹理映射纹理
fixed4 gradient = tex2D(_GradientMap, gray_value);


 3. 将新获得的渐变颜色和原颜色值进行混合计算。


// 直接根据alpha值进行插值
gradient.rgb = lerp(col.rgb, gradient.rgb, gradient.a);


   通过修改不同的渐变映射纹理就可以获得不同的效果,好的的效果就需要根据场景制作特定的映射纹理进行调效果,Shader代码相对简单,在片段着色器中进行效果处理,具体代码如下:


fixed4 col = tex2D(_MainTex, i.uv);
// 通过RGB三通道的平均值计算获得灰度值
float gray_value = (col.r + col.g + col.b) / 3;
// 加上强度控制
gray_value *= _Intensity; 
// 通过灰度值采样纹理映射纹理
fixed4 gradient = tex2D(_GradientMap, gray_value);
// 根据渐变纹理的透明度进行插值。
gradient = lerp(col, gradient, gradient.a);  // 这里影响了alpha
return gradient;


相关文章
|
4月前
|
图形学 数据可视化 开发者
超实用Unity Shader Graph教程:从零开始打造令人惊叹的游戏视觉特效,让你的作品瞬间高大上,附带示例代码与详细步骤解析!
【8月更文挑战第31天】Unity Shader Graph 是 Unity 引擎中的强大工具,通过可视化编程帮助开发者轻松创建复杂且炫酷的视觉效果。本文将指导你使用 Shader Graph 实现三种效果:彩虹色渐变着色器、动态光效和水波纹效果。首先确保安装最新版 Unity 并启用 Shader Graph。创建新材质和着色器图谱后,利用节点库中的预定义节点,在编辑区连接节点定义着色器行为。
310 0
|
4月前
|
缓存 图形学
Unity3D学习笔记12——渲染纹理
Unity3D学习笔记12——渲染纹理
42 2
|
4月前
|
API C# 图形学
Unity3D学习笔记9——加载纹理
Unity3D学习笔记9——加载纹理
49 2
|
4月前
|
API 图形学 异构计算
Unity3D学习笔记7——GPU实例化(2)
Unity3D学习笔记7——GPU实例化(2)
32 2
|
4月前
|
存储 缓存 图形学
Unity3D学习笔记11——后处理
Unity3D学习笔记11——后处理
64 1
|
4月前
|
测试技术 C# 图形学
Unity3D学习笔记10——纹理数组
Unity3D学习笔记10——纹理数组
58 0
|
4月前
|
图形学 异构计算
Unity3D学习笔记8——GPU实例化(3)
Unity3D学习笔记8——GPU实例化(3)
54 0
|
4月前
|
存储 API 图形学
Unity3D学习笔记6——GPU实例化(1)
Unity3D学习笔记6——GPU实例化(1)
70 0
|
4月前
|
API 图形学 索引
Unity3D学习笔记5——创建子Mesh
Unity3D学习笔记5——创建子Mesh
34 0
|
4月前
|
API C# 图形学
Unity3D学习笔记4——创建Mesh高级接口
Unity3D学习笔记4——创建Mesh高级接口
43 0