5 [RequireComponent (typeof(Camera))]
6 [AddComponentMenu(
"Image Effects/Dream Effect")]
29 @"Shader ""BlurConeTap"" { 32 ZTest Always Cull Off ZWrite Off Fog { Mode Off } 33 SetTexture [__RenderTex] {constantColor (0,0,0,0.25) combine texture * constant alpha} 34 SetTexture [__RenderTex] {constantColor (0,0,0,0.25) combine texture * constant + previous} 35 SetTexture [__RenderTex] {constantColor (0,0,0,0.25) combine texture * constant + previous} 36 SetTexture [__RenderTex] {constantColor (0,0,0,0.25) combine texture * constant + previous} 45 if (m_BlurMaterial == null) {
46 m_BlurMaterial =
new Material( blurMatString );
47 m_BlurMaterial.hideFlags = HideFlags.HideAndDontSave;
48 m_BlurMaterial.shader.hideFlags = HideFlags.HideAndDontSave;
58 if (m_BlackChannelMaterial == null) {
59 m_BlackChannelMaterial =
new Material( blackChannelShader );
60 m_BlackChannelMaterial.hideFlags = HideFlags.HideAndDontSave;
67 if( m_BlurMaterial ) {
68 DestroyImmediate( m_BlurMaterial.shader );
69 DestroyImmediate( m_BlurMaterial );
72 if( m_BlackChannelMaterial ) {
73 DestroyImmediate( m_BlackChannelMaterial,
true );
83 if (!SystemInfo.supportsImageEffects) {
96 public void FourTapCone (RenderTexture source, RenderTexture dest,
int iteration)
98 RenderTexture.active = dest;
99 source.SetGlobalShaderProperty (
"__RenderTex");
101 float offsetX = (.5F+iteration*
blurSpread) / (
float)source.width;
102 float offsetY = (.5F+iteration*
blurSpread) / (
float)source.height;
116 RenderTexture.active = dest;
117 source.SetGlobalShaderProperty (
"__RenderTex");
119 float offsetX = 1.0f / (float)source.width;
120 float offsetY = 1.0f / (
float)source.height;
136 RenderTexture buffer = RenderTexture.GetTemporary(source.width/4, source.height/4, 0);
137 RenderTexture buffer2 = RenderTexture.GetTemporary(source.width/4, source.height/4, 0);
138 RenderTexture dreamBuffer = RenderTexture.GetTemporary( source.width, source.height, 0);
161 RenderTexture.ReleaseTemporary(buffer);
162 RenderTexture.ReleaseTemporary(buffer2);
163 RenderTexture.ReleaseTemporary(dreamBuffer);
168 private static void Render4TapQuad( RenderTexture dest,
float offsetX,
float offsetY )
170 GL.Begin( GL.QUADS );
173 Vector2 off = Vector2.zero;
175 off = dest.GetTexelOffset() * 0.75f;
178 GL.Vertex3( 0,0, .1f );
181 GL.Vertex3( 1,0, .1f );
183 Set4TexCoords( 1.0f + off.x, 1.0f + off.y, offsetX, offsetY );
184 GL.Vertex3( 1,1,.1f );
187 GL.Vertex3( 0,1,.1f );
192 private static void Set4TexCoords(
float x,
float y,
float offsetX,
float offsetY )
194 GL.MultiTexCoord2( 0, x - offsetX, y - offsetY );
195 GL.MultiTexCoord2( 1, x + offsetX, y - offsetY );
196 GL.MultiTexCoord2( 2, x + offsetX, y + offsetY );
197 GL.MultiTexCoord2( 3, x - offsetX, y + offsetY );
static void Render4TapQuad(RenderTexture dest, float offsetX, float offsetY)
Material BlackChannelMaterial
void DownSample4x(RenderTexture source, RenderTexture dest)
static Material blurMaterial
static string blurMatString
Material m_BlackChannelMaterial
BlendMode
Blending modes use by the ImageEffects2.Blit functions.
void OnRenderImage(RenderTexture source, RenderTexture destination)
static void BlitWithMaterial(Material material, RenderTexture source, RenderTexture destination)
static Material m_BlurMaterial
float blurSpread
Blur spread for each iteration.
void FourTapCone(RenderTexture source, RenderTexture dest, int iteration)
A Utility class for performing various image based rendering tasks.
Shader blackChannelShader
static void Blit(RenderTexture source, RenderTexture dest, BlendMode blendMode)
Copies one render texture onto another.
static void Set4TexCoords(float x, float y, float offsetX, float offsetY)
int iterations
Blur iterations - larger number means more blur.