本文转载自Unity论坛看到的
相机特效来调整亮度和对比度 , 做了一些修改。
using System;
using UnityEngine;
using UnityStandardAssets.ImageEffects;
[ExecuteInEditMode]
[AddComponentMenu("Image Effects/GL/Brightness Effect")]
///add by lpj.thinbug 用于亮度调整20166.12.26
public class BrightnessEffect : ImageEffectBase
{
[Range(0.5f, 2f)]
public float _Brightness = 1f;
[Range(0.5f, 2f)]
public float _Contrast = 1f;
Material curMaterial;
protected override void Start()
{
shader = Shader.Find("Hidden/GL/Brightness Effect");
base.Start();
}
// Called by camera to apply image effect
void OnRenderImage(RenderTexture source, RenderTexture destination)
{
material.SetFloat("_Brightness", _Brightness);
material.SetFloat("_Contrast", _Contrast);
Graphics.Blit(source, destination, material);
}
public void SetBrightness(float value)
{
_Brightness = value;
}
public void SetContrast(float value)
{
_Contrast = value;
}
}
///add by lpj.thinbug 用于亮度调整20166.12.26
Shader "Hidden/GL/Brightness Effect" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_Brightness ("Brightness", float) = 1
_Contrast ("Contrast", float) = 1
}
SubShader {
Pass {
ZTest Always Cull Off ZWrite Off
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
uniform float _Brightness;
uniform float _Contrast;
fixed4 frag (v2f_img i) : SV_Target
{
fixed4 output = tex2D(_MainTex, i.uv);
output = output * _Brightness;
output = (output - 0.5) * _Contrast + 0.5;
return output;
}
ENDCG
}
}
Fallback off
}