//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); }
public static void HighQualityPreset() { FXAAEnableFXAA = true; MaxDepth = 4; LSM = LightSampleMode.TRUE_STRATIFIED; MaxLightSamples = 16; MaxReflectionSamples = 16; }
public static void FastHighQualityPreset() { FXAAEnableFXAA = true; MaxDepth = 4; LSM = LightSampleMode.FAKE; MaxLightSamples = 8; MaxReflectionSamples = 16; }
public static void UltraQualityPreset() { FXAAEnableFXAA = false; MaxDepth = 4; LSM = LightSampleMode.TRUE_STRATIFIED; MaxLightSamples = 32; MaxReflectionSamples = 32; }
//just one point public override Vector3[] GetPoints(uint maxSamples, LightSampleMode mode) { return(new Vector3[] { Position }); }
//Return multiple points for softshadows public abstract Vector3[] GetPoints(uint maxSamples, LightSampleMode mode);