Shader noob here. I wrote myself a billboard shader: Code (CSharp): float4 vertex = i.vertex; float2 camera = mul(unity_WorldToObject, float4(_WorldSpaceCameraPos, 1)).xz; float cosa = dot(float2(0, -1), camera) / length(camera); float direction = dot(float2(-1, 0), camera); float angle = sign(direction) * acos(cosa); vertex = rotate(vertex, angle); o.vertex = mul(UNITY_MATRIX_MVP, vertex); This works very good except for the flickering. I also applied a script to the meshobject which uses Code (CSharp): transform.LookAt(camera) so i can reliably reproduce the error i saw occasionally which appeared when the objects normal was directly pointing at the camera. That's when the mesh starts flickering. It's probably because of how i calculate the delta angle but I'm kind of lost. The error: https://giphy.com/gifs/l3vRmutGsDjSFqeLC What bugs me is that the flickering also appears when just rotating the camera, although i never use the camera rotation in my calculations.