so ive been working on a blur shader recently and for some reason it isnt working and if i remove the isSupported check, it gives me a “Too many passes error”
here is the main script
BlurBehind.cs
using System;
using UnityEngine;
[AddComponentMenu(“Image Effects/Blur Behind”), ExecuteInEditMode, RequireComponent(typeof(Camera))]
public class BlurBehind : MonoBehaviour
{
private static RenderTexture blurredTexture;
private static Material blurMaterial;
private static int count;
[SerializeField]
private Shader blurShader;
[Header(“Downsample”), Range(0f, 2f)]
public int power = 1;
[Header(“Blur”), Range(0f, 25f), Tooltip(“Blur radius in screen height percents”)]
public float radius = 5f;
[Range(1f, 4f), Tooltip(“Gaussian blur iterations. Not affects the blur strength”)]
public int iterations = 2;
private void CheckOutput(int rtW, int rtH, RenderTextureFormat format)
{
if (BlurBehind.blurredTexture == null)
{
this.CreateOutput(rtW, rtH, format);
}
else if (BlurBehind.blurredTexture.width != rtW || BlurBehind.blurredTexture.height != rtH || BlurBehind.blurredTexture.format != format)
{
BlurBehind.blurredTexture.Release();
UnityEngine.Object.DestroyImmediate(BlurBehind.blurredTexture);
this.CreateOutput(rtW, rtH, format);
}
}
private bool CheckResources()
{
if (BlurBehind.blurMaterial == null)
{
if (!(this.blurShader != null))
{
Debug.Log(“Shader reference missing. Blur Behind disabled”);
return false;
}
if (!this.blurShader.isSupported)
{
Debug.Log(“Shader not supported. Blur Behind disabled”);
return false;
}
BlurBehind.blurMaterial = new Material(this.blurShader);
BlurBehind.blurMaterial.hideFlags = HideFlags.DontSave;
}
return true;
}
private bool CheckSupport()
{
if (!SystemInfo.supportsImageEffects)
{
Debug.Log(“Image effects not supported. Blur Behind disabled”);
return false;
}
if (!SystemInfo.supportsRenderTextures)
{
Debug.Log(“Render textures not supported. Blur Behind disabled”);
return false;
}
return true;
}
private void CreateOutput(int rtW, int rtH, RenderTextureFormat format)
{
BlurBehind.blurredTexture = new RenderTexture(rtW, rtH, 0, format);
BlurBehind.blurredTexture.filterMode = FilterMode.Bilinear;
BlurBehind.blurredTexture.hideFlags = HideFlags.DontSave;
Shader.SetGlobalTexture(“_BlurBehindTex”, BlurBehind.blurredTexture);
Shader.EnableKeyword(“BLUR_BEHIND_SET”);
}
private void OnDisable()
{
BlurBehind.count–;
if (BlurBehind.count == 0)
{
if (BlurBehind.blurMaterial)
{
UnityEngine.Object.DestroyImmediate(BlurBehind.blurMaterial);
BlurBehind.blurMaterial = null;
}
if (BlurBehind.blurredTexture)
{
BlurBehind.blurredTexture.Release();
UnityEngine.Object.DestroyImmediate(BlurBehind.blurredTexture);
BlurBehind.blurredTexture = null;
Shader.SetGlobalTexture(“_BlurBehindTex”, null);
Shader.DisableKeyword(“BLUR_BEHIND_SET”);
}
}
}
private void OnEnable()
{
BlurBehind.count++;
}
private void OnRenderImage(RenderTexture source, RenderTexture destination)
{
if (!this.CheckSupport() || !this.CheckResources())
{
base.enabled = false;
Graphics.Blit(source, destination);
return;
}
float num = 1f / (1f * (float)(1 << this.power));
int num2 = source.width >> this.power;
int num3 = source.height >> this.power;
this.CheckOutput(num2, num3, source.format);
BlurBehind.blurredTexture.DiscardContents();
if (this.power > 0)
{
source.filterMode = FilterMode.Bilinear;
BlurBehind.blurMaterial.SetVector(“_Parameter”, new Vector4(this.radius * num, -this.radius * num, 0f, 0f));
Graphics.Blit(source, BlurBehind.blurredTexture, BlurBehind.blurMaterial, 0);
}
else
{
Graphics.Blit(source, BlurBehind.blurredTexture);
}
if (this.iterations > 0 && this.radius > 0f)
{
RenderTexture temporary = RenderTexture.GetTemporary(num2, num3, 0, source.format);
temporary.filterMode = FilterMode.Bilinear;
for (int i = 0; i < this.iterations; i++)
{
float d = this.radius / Mathf.Pow(3f, (float)(this.iterations - 1)) * Mathf.Pow(3f, (float)i) / 300f;
float f = (float)i * 1.570796f / (float)this.iterations;
Vector2 vector = new Vector2(Mathf.Sin(f), Mathf.Cos(f)) * d;
BlurBehind.blurMaterial.SetVector(“_Parameter”, new Vector4(vector.x / (float)num2 * (float)num3, vector.y, 0f, 0f));
Graphics.Blit(BlurBehind.blurredTexture, temporary, BlurBehind.blurMaterial, 1);
BlurBehind.blurredTexture.DiscardContents();
vector = new Vector2(vector.y, -vector.x);
BlurBehind.blurMaterial.SetVector(“_Parameter”, new Vector4(vector.x / (float)num2 * (float)num3, vector.y, 0f, 0f));
Graphics.Blit(temporary, BlurBehind.blurredTexture, BlurBehind.blurMaterial, 1);
temporary.DiscardContents();
}
RenderTexture.ReleaseTemporary(temporary);
}
Graphics.Blit(source, destination);
}
}
and here is the shader:
Blur.shader:
Shader “Blur Behind/Hidden” {
Properties {
_MainTex (“Base (RGB)”, 2D) = “white” { }
}
SubShader {
Pass {
ZTest Always
ZWrite Off
Cull Off
GpuProgramID 19434
Program “vp” {
SubProgram "gles " {
"!!GLES
#version 100
#ifdef VERTEX
attribute vec4 _glesVertex;
attribute vec4 _glesMultiTexCoord0;
uniform highp mat4 glstate_matrix_mvp;
uniform mediump vec4 _MainTex_TexelSize;
varying mediump vec2 xlv_TEXCOORD0;
varying mediump vec2 xlv_TEXCOORD1;
varying mediump vec2 xlv_TEXCOORD2;
varying mediump vec2 xlv_TEXCOORD3;
void main ()
{
gl_Position = (glstate_matrix_mvp * _glesVertex);
xlv_TEXCOORD0 = (_glesMultiTexCoord0.xy + (_MainTex_TexelSize.xy * vec2(0.5, 0.5)));
xlv_TEXCOORD1 = (_glesMultiTexCoord0.xy + (_MainTex_TexelSize.xy * vec2(-0.5, -0.5)));
xlv_TEXCOORD2 = (_glesMultiTexCoord0.xy + (_MainTex_TexelSize.xy * vec2(0.5, -0.5)));
xlv_TEXCOORD3 = (_glesMultiTexCoord0.xy + (_MainTex_TexelSize.xy * vec2(-0.5, 0.5)));
}
#endif
#ifdef FRAGMENT
uniform sampler2D _MainTex;
varying mediump vec2 xlv_TEXCOORD0;
varying mediump vec2 xlv_TEXCOORD1;
varying mediump vec2 xlv_TEXCOORD2;
varying mediump vec2 xlv_TEXCOORD3;
void main ()
{
lowp vec4 color_1;
color_1 = (texture2D (_MainTex, xlv_TEXCOORD0) + texture2D (_MainTex, xlv_TEXCOORD1));
color_1 = (color_1 + texture2D (_MainTex, xlv_TEXCOORD2));
color_1 = (color_1 + texture2D (_MainTex, xlv_TEXCOORD3));
lowp vec4 tmpvar_2;
tmpvar_2 = (color_1 / 4.0);
gl_FragData[0] = tmpvar_2;
}
#endif
"
}
SubProgram "gles3 " {
"!!GLES3
#ifdef VERTEX
#version 300 es
precision highp float;
precision highp int;
uniform vec4 _Time;
uniform vec4 _SinTime;
uniform vec4 _CosTime;
uniform vec4 unity_DeltaTime;
uniform vec3 _WorldSpaceCameraPos;
uniform vec4 _ProjectionParams;
uniform vec4 _ScreenParams;
uniform vec4 _ZBufferParams;
uniform vec4 unity_OrthoParams;
uniform vec4 unity_CameraWorldClipPlanes[6];
uniform mat4 unity_CameraProjection;
uniform mat4 unity_CameraInvProjection;
uniform vec4 _WorldSpaceLightPos0;
uniform vec4 _LightPositionRange;
uniform vec4 unity_4LightPosX0;
uniform vec4 unity_4LightPosY0;
uniform vec4 unity_4LightPosZ0;
uniform mediump vec4 unity_4LightAtten0;
uniform mediump vec4 unity_LightColor[8];
uniform vec4 unity_LightPosition[8];
uniform mediump vec4 unity_LightAtten[8];
uniform vec4 unity_SpotDirection[8];
uniform mediump vec4 unity_SHAr;
uniform mediump vec4 unity_SHAg;
uniform mediump vec4 unity_SHAb;
uniform mediump vec4 unity_SHBr;
uniform mediump vec4 unity_SHBg;
uniform mediump vec4 unity_SHBb;
uniform mediump vec4 unity_SHC;
uniform mediump vec3 unity_LightColor0;
uniform mediump vec3 unity_LightColor1;
uniform mediump vec3 unity_LightColor2;
uniform mediump vec3 unity_LightColor3;
uniform vec4 unity_ShadowSplitSpheres[4];
uniform vec4 unity_ShadowSplitSqRadii;
uniform vec4 unity_LightShadowBias;
uniform vec4 _LightSplitsNear;
uniform vec4 _LightSplitsFar;
uniform mat4 unity_World2Shadow[4];
uniform mediump vec4 _LightShadowData;
uniform vec4 unity_ShadowFadeCenterAndType;
uniform mat4 glstate_matrix_mvp;
uniform mat4 glstate_matrix_modelview0;
uniform mat4 glstate_matrix_invtrans_modelview0;
uniform mat4 _Object2World;
uniform mat4 _World2Object;
uniform vec4 unity_LODFade;
uniform mat4 glstate_matrix_transpose_modelview0;
uniform mat4 glstate_matrix_projection;
uniform lowp vec4 glstate_lightmodel_ambient;
uniform mat4 unity_MatrixV;
uniform mat4 unity_MatrixVP;
uniform lowp vec4 unity_AmbientSky;
uniform lowp vec4 unity_AmbientEquator;
uniform lowp vec4 unity_AmbientGround;
uniform lowp vec4 unity_FogColor;
uniform vec4 unity_FogParams;
uniform vec4 unity_LightmapST;
uniform vec4 unity_DynamicLightmapST;
uniform vec4 unity_SpecCube0_BoxMax;
uniform vec4 unity_SpecCube0_BoxMin;
uniform vec4 unity_SpecCube0_ProbePosition;
uniform mediump vec4 unity_SpecCube0_HDR;
uniform vec4 unity_SpecCube1_BoxMax;
uniform vec4 unity_SpecCube1_BoxMin;
uniform vec4 unity_SpecCube1_ProbePosition;
uniform mediump vec4 unity_SpecCube1_HDR;
uniform lowp vec4 unity_ColorSpaceGrey;
uniform lowp vec4 unity_ColorSpaceDouble;
uniform mediump vec4 unity_ColorSpaceDielectricSpec;
uniform mediump vec4 unity_ColorSpaceLuminance;
uniform mediump vec4 unity_Lightmap_HDR;
uniform mediump vec4 unity_DynamicLightmap_HDR;
uniform mediump vec4 _MainTex_TexelSize;
uniform mediump vec4 _Parameter;
in highp vec4 in_POSITION0;
in mediump vec2 in_TEXCOORD0;
out mediump vec2 vs_TEXCOORD0;
mediump vec4 phase0_Output0_1;
out mediump vec2 vs_TEXCOORD1;
out mediump vec2 vs_TEXCOORD2;
mediump vec4 phase0_Output0_2;
out mediump vec2 vs_TEXCOORD3;
highp vec4 t0;
void main()
{
//Instruction 95
//MUL
t0 = in_POSITION0.yyyy * glstate_matrix_mvp[1];
//Instruction 96
//MAD
t0 = glstate_matrix_mvp[0] * in_POSITION0.xxxx + t0;
//Instruction 97
//MAD
t0 = glstate_matrix_mvp[2] * in_POSITION0.zzzz + t0;
//Instruction 98
//MAD
gl_Position = glstate_matrix_mvp[3] * in_POSITION0.wwww + t0;
//Instruction 99
//MAD
phase0_Output0_1 = _MainTex_TexelSize.xyxy * vec4(0.5, 0.5, -0.5, -0.5) + in_TEXCOORD0.xyxy;
//Instruction 100
//MAD
phase0_Output0_2 = _MainTex_TexelSize.xyxy * vec4(0.5, -0.5, -0.5, 0.5) + in_TEXCOORD0.xyxy;
//Instruction 101
//RET
//--- Post shader code ---
vs_TEXCOORD0 = phase0_Output0_1.xy;
vs_TEXCOORD1 = phase0_Output0_1.zw;
vs_TEXCOORD2 = phase0_Output0_2.xy;
vs_TEXCOORD3 = phase0_Output0_2.zw;
//--- End post shader code ---
return;
}
#endif
#ifdef FRAGMENT
#version 300 es
precision highp float;
precision highp int;
uniform lowp sampler2D _MainTex;
in mediump vec2 vs_TEXCOORD0;
in mediump vec2 vs_TEXCOORD1;
in mediump vec2 vs_TEXCOORD2;
in mediump vec2 vs_TEXCOORD3;
layout(location = 0) out lowp vec4 SV_Target0;
mediump vec4 t16_0;
lowp vec4 t10_0;
lowp vec4 t10_1;
void main()
{
//Instruction 86
//SAMPLE
t10_0 = texture(_MainTex, vs_TEXCOORD0.xy);
//Instruction 87
//SAMPLE
t10_1 = texture(_MainTex, vs_TEXCOORD1.xy);
//Instruction 88
//ADD
t16_0 = t10_0 + t10_1;
//Instruction 89
//SAMPLE
t10_1 = texture(_MainTex, vs_TEXCOORD2.xy);
//Instruction 90
//ADD
t16_0 = t16_0 + t10_1;
//Instruction 91
//SAMPLE
t10_1 = texture(_MainTex, vs_TEXCOORD3.xy);
//Instruction 92
//ADD
t16_0 = t16_0 + t10_1;
//Instruction 93
//MUL
SV_Target0 = t16_0 * vec4(0.25, 0.25, 0.25, 0.25);
//Instruction 94
//RET
return;
}
#endif
"
}
}
Program "fp" {
SubProgram "gles " {
"!!GLES"
}
SubProgram "gles3 " {
"!!GLES3"
}
}
}
Pass {
ZTest Always
ZWrite Off
Cull Off
GpuProgramID 103349
Program "vp" {
SubProgram "gles " {
"!!GLES
#version 100
#ifdef VERTEX
attribute vec4 _glesVertex;
attribute vec4 _glesMultiTexCoord0;
uniform highp mat4 glstate_matrix_mvp;
varying mediump vec2 xlv_TEXCOORD0;
void main ()
{
gl_Position = (glstate_matrix_mvp * _glesVertex);
xlv_TEXCOORD0 = _glesMultiTexCoord0.xy;
}
#endif
#ifdef FRAGMENT
uniform sampler2D _MainTex;
uniform mediump vec4 _Parameter;
varying mediump vec2 xlv_TEXCOORD0;
void main ()
{
mediump vec4 color_1;
mediump vec2 coords_2;
coords_2 = (xlv_TEXCOORD0 - (_Parameter.xy * 3.0));
lowp vec4 tmpvar_3;
tmpvar_3 = texture2D (_MainTex, coords_2);
color_1 = (tmpvar_3 * 0.0205);
coords_2 = (coords_2 + _Parameter.xy);
lowp vec4 tmpvar_4;
tmpvar_4 = texture2D (_MainTex, coords_2);
color_1 = (color_1 + (tmpvar_4 * 0.0855));
coords_2 = (coords_2 + _Parameter.xy);
lowp vec4 tmpvar_5;
tmpvar_5 = texture2D (_MainTex, coords_2);
color_1 = (color_1 + (tmpvar_5 * 0.232));
coords_2 = (coords_2 + _Parameter.xy);
lowp vec4 tmpvar_6;
tmpvar_6 = texture2D (_MainTex, coords_2);
color_1 = (color_1 + (tmpvar_6 * 0.324));
coords_2 = (coords_2 + _Parameter.xy);
lowp vec4 tmpvar_7;
tmpvar_7 = texture2D (_MainTex, coords_2);
color_1 = (color_1 + (tmpvar_7 * 0.232));
coords_2 = (coords_2 + _Parameter.xy);
lowp vec4 tmpvar_8;
tmpvar_8 = texture2D (_MainTex, coords_2);
color_1 = (color_1 + (tmpvar_8 * 0.0855));
coords_2 = (coords_2 + _Parameter.xy);
lowp vec4 tmpvar_9;
tmpvar_9 = texture2D (_MainTex, coords_2);
color_1 = (color_1 + (tmpvar_9 * 0.0205));
coords_2 = (coords_2 + _Parameter.xy);
gl_FragData[0] = color_1;
}
#endif
"
}
SubProgram "gles3 " {
"!!GLES3
#ifdef VERTEX
#version 300 es
precision highp float;
precision highp int;
uniform vec4 _Time;
uniform vec4 _SinTime;
uniform vec4 _CosTime;
uniform vec4 unity_DeltaTime;
uniform vec3 _WorldSpaceCameraPos;
uniform vec4 _ProjectionParams;
uniform vec4 _ScreenParams;
uniform vec4 _ZBufferParams;
uniform vec4 unity_OrthoParams;
uniform vec4 unity_CameraWorldClipPlanes[6];
uniform mat4 unity_CameraProjection;
uniform mat4 unity_CameraInvProjection;
uniform vec4 _WorldSpaceLightPos0;
uniform vec4 _LightPositionRange;
uniform vec4 unity_4LightPosX0;
uniform vec4 unity_4LightPosY0;
uniform vec4 unity_4LightPosZ0;
uniform mediump vec4 unity_4LightAtten0;
uniform mediump vec4 unity_LightColor[8];
uniform vec4 unity_LightPosition[8];
uniform mediump vec4 unity_LightAtten[8];
uniform vec4 unity_SpotDirection[8];
uniform mediump vec4 unity_SHAr;
uniform mediump vec4 unity_SHAg;
uniform mediump vec4 unity_SHAb;
uniform mediump vec4 unity_SHBr;
uniform mediump vec4 unity_SHBg;
uniform mediump vec4 unity_SHBb;
uniform mediump vec4 unity_SHC;
uniform mediump vec3 unity_LightColor0;
uniform mediump vec3 unity_LightColor1;
uniform mediump vec3 unity_LightColor2;
uniform mediump vec3 unity_LightColor3;
uniform vec4 unity_ShadowSplitSpheres[4];
uniform vec4 unity_ShadowSplitSqRadii;
uniform vec4 unity_LightShadowBias;
uniform vec4 _LightSplitsNear;
uniform vec4 _LightSplitsFar;
uniform mat4 unity_World2Shadow[4];
uniform mediump vec4 _LightShadowData;
uniform vec4 unity_ShadowFadeCenterAndType;
uniform mat4 glstate_matrix_mvp;
uniform mat4 glstate_matrix_modelview0;
uniform mat4 glstate_matrix_invtrans_modelview0;
uniform mat4 _Object2World;
uniform mat4 _World2Object;
uniform vec4 unity_LODFade;
uniform mat4 glstate_matrix_transpose_modelview0;
uniform mat4 glstate_matrix_projection;
uniform lowp vec4 glstate_lightmodel_ambient;
uniform mat4 unity_MatrixV;
uniform mat4 unity_MatrixVP;
uniform lowp vec4 unity_AmbientSky;
uniform lowp vec4 unity_AmbientEquator;
uniform lowp vec4 unity_AmbientGround;
uniform lowp vec4 unity_FogColor;
uniform vec4 unity_FogParams;
uniform vec4 unity_LightmapST;
uniform vec4 unity_DynamicLightmapST;
uniform vec4 unity_SpecCube0_BoxMax;
uniform vec4 unity_SpecCube0_BoxMin;
uniform vec4 unity_SpecCube0_ProbePosition;
uniform mediump vec4 unity_SpecCube0_HDR;
uniform vec4 unity_SpecCube1_BoxMax;
uniform vec4 unity_SpecCube1_BoxMin;
uniform vec4 unity_SpecCube1_ProbePosition;
uniform mediump vec4 unity_SpecCube1_HDR;
uniform lowp vec4 unity_ColorSpaceGrey;
uniform lowp vec4 unity_ColorSpaceDouble;
uniform mediump vec4 unity_ColorSpaceDielectricSpec;
uniform mediump vec4 unity_ColorSpaceLuminance;
uniform mediump vec4 unity_Lightmap_HDR;
uniform mediump vec4 unity_DynamicLightmap_HDR;
uniform mediump vec4 _MainTex_TexelSize;
uniform mediump vec4 _Parameter;
in highp vec4 in_POSITION0;
in mediump vec2 in_TEXCOORD0;
out mediump vec2 vs_TEXCOORD0;
highp vec4 t0;
void main()
{
//Instruction 117
//MUL
t0 = in_POSITION0.yyyy * glstate_matrix_mvp[1];
//Instruction 118
//MAD
t0 = glstate_matrix_mvp[0] * in_POSITION0.xxxx + t0;
//Instruction 119
//MAD
t0 = glstate_matrix_mvp[2] * in_POSITION0.zzzz + t0;
//Instruction 120
//MAD
gl_Position = glstate_matrix_mvp[3] * in_POSITION0.wwww + t0;
//Instruction 121
//MOV
vs_TEXCOORD0.xy = in_TEXCOORD0.xy;
//Instruction 122
//RET
return;
}
#endif
#ifdef FRAGMENT
#version 300 es
precision highp float;
precision highp int;
// XXX ADRENOCONSTARRAYBUG
const vec4 immediateConstBufferF[7] = vec4[] (
vec4(0.0205000006, 0, 0, 0),
vec4(0.0855000019, 0, 0, 0),
vec4(0.231999993, 0, 0, 0),
vec4(0.324000001, 0, 0, 0),
vec4(0.231999993, 0, 0, 0),
vec4(0.0855000019, 0, 0, 0),
vec4(0.0205000006, 0, 0, 0));
uniform vec4 _Time;
uniform vec4 _SinTime;
uniform vec4 _CosTime;
uniform vec4 unity_DeltaTime;
uniform vec3 _WorldSpaceCameraPos;
uniform vec4 _ProjectionParams;
uniform vec4 _ScreenParams;
uniform vec4 _ZBufferParams;
uniform vec4 unity_OrthoParams;
uniform vec4 unity_CameraWorldClipPlanes[6];
uniform mat4 unity_CameraProjection;
uniform mat4 unity_CameraInvProjection;
uniform vec4 _WorldSpaceLightPos0;
uniform vec4 _LightPositionRange;
uniform vec4 unity_4LightPosX0;
uniform vec4 unity_4LightPosY0;
uniform vec4 unity_4LightPosZ0;
uniform mediump vec4 unity_4LightAtten0;
uniform mediump vec4 unity_LightColor[8];
uniform vec4 unity_LightPosition[8];
uniform mediump vec4 unity_LightAtten[8];
uniform vec4 unity_SpotDirection[8];
uniform mediump vec4 unity_SHAr;
uniform mediump vec4 unity_SHAg;
uniform mediump vec4 unity_SHAb;
uniform mediump vec4 unity_SHBr;
uniform mediump vec4 unity_SHBg;
uniform mediump vec4 unity_SHBb;
uniform mediump vec4 unity_SHC;
uniform mediump vec3 unity_LightColor0;
uniform mediump vec3 unity_LightColor1;
uniform mediump vec3 unity_LightColor2;
uniform mediump vec3 unity_LightColor3;
uniform vec4 unity_ShadowSplitSpheres[4];
uniform vec4 unity_ShadowSplitSqRadii;
uniform vec4 unity_LightShadowBias;
uniform vec4 _LightSplitsNear;
uniform vec4 _LightSplitsFar;
uniform mat4 unity_World2Shadow[4];
uniform mediump vec4 _LightShadowData;
uniform vec4 unity_ShadowFadeCenterAndType;
uniform mat4 glstate_matrix_mvp;
uniform mat4 glstate_matrix_modelview0;
uniform mat4 glstate_matrix_invtrans_modelview0;
uniform mat4 _Object2World;
uniform mat4 _World2Object;
uniform vec4 unity_LODFade;
uniform mat4 glstate_matrix_transpose_modelview0;
uniform mat4 glstate_matrix_projection;
uniform lowp vec4 glstate_lightmodel_ambient;
uniform mat4 unity_MatrixV;
uniform mat4 unity_MatrixVP;
uniform lowp vec4 unity_AmbientSky;
uniform lowp vec4 unity_AmbientEquator;
uniform lowp vec4 unity_AmbientGround;
uniform lowp vec4 unity_FogColor;
uniform vec4 unity_FogParams;
uniform vec4 unity_LightmapST;
uniform vec4 unity_DynamicLightmapST;
uniform vec4 unity_SpecCube0_BoxMax;
uniform vec4 unity_SpecCube0_BoxMin;
uniform vec4 unity_SpecCube0_ProbePosition;
uniform mediump vec4 unity_SpecCube0_HDR;
uniform vec4 unity_SpecCube1_BoxMax;
uniform vec4 unity_SpecCube1_BoxMin;
uniform vec4 unity_SpecCube1_ProbePosition;
uniform mediump vec4 unity_SpecCube1_HDR;
uniform lowp vec4 unity_ColorSpaceGrey;
uniform lowp vec4 unity_ColorSpaceDouble;
uniform mediump vec4 unity_ColorSpaceDielectricSpec;
uniform mediump vec4 unity_ColorSpaceLuminance;
uniform mediump vec4 unity_Lightmap_HDR;
uniform mediump vec4 unity_DynamicLightmap_HDR;
uniform mediump vec4 _MainTex_TexelSize;
uniform mediump vec4 _Parameter;
uniform lowp sampler2D _MainTex;
in mediump vec2 vs_TEXCOORD0;
layout(location = 0) out mediump vec4 SV_Target0;
mediump vec2 t16_0;
highp vec4 t1;
mediump vec4 t16_1;
highp int ti2;
lowp vec4 t10_3;
bool tb6;
mediump vec2 t16_8;
void main()
{
//Instruction 102
//MAD
t16_0.xy = (-_Parameter.xy) * vec2(3.0, 3.0) + vs_TEXCOORD0.xy;
//Instruction 103
//MOV
t16_1 = vec4(0.0, 0.0, 0.0, 0.0);
//Instruction 104
//MOV
t16_8.xy = t16_0.xy;
//Instruction 105
//MOV
ti2 = 0x0;
//Instruction 106
//LOOP
while(true){
//Instruction 107
//IGE
tb6 = ti2>=0x7;
//Instruction 108
//BREAKC
if(tb6){break;}
//Instruction 109
//SAMPLE
t10_3 = texture(_MainTex, t16_8.xy);
//Instruction 110
//MAD
t1 = t10_3 * immediateConstBufferF[ti2].xxxx + t16_1;
//Instruction 111
//ADD
t16_8.xy = t16_8.xy + _Parameter.xy;
//Instruction 112
//IADD
ti2 = ti2 + 0x1;
//Instruction 113
//MOV
t16_1 = t1;
//Instruction 114
//ENDLOOP
}
//Instruction 115
//MOV
SV_Target0 = t16_1;
//Instruction 116
//RET
return;
}
#endif
"
}
}
Program "fp" {
SubProgram "gles " {
"!!GLES"
}
SubProgram "gles3 " {
"!!GLES3"
}
}
}
}
Fallback Off
}
thank for any helper