- Home /
Question by
WavyRancheros · Apr 09, 2013 at 08:02 PM ·
androidshaderprecision
Shader precision on Android device
Hi,
I'm using a shader to interlace the image of two cameras. The left camera is displayed in the odd rows, the right camera is displayed in the even rows.
It works fine on PC, but on an Android tablet, it only works for HALF the screen, then the interlacing becomes weird and faulty.
I think this is a floating point precision issue. How can I get rid of it?
Pass {
ZTest Always
Cull Off
ZWrite Off
Fog {
Mode off
}
CGPROGRAM
#pragma vertex vert_img
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_nicest
#include "UnityCG.cginc"
uniform float _Weave_X; //columns, here 1920
uniform float _Weave_Y; //rows, here 1200
uniform sampler2D _LeftTex;
uniform sampler2D _RightTex;
float4 frag( v2f_img IN ) : COLOR0 {
float3 left = tex2D( _LeftTex, IN.uv ).rgb; // Sample scene texture
float3 right = tex2D( _RightTex, IN.uv ).rgb; // Sample scene texture
int x = fmod(floor( IN.uv.x*_Weave_X) + floor(IN.uv.y*_Weave_Y),2); //checks if even or odd
return float4( lerp( left, right, x ), 0.0 ); //interpolated between even and odd pixels
}
ENDCG
}
Thanks in advance!
Comment
Best Answer
Answer by WavyRancheros · Apr 10, 2013 at 09:40 AM
It seems I solved the problem.
I modified UnityCG.cginc by adding a custom Modulo function:
float mod(float x, float y){
return x-y*floor(x/y);
}
and now it works on the Android tablet as well.
Your answer
Follow this Question
Related Questions
Radial Blur for Android/iOS 0 Answers
UI leads to game crash 1 Answer
UI CustomShader disappears when Android losing focus 0 Answers