Shader "Hidden/BWDiffuse" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_bwBlend ("Black & White blend", Range (0, 1)) = 0
}
SubShader {
Pass {
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#include "UnityCG.cginc"
uniform sampler2D _MainTex;
uniform float _bwBlend;
float4 frag(v2f_img i) : COLOR {
float4 c = tex2D(_MainTex, i.uv);
float lum = c.r*.3 + c.g*.59 + c.b*.11;
float3 bw = float3( lum, lum, lum );
float4 result = c;
result.rgb = lerp(c.rgb, bw, _bwBlend);
return result;
}
ENDCG
}
}
}
using UnityEngine;
using System.Collections;
[ExecuteInEditMode]
public class BWEffect : MonoBehaviour {
public float intensity;
private Material material;
// Creates a private material used to the effect
void Awake ()
{
material = new Material( Shader.Find("Hidden/BWDiffuse") );
}
// Postprocess the image
void OnRenderImage (RenderTexture source, RenderTexture destination)
{
if (intensity == 0)
{
Graphics.Blit (source, destination);
return;
}
material.SetFloat("_bwBlend", intensity);
Graphics.Blit (source, destination, material);
}
}