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 上,并应用材质。

相关推荐
mxwin10 小时前
Unity Shader 切线空间数据是如何计算出来的
unity·游戏引擎·shader
合合技术团队12 小时前
2026中国图像图形大会召开,合合信息推出多模态可信AI鉴伪系统
图像处理·人工智能·aigc鉴伪
mxwin14 小时前
Unity Shader 法线贴图跟切线空间有什么关系
unity·游戏引擎·贴图·shader
mxwin14 小时前
Unity Shader 贴图和采样的关系 如何保证贴图清晰
unity·游戏引擎·贴图·shader
心前阳光16 小时前
Unity之使用火山引擎实现文字提问流式回复
unity·游戏引擎·火山引擎
mxwin19 小时前
Unity Shader 什么是球谐光照 原理是什么
unity·游戏引擎·shader
心前阳光19 小时前
Unity之使用火山引擎实现语音识别
unity·语音识别·火山引擎
心前阳光19 小时前
Unity之使用火山引擎实现流式语音合成
unity·游戏引擎·火山引擎
心前阳光20 小时前
Unity之使用火山引擎实现音频剪辑提问,流式语音回复
unity·音视频·火山引擎