- Home /
Question by
zezba9000 · Jan 30, 2013 at 06:56 PM ·
shaderswebcamtexturevertexshader
WebCamTexture with custom VertexShader?
On Android if I use a WebCamTexture with a custom vertex shader my Acer tablet is rotating the texture 90deg different from when running on a Android phone.
What is Unity doing in there vertex shader i'm not?
Shader "PurplePenguin/CameraShader"
{
Properties
{
_MainTex ("Base (RGB)", 2D) = "white" {}
_Rotation ("Rotation", Float) = 0
_FlipX ("FlipX", Float) = 0
_FlipY ("FlipY", Float) = 0
_TextureWidth ("TextureWidth", Float) = 1
_TextureHeight ("TextureHeight", Float) = 1
}
CGINCLUDE
#include "UnityCG.cginc"
struct v2f
{
float4 pos : POSITION;
float2 uv : TEXCOORD0;
};
sampler2D _MainTex;
float _Rotation;
float _FlipX, _FlipY, _TextureWidth, _TextureHeight;
v2f vert( appdata_img v )
{
v2f o;
o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
// Image Rotation
float2 xVec = float2(cos(_Rotation), sin(_Rotation));
float2x2 mat =
{
xVec,
{-xVec.y, xVec.x}
};
float2 uv = v.texcoord - .5;
uv = mul(uv, mat) + .5;
// flip uv over the y or x
float xUV = (_FlipX == 0.0) ? uv.x : (1.0-uv.x);
float yUV = (_FlipY == 0.0) ? uv.y : (1.0-uv.y);
uv = float2(xUV, yUV);
uv.x *= _TextureWidth;
uv.y *= _TextureHeight;
o.uv = uv;
return o;
}
half4 frag(v2f i) : COLOR
{
/*half4 color = tex2D(_MainTex, i.uv);
// invert color
half temp = color.r;
color.r = color.b;
color.b = temp;
return color;*/
return tex2D(_MainTex, i.uv);
}
ENDCG
SubShader
{
Pass
{
//ZTest Off
//ZWrite Off
CGPROGRAM
#pragma fragmentoption ARB_precision_hint_fastest
#pragma vertex vert
#pragma fragment frag
ENDCG
}
}
Fallback off
}
Comment