- Home /
Question by
soriak · Mar 26, 2018 at 01:24 PM ·
scripting problemshaderimage effectspost
How to accurately map UV from second texture in image effects
Hi,
I wrote a simple shader to apply the red and green channel of a "UV Texture" to the Maintexture in a ImageEffect.
it looks like this:
Texture2D _UVTex;
SamplerState my_linear_clamp_sampler;
Texture2D _MainTex;
fixed4 frag (v2f i) : SV_Target
{
float4 uvVals = _UVTex.Sample(my_linear_clamp_sampler, i.uv);
fixed4 col = _MainTex.Sample(my_linear_clamp_sampler, float2(uvVals[0],uvVals[1]));
//fixed4 col = tex2D(_MainTex, i.uv);
// just invert the colors
//col.rgb = 1 - col.rgb;
return col;
}
I created the "UV Texture" like this:
UVTexture = new Texture2D(Display.main.renderingWidth, Display.main.renderingHeight, TextureFormat.ARGB32, false, true);
float[] wh = { UVTexture.width, UVTexture.height };
for (int y = 0; y < UVTexture.height; y++)
{
for (int x = 0; x < UVTexture.width; x++)
{
UVTexture.SetPixel(x, y, new Color(x / wh[0], y / wh[1], 0, 1));
}
}
UVTexture.Apply();
what I expect from this UVTexture is to not alter the output at all as I am generating an Image that linearily moves from green to red over the whole image. However, when I press play on a Scene with nothing in it but a plane, i can clearly see, that the plane slightly appears to shrink in size, as if there was something not accurate about my sampling/generating....
here is what it looks like:
Does anybody see the problem here? Thanks
edit: seems like it could be connected to anti-aliasing not working, but otherwise still clueless how to resolve it...
unity.gif
(28.3 kB)
Comment