Пытаюсь написать шейдер, и мне нужно получить угол(от 0 до 360) вокруг оси Y.
Вот что я получил, но таким способом можно получить только угол от 0 до 180 и всегда положительный.
Синтаксис:
Используется csharp
float3 dir = normalize(_WorldSpaceCameraPos.xyz - v.vertex.xyz);
float _float = (atan(dir.x/dir.z)*180.0)/3.1415+90.0;
float _float = (atan(dir.x/dir.z)*180.0)/3.1415+90.0;
Шейдер этот будет висеть на многих больших объектах, поэтому нужна хорошая оптимизация.
Есть способ получить угол от 0 до 360 без использования if/else(слышал, что нужно избегать их в шейдерах)?