77 lines
1.9 KiB
C#
77 lines
1.9 KiB
C#
//Use Custom-Light for PostEffects in Shader Forge
|
|
// C# version by Felipe Mendez (DeadlyCrow).
|
|
|
|
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
|
|
[ExecuteInEditMode]
|
|
[RequireComponent(typeof (Camera))]
|
|
|
|
public class UnderWaterPostEffect : MonoBehaviour {
|
|
|
|
Material MaterialToRender;
|
|
string PostEffectName;
|
|
public Shader ShaderToRender;
|
|
public Texture2D NormalDistortion;
|
|
public float speed = 3f, intensity = 0.2f, DistortionScale = 0.15f;
|
|
public Color UnderWaterColor;
|
|
|
|
void Awake(){
|
|
if (!ShaderToRender) {
|
|
ShaderToRender = Shader.Find("Hidden/DCG/Water Shader/Underwater");
|
|
}
|
|
if (MaterialToRender != null)
|
|
{
|
|
applyParameters();
|
|
}
|
|
}
|
|
|
|
void OnEnable ()
|
|
{
|
|
if (!ShaderToRender) {
|
|
ShaderToRender = Shader.Find("Hidden/DCG/Water Shader/Underwater");
|
|
}
|
|
UnityEditor.EditorApplication.update = UpdateStringName;
|
|
}
|
|
/*
|
|
void OnDisable()
|
|
{
|
|
|
|
}
|
|
*/
|
|
void UpdateStringName() {
|
|
|
|
if(ShaderToRender)
|
|
PostEffectName = ShaderToRender.name;
|
|
else
|
|
PostEffectName = "No shader has been found";
|
|
|
|
applyParameters();
|
|
}
|
|
|
|
void OnRenderImage(RenderTexture Source, RenderTexture Destination)
|
|
{
|
|
if (ShaderToRender != null) {
|
|
if (MaterialToRender != null) {
|
|
Graphics.Blit (Source, Destination, MaterialToRender);
|
|
}
|
|
else{
|
|
MaterialToRender = new Material(ShaderToRender);
|
|
}
|
|
}
|
|
}
|
|
void applyParameters(){
|
|
if (MaterialToRender) {
|
|
MaterialToRender.SetTexture ("_Distortion", NormalDistortion);
|
|
MaterialToRender.SetFloat ("_Intensity", intensity);
|
|
MaterialToRender.SetFloat ("_Speed", speed);
|
|
MaterialToRender.SetColor ("_Tint", UnderWaterColor);
|
|
// MaterialToRender.SetFloat ("_Fallof", DepthDensity);
|
|
// MaterialToRender.SetFloat ("_Density", FallofDensity);
|
|
// MaterialToRender.SetFloat ("_UseDepth", System.Convert.ToSingle (UseDepth));
|
|
// MaterialToRender.SetFloat ("_Bypass", System.Convert.ToSingle (BypassEffect));
|
|
MaterialToRender.SetFloat ("_Scale", DistortionScale);
|
|
}
|
|
}
|
|
} |