From 8f31ff8839d5269deb17dde9a489c9b1651f0974 Mon Sep 17 00:00:00 2001 From: Richard Zink Date: Tue, 13 Oct 2026 08:30:41 +0200 Subject: [PATCH] sun: halve disc size and add brightness gain --- config.js | 5 ++++- vendor/clouds3d.js | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/config.js b/config.js index c0b55a6..9eaad2e 100644 --- a/config.js +++ b/config.js @@ -649,7 +649,10 @@ window.CONFIG = { // drawn larger so it reads as a disc; the surface brightness and the // scene lighting are NOT scaled with it. sun: { - angularRadius: 0.0558 // 12x the physical 0.00465 rad + angularRadius: 0.0279, // 6x the physical 0.00465 rad + brightness: 1.8 // sun disc/halo gain + // angularRadius: 0.0558, brightness: 1.0 + // angularRadius: 0.0140, brightness: 2.4 }, // ------------------------------------------------------------------ diff --git a/vendor/clouds3d.js b/vendor/clouds3d.js index 03630c8..9fd47cd 100644 --- a/vendor/clouds3d.js +++ b/vendor/clouds3d.js @@ -142,6 +142,7 @@ var FRAG_SRC = [ 'uniform float uMoonFlipU;', 'uniform float uMoonFlipV;', 'uniform float uSunR;', // sun disc angular radius (radians) + 'uniform float uSunDiscGain;', // sun disc/halo brightness gain // 3D hash and value noise 'float hash3(vec3 p) {', 'p = fract(p * vec3(0.1031, 0.1030, 0.0973));', @@ -588,7 +589,7 @@ var FRAG_SRC = [ 'float discS = 1.0 - smoothstep(uSunR * 0.86, uSunR, angS);', 'float haloS = exp(-angN * 55.0) * 0.30 + exp(-angN * 14.0) * 0.12;', 'vec3 sunCol = mix(uLight, vec3(1.0, 0.92, 0.72), 0.35);', - 'col += sunCol * (discS * 1.15 + haloS) * (1.0 - nightFactor * 0.85);', + 'col += sunCol * (discS * 1.15 + haloS) * uSunDiscGain * (1.0 - nightFactor * 0.85);', '}', // ---- Moon disc: lunar map + geometric terminator -------------- // The near side always faces the observer, so the map is sampled @@ -1312,7 +1313,7 @@ function init(canvas) { uMoonTex: uMoonTex, uMoonTexOn: uMoonTexOn, uMoonR: uMoonR, uMoonFrac: uMoonFrac, uMoonEarth: uMoonEarth, uMoonLimb: uMoonLimb, uMoonBright: uMoonBright, uMoonHalo: uMoonHalo, - uMoonFlipU: uMoonFlipU, uMoonFlipV: uMoonFlipV, uSunR: uSunR, + uMoonFlipU: uMoonFlipU, uMoonFlipV: uMoonFlipV, uSunR: uSunR, uSunDiscGain: gl.getUniformLocation(prog, 'uSunDiscGain'), // terrain program terrain: { prog: terrainProg, @@ -2786,6 +2787,7 @@ var MOON_FLIP_V = MOON_CFG.flipV ? 1 : 0; var SUN_CFG = (window.CONFIG && window.CONFIG.sun) || {}; var SUN_ANG_R = (typeof SUN_CFG.angularRadius === 'number') ? Math.max(0.00465, SUN_CFG.angularRadius) : 0.00465 * 12; +var SUN_DISC_GAIN = (typeof SUN_CFG.brightness === 'number') ? Math.max(0, SUN_CFG.brightness) : 1.0; var MOON_TEX_SRC = (typeof window.__moonTex === 'string' && window.__moonTex) ? window.__moonTex : ((typeof MOON_CFG.texture === 'string' && MOON_CFG.texture) ? MOON_CFG.texture : 'vendor/moon.jpg'); @@ -7174,6 +7176,7 @@ window.clouds3dRender = function(target) { gl.uniform1f(s.uMoonFlipU, MOON_FLIP_U); gl.uniform1f(s.uMoonFlipV, MOON_FLIP_V); gl.uniform1f(s.uSunR, SUN_ANG_R); + gl.uniform1f(s.uSunDiscGain, SUN_DISC_GAIN); // texture path: RA alpha must land at world angle alpha + PI/2 - LST, // which with u = fract(0.5 + (H + uStarLon)/2PI) means uStarLon = LST - 3PI/2 var _sidTex = starSidereal();