- Home /
where to assign this shader varible?
where to assign this shader varible?
I have recently used ImageEffect, i.e. Blur. But I cannot figure out how the "_BlurOffsets" varible is assigned or be used? Does anybody know how that shader work?
CGINCLUDE
#include "UnityCG.cginc"
struct v2f {
float4 pos : POSITION;
half2 uv : TEXCOORD0;
half2 taps[4] : TEXCOORD1;
};
sampler2D _MainTex;
half4 _MainTex_TexelSize;
half4 _BlurOffsets;
v2f vert( appdata_img v ) {
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
o.uv = v.texcoord - _BlurOffsets.xy * _MainTex_TexelSize.xy; // hack, see BlurEffect.cs for the reason for this. let's make a new blur effect soon
o.taps[0] = o.uv + _MainTex_TexelSize * _BlurOffsets.xy;
o.taps[1] = o.uv - _MainTex_TexelSize * _BlurOffsets.xy;
o.taps[2] = o.uv + _MainTex_TexelSize * _BlurOffsets.xy * half2(1,-1);
o.taps[3] = o.uv - _MainTex_TexelSize * _BlurOffsets.xy * half2(1,-1);
return o;
}
half4 frag(v2f i) : COLOR {
half4 color = tex2D(_MainTex, i.taps[0]);
color += tex2D(_MainTex, i.taps[1]);
color += tex2D(_MainTex, i.taps[2]);
color += tex2D(_MainTex, i.taps[3]);
return color * 0.25;
}
ENDCG
Answer by paraself · Aug 08, 2015 at 06:25 PM
_BlurOffsets is assigned when you used graphics.BlitMultiTap 's offset feature. For example, when you do Graphics.BlitMultiTap(source, dest, mtl, new Vector(-4,5)); _BlurOffsets.xy will be assigned to (-4,5).
see this research (in Chinese):
Answer by bruce965 · Sep 13, 2012 at 03:36 PM
In a MonoBehaviour Script:
`renderer.sharedMaterial.SetVector("_BlurOffsets", new Vector3(x, y, z));`
NOTE: You may have to use a Vector4 ins$$anonymous$$d of a Vector3...
The Shader is "Hidden/BlurEffectConeTap", and the script is BlurEffect.cs, and I didnot find "renderer.shared$$anonymous$$aterial.SetVector("_BlurOffsets", new Vector3(x, y, z));", how is "_BlurOffsets" is working in script without assigning?
Just add this line in Start() method of the *.cs script.
I just tried to understand the code of this imageEffect too - and I also can't figure out where exactly is the '_BlurOffsets' variable setup? I mean - the Blur effect works already - so there must be somewhere some code that assigns this variable. but where?
$$anonymous$$y best guess is, that it's set in Graphics.Blit$$anonymous$$ultiTap() - but that'd be quite a hack somehow?
Your answer
Follow this Question
Related Questions
Vertical Blur Image Effect 0 Answers
How to blur an image in memory? 1 Answer
Modifying an image effect component over time. 0 Answers
how to use motion blur just for background (unity pro) 0 Answers
GUI Texture blur 5 Answers