예제 #1
0
 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));
     }
 }
예제 #2
0
 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);
     }
 }
예제 #3
0
    public static int CalculateCurrentLODMask(float4 lodDistances, float3 worldReferencePoint, ref LODParams lodParams)
    {
        var distanceSqr = CalculateDistanceSqr(worldReferencePoint, ref lodParams);

        return(CalculateCurrentLODMask(lodDistances, distanceSqr));
    }
예제 #4
0
    public static int CalculateCurrentLODIndex(float4 lodDistances, float3 worldReferencePoint, ref LODParams lodParams)
    {
        var distanceSqr = CalculateDistanceSqr(worldReferencePoint, ref lodParams);
        var lodIndex    = CalculateCurrentLODIndex(lodDistances, distanceSqr);

        return(lodIndex);
    }