When making this website, i wanted a simple, reasonable way to make it look good on most displays. Not counting any minimization techniques, the following 58 bytes worked well for me:
main {
max-width: 38rem;
padding: 2rem;
margin: auto;
}
float2 WorldToScreenPos(float3 pos){ | |
pos = normalize(pos - _WorldSpaceCameraPos)*(_ProjectionParams.y + (_ProjectionParams.z - _ProjectionParams.y))+_WorldSpaceCameraPos; | |
float2 uv =0; | |
float3 toCam = mul(unity_WorldToCamera, pos); | |
float camPosZ = toCam.z; | |
float height = 2 * camPosZ / unity_CameraProjection._m11; | |
float width = _ScreenParams.x / _ScreenParams.y * height; | |
uv.x = (toCam.x + width / 2)/width; | |
uv.y = (toCam.y + height / 2)/width; | |
return uv; |