Skip to content

Commit

Permalink
rename to "importance sampling" and add link to github PR
Browse files Browse the repository at this point in the history
  • Loading branch information
JustinTimeCuber committed Nov 6, 2023
1 parent 7f6e0b2 commit c23e582
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ public enum SunSamplingStrategy implements Registerable {
OFF("Off", "Sun is not sampled with next event estimation.", false, true, false, true, false),
NON_LUMINOUS("Non-Luminous", "Sun is drawn on the skybox but it does not contribute to the lighting of the scene.", false, false, false, false, false),
FAST("Fast", "Fast sun sampling algorithm. Lower noise but does not correctly model some visual effects.", true, false, false, false, false),
HIGH_QUALITY("High Quality", "High quality sun sampling. More noise but correctly models visual effects such as caustics.", true, true, true, true, false),
DIFFUSE("Diffuse", "Sun is sampled on a certain percentage of diffuse reflections. Correctly models visual effects while reducing noise for direct and diffuse illumination.", false, true, false, true, true);
IMPORTANCE("Importance", "Sun is sampled on a certain percentage of diffuse reflections. Correctly models visual effects while reducing noise for direct and diffuse illumination.", false, true, false, true, true),
HIGH_QUALITY("High Quality", "High quality sun sampling. More noise but correctly models visual effects such as caustics.", true, true, true, true, false);

private final String displayName;
private final String description;
Expand All @@ -32,17 +32,17 @@ public enum SunSamplingStrategy implements Registerable {
private final boolean diffuseSun;
private final boolean strictDirectLight;
private final boolean sunLuminosity;
private final boolean diffuseSampling;
private final boolean importanceSampling;

SunSamplingStrategy(String displayName, String description, boolean sunSampling, boolean diffuseSun, boolean strictDirectLight, boolean sunLuminosity, boolean diffuseSampling) {
SunSamplingStrategy(String displayName, String description, boolean sunSampling, boolean diffuseSun, boolean strictDirectLight, boolean sunLuminosity, boolean importanceSampling) {
this.displayName = displayName;
this.description = description;

this.sunSampling = sunSampling;
this.diffuseSun = diffuseSun;
this.strictDirectLight = strictDirectLight;
this.sunLuminosity = sunLuminosity;
this.diffuseSampling = diffuseSampling;
this.importanceSampling = importanceSampling;
}

@Override
Expand Down Expand Up @@ -76,5 +76,5 @@ public boolean isSunLuminosity() {
return sunLuminosity;
}

public boolean isDiffuseSampling() { return diffuseSampling; }
public boolean isImportanceSampling() { return importanceSampling; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -140,14 +140,14 @@ public LightingTab() throws IOException {
(observable, oldValue, newValue) -> {
scene.setSunSamplingStrategy(newValue);

boolean visible = scene != null && scene.getSunSamplingStrategy().isDiffuseSampling();
boolean visible = scene != null && scene.getSunSamplingStrategy().isImportanceSampling();
diffuseSamplingDetailsPane.setVisible(visible);
diffuseSamplingDetailsPane.setExpanded(visible);
diffuseSamplingDetailsPane.setManaged(visible);
});
sunSamplingStrategy.setTooltip(new Tooltip("Determines how the sun is sampled at each bounce."));

boolean visible = scene != null && scene.getSunSamplingStrategy().isDiffuseSampling();
boolean visible = scene != null && scene.getSunSamplingStrategy().isImportanceSampling();
diffuseSamplingDetailsPane.setVisible(visible);
diffuseSamplingDetailsPane.setExpanded(visible);
diffuseSamplingDetailsPane.setManaged(visible);
Expand Down
5 changes: 3 additions & 2 deletions chunky/src/java/se/llbit/math/Ray.java
Original file line number Diff line number Diff line change
Expand Up @@ -276,8 +276,9 @@ public final void diffuseReflection(Ray ray, Random random, Scene scene) {
double ty = r * FastMath.sin(theta);
double tz; // to be initialized later, after potentially changing tx and ty

// diffuse sun sampling (importance sampling)
if(scene.getSunSamplingStrategy().isDiffuseSampling()) {
// importance sampling, see PR #1604
// https://github.com/chunky-dev/chunky/pull/1604/
if(scene.getSunSamplingStrategy().isImportanceSampling()) {

// constants
final double sun_az = scene.sun().getAzimuth();
Expand Down

0 comments on commit c23e582

Please sign in to comment.