static float CalculateDistanceSqr(float3 worldReferencePoint, ref LODParams lodParams) { if (lodParams.isOrtho) { return(lodParams.distanceScale * lodParams.distanceScale); } else { return(math.lengthsq(lodParams.cameraPos - worldReferencePoint) * (lodParams.distanceScale * lodParams.distanceScale)); } }
static float CalculateDistanceSqr(float3 worldReferencePoint, ref LODParams lodParams) { if (lodParams.isOrtho) { //return worldSpaceSize * lodParams.screenRelativeMetric; //@TODO: throw new System.NotImplementedException(); } else { return(math.lengthSquared(lodParams.cameraPos - worldReferencePoint) * lodParams.screenRelativeMetric); } }
public static int CalculateCurrentLODMask(float4 lodDistances, float3 worldReferencePoint, ref LODParams lodParams) { var distanceSqr = CalculateDistanceSqr(worldReferencePoint, ref lodParams); return(CalculateCurrentLODMask(lodDistances, distanceSqr)); }
public static int CalculateCurrentLODIndex(float4 lodDistances, float3 worldReferencePoint, ref LODParams lodParams) { var distanceSqr = CalculateDistanceSqr(worldReferencePoint, ref lodParams); var lodIndex = CalculateCurrentLODIndex(lodDistances, distanceSqr); return(lodIndex); }