unity图像处理简单流程

在渲染管线中,后处理通常位于渲染过程的末尾,即在所有的渲染通道(例如顶点着色器、片段着色器等)完成之后执行后处理操作。后处理操作是在已经渲染的图像上进行的,它不会影响到场景的几何形状或光照等因素。一般来说,后处理操作会在渲染目标纹理(例如帧缓存或渲染纹理)上进行。在每一帧的渲染完成后,后处理操作会将渲染目标纹理作为输入,并应用各种效果和滤镜来修改图像的外观。包括亮度处理、色相调整、饱和度与对比度调整和晕影效果的实现。由着色器控制像素颜色,并使用脚本控制着色器。

shader着色器

以控制亮度来举例:

首先定义_Brightness变量控制亮度数值,在fragment shader中进行计算:

复制代码
//获取图像颜色值

//half4 col = tex2D(_MainTex, i.uv);//CG方法

half4 col = SAMPLE_TEXTURE2D(_MainTex,sampler_MainTex, i.uv);//HLSL方法

//亮度处理

half3 final_color = col.rgb * _Brightness;

C#脚本控制Shader

OnRenderImage() 是Unity 中用于在渲染每一帧图像之前或之后执行自定义后处理操作的函数,只能搭载在Main Camera上才能正确执行。通过OnRenderImage(),控制每一帧渲染图像之后需要执行的执行自定义的后处理效果。创建C#脚本ImageEffect.cs,传入对应的Material材质用于控制各种后处理的效果。编写OnRenderImage()函数。

复制代码
public class ImageEffect : MonoBehaviour
 
{
 
    public Material material;
 
    public float Brightness = 1;


private void OnRenderImage(RenderTexture source, RenderTexture destination)
 
    {
 
        material.SetFloat("_Brightness", Brightness);
 
        Graphics.Blit(source, destination, material);
 
    }
}

变量 material用于指定要应用效果的材质。变量 Brightness,用于控制图像的亮度。

在OnRenderImage()中设置材质的 _Brightness 属性,然后,使用 Graphics.Blit 函数将源纹理 source 绘制到目标纹理 destination 上,并应用材质。

相关推荐
啊阿狸不会拉杆27 分钟前
《数字图像处理》第 10 章 - 图像分割
图像处理·人工智能·深度学习·算法·计算机视觉·数字图像处理
Jet_581 小时前
神庙逃亡(Temple Run)IL2CPP 逆向实战:从 APK 到 Frida 实现角色无敌
unity·il2cpp·逆向工程·frida·android逆向·hook技术·游戏逆向
啊阿狸不会拉杆2 小时前
《数字图像处理》第 12 章 - 目标识别
图像处理·人工智能·算法·计算机视觉·数字图像处理
HaiLang_IT2 小时前
基于图像处理与注意力机制的输电线路绝缘子缺陷智能识别方法
图像处理·人工智能
s09071362 小时前
FPGA视频编码器:H.264/H.265实现核心技术解析
图像处理·算法·fpga开发·音视频·h.264
Dr.勿忘14 小时前
MUMU模拟器adb连接失败:cannot connect to 127.0.0.1:16384: 由于目标计算机积极拒绝,无法连接。 (10061)
游戏·unity·adb·游戏程序·调试·模拟器
啊阿狸不会拉杆16 小时前
第 3 章 灰度变换与空间域滤波
图像处理·人工智能·机器学习·计算机视觉·数据挖掘·数字图像处理
垂葛酒肝汤1 天前
Unity中的协程的原理
unity·游戏引擎
航Hang*1 天前
Photoshop 图形与图像处理技术——第9章:实践训练2——变换花朵颜色与绘制正方体
图像处理·笔记·学习·ui·photoshop·期末·复习
航Hang*1 天前
Photoshop 图形与图像处理技术——第9章:实践训练5——文字和路径
图像处理·笔记·学习·ui·photoshop·期末