//Return set of points based on setting
        public override Vector3[] GetPoints(uint maxSamples, LightSampleMode lsm)
        {
            int size = 1 + (int)Math.Abs(maxSamples - 1);

            Vector3[] res = new Vector3[size];
            res[size - 1] = Position;
            if (lsm == LightSampleMode.TRUE_STRATIFIED)
            {
                return(TrueStratified(maxSamples));
            }
            else if (lsm == LightSampleMode.RANDOM_PRECALC_STRATIFIED)
            {
                for (int i = 0; i < size - 1; i++)
                {
                    res[i] = allPoints[RRandom.ThreadLocalRandom.Instance.Next(0, uniqSamples - 1)];
                }
            }
            else
            {
                for (int i = 0; i < size - 1; i++)
                {
                    res[i] = allPoints[i % allPoints.Length];
                }
            }
            return(res);
        }
Exemple #2
0
 public static void HighQualityPreset()
 {
     FXAAEnableFXAA       = true;
     MaxDepth             = 4;
     LSM                  = LightSampleMode.TRUE_STRATIFIED;
     MaxLightSamples      = 16;
     MaxReflectionSamples = 16;
 }
Exemple #3
0
 public static void FastHighQualityPreset()
 {
     FXAAEnableFXAA       = true;
     MaxDepth             = 4;
     LSM                  = LightSampleMode.FAKE;
     MaxLightSamples      = 8;
     MaxReflectionSamples = 16;
 }
Exemple #4
0
 public static void UltraQualityPreset()
 {
     FXAAEnableFXAA       = false;
     MaxDepth             = 4;
     LSM                  = LightSampleMode.TRUE_STRATIFIED;
     MaxLightSamples      = 32;
     MaxReflectionSamples = 32;
 }
Exemple #5
0
 //just one point
 public override Vector3[] GetPoints(uint maxSamples, LightSampleMode mode)
 {
     return(new Vector3[] { Position });
 }
Exemple #6
0
 //Return multiple points for softshadows
 public abstract Vector3[] GetPoints(uint maxSamples, LightSampleMode mode);