From c23e5828c93979323fadf04ffec3b0f9d5d6160a Mon Sep 17 00:00:00 2001 From: JustinTimeCuber Date: Sun, 5 Nov 2023 21:49:57 -0500 Subject: [PATCH] rename to "importance sampling" and add link to github PR --- .../llbit/chunky/renderer/SunSamplingStrategy.java | 12 ++++++------ .../se/llbit/chunky/ui/render/tabs/LightingTab.java | 4 ++-- chunky/src/java/se/llbit/math/Ray.java | 5 +++-- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/chunky/src/java/se/llbit/chunky/renderer/SunSamplingStrategy.java b/chunky/src/java/se/llbit/chunky/renderer/SunSamplingStrategy.java index 6e280a1bc1..b24a121204 100644 --- a/chunky/src/java/se/llbit/chunky/renderer/SunSamplingStrategy.java +++ b/chunky/src/java/se/llbit/chunky/renderer/SunSamplingStrategy.java @@ -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; @@ -32,9 +32,9 @@ 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; @@ -42,7 +42,7 @@ public enum SunSamplingStrategy implements Registerable { this.diffuseSun = diffuseSun; this.strictDirectLight = strictDirectLight; this.sunLuminosity = sunLuminosity; - this.diffuseSampling = diffuseSampling; + this.importanceSampling = importanceSampling; } @Override @@ -76,5 +76,5 @@ public boolean isSunLuminosity() { return sunLuminosity; } - public boolean isDiffuseSampling() { return diffuseSampling; } + public boolean isImportanceSampling() { return importanceSampling; } } diff --git a/chunky/src/java/se/llbit/chunky/ui/render/tabs/LightingTab.java b/chunky/src/java/se/llbit/chunky/ui/render/tabs/LightingTab.java index fad34d5742..9a4be50c12 100644 --- a/chunky/src/java/se/llbit/chunky/ui/render/tabs/LightingTab.java +++ b/chunky/src/java/se/llbit/chunky/ui/render/tabs/LightingTab.java @@ -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); diff --git a/chunky/src/java/se/llbit/math/Ray.java b/chunky/src/java/se/llbit/math/Ray.java index 6f98a7261d..20f0fa14dc 100644 --- a/chunky/src/java/se/llbit/math/Ray.java +++ b/chunky/src/java/se/llbit/math/Ray.java @@ -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();