mapspinner 0.1.50 → 0.1.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/gl-render.js +12 -2
- package/src/shaders/terrain.glsl +7 -1
package/package.json
CHANGED
package/src/gl-render.js
CHANGED
|
@@ -788,7 +788,12 @@ export async function initMapspinnerRender(gl, opts = {}) {
|
|
|
788
788
|
// extends the horizon to tens of km at low altitude so near-shore relief stays in view (negligible
|
|
789
789
|
// depth-precision cost: 500m vs R~6.37e6). Both the cull and the draw use this (single source).
|
|
790
790
|
const RHORIZON = R - 500.0;
|
|
791
|
-
|
|
791
|
+
// UNDERWATER FAR-PLANE FIX (user 2026-06-14 'at -214m visible, at -500m it disappears'): when the
|
|
792
|
+
// camera is more than 500m below sea level, camDist < RHORIZON so the sea-level horizon is imaginary
|
|
793
|
+
// (-> 0) and alt is negative; the old max(horizon, alt*8) then collapsed the far plane to ~0 and the
|
|
794
|
+
// whole scene vanished past -500m deep (= the 'ocean looks shallow/empty' when exploring). Floor the
|
|
795
|
+
// far reach to 60km when submerged so the seabed + the underwater view stay visible.
|
|
796
|
+
const horizon = (camDist > RHORIZON) ? Math.sqrt(camDist*camDist - RHORIZON*RHORIZON) : 60000.0;
|
|
792
797
|
// MATCH render()'s near exactly (2026-06-14 jank fix): the cull frustum must use the SAME near
|
|
793
798
|
// as the draw frustum, else behind-limb/screen-AABB culling diverges from what is actually drawn
|
|
794
799
|
// at the deck (cull near was max(*0.1,0.1) while render used the <2m 0.05 branch).
|
|
@@ -831,7 +836,12 @@ export async function initMapspinnerRender(gl, opts = {}) {
|
|
|
831
836
|
// extends the horizon to tens of km at low altitude so near-shore relief stays in view (negligible
|
|
832
837
|
// depth-precision cost: 500m vs R~6.37e6). Both the cull and the draw use this (single source).
|
|
833
838
|
const RHORIZON = R - 500.0;
|
|
834
|
-
|
|
839
|
+
// UNDERWATER FAR-PLANE FIX (user 2026-06-14 'at -214m visible, at -500m it disappears'): when the
|
|
840
|
+
// camera is more than 500m below sea level, camDist < RHORIZON so the sea-level horizon is imaginary
|
|
841
|
+
// (-> 0) and alt is negative; the old max(horizon, alt*8) then collapsed the far plane to ~0 and the
|
|
842
|
+
// whole scene vanished past -500m deep (= the 'ocean looks shallow/empty' when exploring). Floor the
|
|
843
|
+
// far reach to 60km when submerged so the seabed + the underwater view stay visible.
|
|
844
|
+
const horizon = (camDist > RHORIZON) ? Math.sqrt(camDist*camDist - RHORIZON*RHORIZON) : 60000.0;
|
|
835
845
|
const near = altAboveTerrain < 2.0 ? 0.05 : Math.max(altAboveTerrain * 0.1, 0.05);
|
|
836
846
|
const _fBlend = Math.min(1.0, Math.max(0.0, (alt - 500000.0) / 4500000.0));
|
|
837
847
|
const farGround = Math.max(horizon, alt * 8.0);
|
package/src/shaders/terrain.glsl
CHANGED
|
@@ -1391,7 +1391,13 @@ vec3 terrainAlbedoClimate(float h, float slope, float rockSlope, float temp, flo
|
|
|
1391
1391
|
return mix(c, vec3(0.82, 0.88, 0.94), seaIce * 0.9);
|
|
1392
1392
|
}
|
|
1393
1393
|
// biome weight: full on gentle lowland, fading where rock/snow/steep takes over.
|
|
1394
|
-
|
|
1394
|
+
// VEG SLOPE GATE (user 2026-06-14 'hard line of light grass around rocks'): the gate faded veg over
|
|
1395
|
+
// `slope` (the macro, gentler) while the ROCK blend keys off `rockSlope` (the raw geometric normal,
|
|
1396
|
+
// steeper). The two thresholds didn't coincide, so on the approach to a rock the dark biome-green
|
|
1397
|
+
// vegetation dropped out a beat BEFORE the rock arrived -> a light bare-grass ring. Key veg off the
|
|
1398
|
+
// SAME rockSlope so vegetation fades EXACTLY as rock fades in -> grass stays dark right up to the
|
|
1399
|
+
// rock with no light gap, and veg is 0 wherever rock is full (no biome-green bleeding onto rock).
|
|
1400
|
+
float veg = (1.0 - smoothstep(bandEdgesHi.x, bandEdgesHi.y, h)) * (1.0 - smoothstep(slopeRock.x, slopeRock.y, rockSlope));
|
|
1395
1401
|
// ELEVATION + LATITUDE BIOME BIAS (user 2026-06-02: 'the hypsometric ramp should influence biome
|
|
1396
1402
|
// distribution, pulling biomes out of their anchor areas a bit for better distribution'). On top
|
|
1397
1403
|
// of the anchor climate temp/humid, bias the EFFECTIVE temperature DOWN with elevation (lapse rate
|