Unity Shader 屏幕后处理调整亮度、饱和度、对比度

本文介绍了如何在Unity中通过Shader进行屏幕后处理,以调整屏幕的亮度、饱和度和对比度。首先创建一个屏幕后处理基类,用于检查必要的条件。接着,声明Shader和材质,并定义相关参数。通过Unity的OnRenderImage函数获取屏幕渲染纹理,使用Graphics.Blit进行处理。在Shader部分,声明属性并定义Pass,关闭深度写入,实现颜色调整的计算。最终展示了调整前后的效果对比。
摘要由CSDN通过智能技术生成

在进行屏幕后处理之前,需要检查一系列条件是否满足,比如是否支持渲染纹理和屏幕特效,是否支持当前使用的Unity shader等.所以需要创建一个基类,用来检查:

屏幕后处理基类

using UnityEngine;

[ExecuteInEditMode]//ExecuteInEditMode属性的作用是在EditMode下也可以执行脚本
[RequireComponent (typeof(Camera))]//所有屏幕后处理效果都需要绑定在某个摄像机上
public class PostEffectsBase : MonoBehaviour
{
   


	protected void CheckResources()
    {
   
		bool isSupported = CheckSupport();
		
		if (isSupported == false)
        {
   
			NotSupported();
		}
	}

	protected bool CheckSupport()//检查各种资源和条件是否满足
    {
   
		if (SystemInfo.supportsImageEffects == false )
        {
   
			Debug.LogWarning("This platform does not support image effects or render textures.");
			return false;
		}
		
		return true;
	}


	protected void NotSupported()//不支持就禁用
    {
   
		enabled = false;
	}
	
	protected void Start()
    {
   
		CheckResources();
	}


	protected Material CheckShaderAndCreateMaterial(Shader shader, Material material)
    {
   
		if (shader == null)
        {
   
			return null;
		}
		
		if (shader.isSupported && material && material.shader == shader)
			return material;
		
		if (!shader.isSupported)
        {
   
			return null;
		}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值