Make Sun customizable!
This commit is contained in:
parent
c1b3e862d6
commit
9a9a88360a
|
|
@ -104,8 +104,22 @@ fn trace_fragment(in: Varying) -> vec3f {
|
|||
if (sphere == -1) {
|
||||
let theta = dot(ray, normalize(vec3(0., 0., 1.)));
|
||||
var env: vec3f; // in kilonits
|
||||
if (theta > 0.999988647254458) {
|
||||
env = vec3(1.6e6, 1.5e6, 1.0e6);
|
||||
|
||||
const ILLUMINANCE_LUX = 1e5;
|
||||
const ANGULAR_DIAMETER_DEG = 0.5; // Sun: 0.5°
|
||||
|
||||
const PI = 3.141592653589793;
|
||||
|
||||
const ANGULAR_DIAMETER_RAD = PI / 180.0 * ANGULAR_DIAMETER_DEG;
|
||||
const THETA = 0.5 * ANGULAR_DIAMETER_RAD;
|
||||
const COS_THETA = 1.0 - 0.5 * THETA * THETA; // approximately
|
||||
|
||||
const SOLID_ANGLE_SR = PI * THETA * THETA; // approximately
|
||||
const LUMINANCE_NIT = ILLUMINANCE_LUX / SOLID_ANGLE_SR;
|
||||
const LUMINANCE_KNIT = 1e-3 * LUMINANCE_NIT;
|
||||
|
||||
if (theta > COS_THETA) {
|
||||
env = vec3(1.0, 0.9, 0.6) * LUMINANCE_KNIT;
|
||||
} else {
|
||||
env = mix(vec3(0.5, 1.0, 2.0), vec3(2.0, 3.0, 4.0), 0.5 * theta + 0.5);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user