mapspinner 0.1.70 → 0.1.72

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.70",
3
+ "version": "0.1.72",
4
4
  "description": "WebGL2 Earth-scale terrain rendering SDK for interactive globe applications",
5
5
  "main": "src/index.js",
6
6
  "exports": {
@@ -1780,6 +1780,7 @@ void main() {
1780
1780
  // vH > -2 gate cut the photo textures at the waterline, leaving the seabed flat-colored.
1781
1781
  float texFarFade = 1.0 - smoothstep(8000.0, 10000.0, pxWorld);
1782
1782
  if (uHasSurfTex > 0.5 && uTexMix > 0.001 && texFarFade > 0.001) {
1783
+ vec3 biomeC = albedo; // SUBTLE landscape color variation (user 2026-06-14 're-introduce ... use existing data, make it subtle'): the macro biome/climate color is ALREADY computed; save it now and mix a touch back after the material override (no new computation).
1783
1784
  // material weights from the existing gates (climate = vClimate: z=temp, w=humid)
1784
1785
  // SAND GATE = THE MACRO DESERT GATE (user 2026-06-11 'all the grassy areas need to have the
1785
1786
  // grass texture'): the old humid<0.42 band splatted SAND across savanna/steppe/meadow-edge
@@ -1908,7 +1909,10 @@ void main() {
1908
1909
  highp vec3 wt4 = wt * 4.0;
1909
1910
  vec4 albA = surfTriTap(uSurfAlb, wt4, tw, lA);
1910
1911
  vec3 cA = vec3(dot(albA.rgb, LUMA));
1911
- vec3 nA = surfTriNrm(uSurfNrm, wt4, tw, lA, n) * 1.4 + surfTriNrm(uSurfNrm, wt, tw, lA, n) * 0.8; // high + low-octave normal
1912
+ // 3 normal octaves (user 2026-06-14 'add an even lower freq octave, displacement/normals only,
1913
+ // 4x less frequent'): wt4 high (detail) + wt low (2.4km) + wt*0.25 VERY-low (9.6km) -- the very-
1914
+ // low one breaks the far repetition even more. Normals/displacement only (no albedo).
1915
+ vec3 nA = surfTriNrm(uSurfNrm, wt4, tw, lA, n) * 1.4 + surfTriNrm(uSurfNrm, wt, tw, lA, n) * 0.8 + surfTriNrm(uSurfNrm, wt * 0.25, tw, lA, n) * 0.55;
1912
1916
  float dispA = albA.a;
1913
1917
  // NO BIOME COLOR INHERITANCE (user 2026-06-14 'take away all biome color inheritance, it will
1914
1918
  // speed it up' -- and fixes 'sand near grass tinted green'): each layer wears its OWN material
@@ -1920,7 +1924,7 @@ void main() {
1920
1924
  if (wB > 0.02) { // second layer only where a real transition exists
1921
1925
  vec4 albB = surfTriTap(uSurfAlb, wt4, tw, lB);
1922
1926
  vec3 cB = vec3(dot(albB.rgb, LUMA));
1923
- vec3 nB = surfTriNrm(uSurfNrm, wt4, tw, lB, n) * 1.4 + surfTriNrm(uSurfNrm, wt, tw, lB, n) * 0.8; // high + low-octave normal
1927
+ vec3 nB = surfTriNrm(uSurfNrm, wt4, tw, lB, n) * 1.4 + surfTriNrm(uSurfNrm, wt, tw, lB, n) * 0.8 + surfTriNrm(uSurfNrm, wt * 0.25, tw, lB, n) * 0.55; // + very-low octave
1924
1928
  float dispB = albB.a;
1925
1929
  // HEIGHT-BLEND POKE-THROUGH (user 'each texture's higher areas should poke through the other,
1926
1930
  // offset by the ramp'): height = displacement + a weight-ramp offset (gate positions the
@@ -1953,15 +1957,22 @@ void main() {
1953
1957
  // grass/sand interlocks (fingers) at ALL distances -- still the texture DISPLACEMENT, not noise.
1954
1958
  float dispA_lo = surfTriTap(uSurfAlb, wt, tw, lA).a;
1955
1959
  float dispB_lo = surfTriTap(uSurfAlb, wt, tw, lB).a;
1956
- float hA = (dispA - 0.5) * 1.8 + (dispA_lo - 0.5) * 2.8 + wRamp + ordA * 0.45;
1957
- float hB = (dispB - 0.5) * 1.8 + (dispB_lo - 0.5) * 2.8 - wRamp + ordB * 0.45;
1960
+ float dispA_vlo = surfTriTap(uSurfAlb, wt * 0.25, tw, lA).a; // very-low (9.6km) displacement -> even-larger-scale boundary undulation (less repetitive far)
1961
+ float dispB_vlo = surfTriTap(uSurfAlb, wt * 0.25, tw, lB).a;
1962
+ float hA = (dispA - 0.5) * 1.5 + (dispA_lo - 0.5) * 2.2 + (dispA_vlo - 0.5) * 2.2 + wRamp + ordA * 0.45;
1963
+ float hB = (dispB - 0.5) * 1.5 + (dispB_lo - 0.5) * 2.2 + (dispB_vlo - 0.5) * 2.2 - wRamp + ordB * 0.45;
1958
1964
  float mh = max(hA, hB) - bw;
1959
1965
  float waH = max(hA - mh, 0.0), wbH = max(hB - mh, 0.0);
1960
1966
  float bSharp = waH / max(waH + wbH, 1e-4);
1961
1967
  texAlb = vec4(mix(cB, cA, bSharp), mix(dispB, dispA, bSharp));
1962
1968
  texNrm = mix(nB, nA, bSharp);
1963
1969
  vec3 mcB = lB < 0.5 ? bcGrass : (lB < 1.5 ? bcRock : (lB < 2.5 ? bcShore : bcSnow));
1964
- texMatColor = mix(mcB, mcA, bSharp); // material color, broken up by the (noise-augmented) bSharp below
1970
+ // HARD color pick (user 2026-06-14 'grass mixed with sand creates a hard line between slope
1971
+ // grass and grass around it -- match the two grasses'): a linear color mix tan-tinted the grass
1972
+ // inside the sand zone so it differed from pure grass outside. Now the boundary is FINGERED by
1973
+ // the LOD-stable displacement, so a near-hard color pick keeps grass PURE bcGrass everywhere
1974
+ // (the two grasses match) and flips cleanly to sand along the fingers -- no tint, no straight line.
1975
+ texMatColor = mix(mcB, mcA, smoothstep(0.42, 0.58, bSharp));
1965
1976
  }
1966
1977
  // MATCH COLOR TO NORMAL (user 2026-06-14 'green grassy patches with the rock normals -- should be
1967
1978
  // rock colored or grass normals'): texNrm follows the displacement height-blend (rock on bumps in
@@ -2001,6 +2012,7 @@ void main() {
2001
2012
  // base = flat MATERIAL color (far/low-k); near = structured detail. The macro biome albedo is no
2002
2013
  // longer the base, so NO biome color bleeds into the ground (user 'take away all biome inheritance').
2003
2014
  albedo = clamp(mix(texMatColor, detail, k), 0.0, 1.0);
2015
+ albedo = mix(albedo, biomeC, 0.16); // subtle climate/biome tint back on top of the material color (deserts tanner, forests greener) -- at all distances for landscape variety
2004
2016
  // FAKE MIDDAY AO from the displacement (user 2026-06-14 'darken the deepest parts of the
2005
2017
  // displacement textures a little'): the texture's LOWEST displacement = crevices/pits; darken
2006
2018
  // them ~18% so the surface reads as sunlit-from-above with soft self-occlusion in the lows.