mapspinner 0.1.14 → 0.1.16

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mapspinner",
3
- "version": "0.1.14",
3
+ "version": "0.1.16",
4
4
  "description": "WebGL2 Earth-scale terrain rendering SDK for interactive globe applications",
5
5
  "main": "src/index.js",
6
6
  "exports": {
package/src/gl-render.js CHANGED
@@ -792,7 +792,7 @@ export async function initMapspinnerRender(gl, opts = {}) {
792
792
  gl.uniform1f(U('uTexTileM'), _g('texTile', 2400.0)); // metres per repeat (user: 24m read as noise/rock -- 100x bigger)
793
793
  gl.uniform1f(U('uTexNrmK'), _g('texNrmK', 3.0)); // 0.8 -> 3.0 (user 2026-06-11 'displacement normals must be THE texture normals': A/B-measured -- 0.8 was visually NIL (0% of px changed >10 on toggle), 2.0 gave 1.3%, 5.0 gave 22%; the normalize(nLit+texDn) compresses the response so visibility is non-linear in K. 3.0 makes the displacement-derived relief clearly read; the loader's per-texel 0.9 tilt cap keeps the historical saturation/scramble class structurally impossible at any apply strength)
794
794
  gl.uniform1f(U('uTexMix'), _g('texMix', 0.85)); // splat blend amount (0 = off)
795
- gl.uniform1f(U('uTexWarp'), _g('texWarp', 0.125)); // anti-repetition warp amplitude (user 2026-06-11: halved a third time from 1.0)
795
+ gl.uniform1f(U('uTexWarp'), _g('texWarp', 0.5)); // anti-repetition warp amplitude (0.5 = ~0.6 tile offset max, breaks tile boundaries)
796
796
  gl.uniform1f(U('uTexPhoto'), _g('texPhoto', 0.0)); // raw photo-color fraction (0 = patch matches the macro shade exactly)
797
797
  gl.uniform1f(U('uTexPhotoNear'), _g('texPhotoNear', 0.45)); // near-field material identity (photo hue at macro luminance; user 2026-06-12 'must be either grass or sand')
798
798
  gl.uniform4f(U('uSurfMeanL'), _surfMeanL[0], _surfMeanL[1], _surfMeanL[2], _surfMeanL[3]); // per-layer mean linear luminance (shade-match divisor)
@@ -497,7 +497,7 @@ export async function initMapspinnerPlanet(gl, opts = {}) {
497
497
  // ONLY to splitDist (NOT distF below): distF = sf*8.0 is the altitude-weighting term, and scaling sf
498
498
  // into BOTH compounds into ~2 levels at altitude (witnessed: base sf*2 gave mx 5->7 at 8000km). Keep
499
499
  // distF on the original sf so the push is a clean ONE step. maxLevel (16) is untouched -- no new LOD.
500
- const LOD_STEP = 4.0; // push ALL LODs out ANOTHER step (user 2026-06-09 #2, after the 1.0->2.0 first step):
500
+ const LOD_STEP = 3.0; // push ALL LODs 0.75 step (reduced from 4.0 to target ~600 quads at all alts):
501
501
  qt.computeSplitDist(sf * LOD_STEP, gl.drawingBufferHeight || 480, fovy);
502
502
  // DETAIL-FARTHER (user 2026-06-01h: each LOD pop should happen ~3x farther out -- 6km detail at
503
503
  // 24km, etc.). A quad subdivides when camAlt < l * splitDist * distFactor, so tripling distFactor