@call-me-sensei/toonlab 0.4.21 → 0.4.23

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.
Files changed (129) hide show
  1. package/NPM-LIBRARY.md +87 -27
  2. package/README.md +11 -10
  3. package/agents/PROMPTS.md +17 -3
  4. package/agents/README.md +13 -3
  5. package/agents/claude/CLAUDE.md +3 -0
  6. package/agents/codex/AGENTS.md +112 -159
  7. package/agents/cursor/toonlab.mdc +7 -3
  8. package/agents/examples/game-foundation.mjs +104 -0
  9. package/agents/references/game-lifecycle.md +57 -0
  10. package/agents/references/runtime-entry-points.md +26 -0
  11. package/agents/references/style-bundles.md +4 -1
  12. package/agents/skills/claude/asset-sourcing/SKILL.md +7 -4
  13. package/agents/skills/claude/environment/SKILL.md +4 -0
  14. package/agents/skills/claude/game-dev/SKILL.md +63 -87
  15. package/agents/skills/claude/lighting/SKILL.md +36 -0
  16. package/agents/skills/claude/post-processing/SKILL.md +8 -3
  17. package/agents/skills/claude/rock-ground-shaders/SKILL.md +10 -15
  18. package/agents/skills/claude/rockgen/SKILL.md +52 -21
  19. package/agents/skills/claude/scene-style-application/SKILL.md +4 -0
  20. package/agents/skills/claude/style-presets/SKILL.md +11 -8
  21. package/agents/skills/claude/toon-shading/SKILL.md +4 -0
  22. package/agents/skills/claude/vegetation-sky/SKILL.md +13 -7
  23. package/agents/skills/claude/visual-verification/SKILL.md +45 -119
  24. package/agents/skills/claude/water/SKILL.md +6 -2
  25. package/agents/skills/codex/asset-sourcing/SKILL.md +7 -4
  26. package/agents/skills/codex/environment/SKILL.md +4 -0
  27. package/agents/skills/codex/game-dev/SKILL.md +63 -87
  28. package/agents/skills/codex/lighting/SKILL.md +36 -0
  29. package/agents/skills/codex/post-processing/SKILL.md +8 -3
  30. package/agents/skills/codex/rock-ground-shaders/SKILL.md +10 -15
  31. package/agents/skills/codex/rockgen/SKILL.md +52 -21
  32. package/agents/skills/codex/scene-style-application/SKILL.md +4 -0
  33. package/agents/skills/codex/style-presets/SKILL.md +11 -8
  34. package/agents/skills/codex/toon-shading/SKILL.md +4 -0
  35. package/agents/skills/codex/vegetation-sky/SKILL.md +13 -7
  36. package/agents/skills/codex/visual-verification/SKILL.md +45 -119
  37. package/agents/skills/codex/water/SKILL.md +6 -2
  38. package/database/apply-one-catalog-seed.mjs +63 -0
  39. package/database/providers.mjs +1 -0
  40. package/database/seeds/catalog/0005_2026-08-c8-first12.sql +1101 -0
  41. package/database/seeds/catalog/0006_2026-09-c8-first100.sql +14245 -0
  42. package/database/seeds/catalog/0007_2026-09-c8-first100-primary-model.sql +14845 -0
  43. package/mcp/lab-management.mjs +11 -8
  44. package/mcp/public-catalog.mjs +0 -16
  45. package/mcp/tree-lab-contract.mjs +2381 -0
  46. package/mcp/vite-plugin.mjs +5 -1
  47. package/package.json +29 -18
  48. package/src/catalog/officialCatalog.js +1 -0
  49. package/src/catalog/officialCatalogAssetRuntime.js +98 -1
  50. package/src/catalog/officialCatalogLod.js +160 -16
  51. package/src/catalog/officialCatalogPlacement.js +52 -12
  52. package/src/catalog/officialCatalogProvider.js +79 -8
  53. package/src/catalog/officialCatalogRockPackage.js +172 -0
  54. package/src/cloud/cloudReprojection.js +40 -7
  55. package/src/cloud/cloudVolume.js +44 -7
  56. package/src/cloud/noise/baseShapeVolume.js +8 -6
  57. package/src/cloud/noise/cirrusMap.js +2 -1
  58. package/src/cloud/noise/curlNoise.js +2 -1
  59. package/src/cloud/noise/erosionVolume.js +2 -1
  60. package/src/cloud/noise/textureCache.js +77 -0
  61. package/src/cloud/noise/weatherMap.js +2 -1
  62. package/src/core/sha256.js +83 -0
  63. package/src/ground-shader/groundShaderMaterial.js +12 -3
  64. package/src/rock-shader/rockMaterial.js +205 -28
  65. package/src/rock-shader/rockShaderRuntime.js +17 -1
  66. package/src/rock-shader/rockShaderSettings.js +16 -0
  67. package/src/rockgen/index.js +9 -0
  68. package/src/rockgen/lod/index.js +1 -0
  69. package/src/rockgen/lod/rockDenseFieldPolicy.js +143 -0
  70. package/src/rockgen/rockDocument.js +899 -35
  71. package/src/rockgen/surface/c7GeologySurface.js +39 -9
  72. package/src/rockgen/surface/naturalRockSurface.js +1948 -0
  73. package/src/shaders-tsl/chunks/projected-water-caustics.js +14 -2
  74. package/src/shaders-tsl/chunks/water-foam.js +6 -6
  75. package/src/shaders-tsl/chunks/water-lighting.js +28 -5
  76. package/src/shaders-tsl/chunks/water-shore-state.js +5 -2
  77. package/src/shaders-tsl/chunks/water-waves.js +10 -5
  78. package/src/shaders-tsl/flower.js +7 -4
  79. package/src/shaders-tsl/grass.js +4 -3
  80. package/src/shaders-tsl/water-shore-state-simulation.js +3 -2
  81. package/src/shaders-tsl/water.js +209 -41
  82. package/src/sky/skySystem.js +30 -7
  83. package/src/toon/settings/perspectiveRemovalSettings.js +1 -1
  84. package/src/toon/toonSettings.js +74 -0
  85. package/src/vegetation/stylizedFlower.js +6 -0
  86. package/src/version.js +1 -1
  87. package/src/water/waterDetailSpectrum.js +91 -0
  88. package/src/water/waterDynamics.js +422 -0
  89. package/src/water/waterFoamParticles.js +196 -0
  90. package/src/water/waterFoamTexture.js +57 -0
  91. package/src/water/waterHydrodynamics.js +209 -0
  92. package/src/water/waterMaterial.js +1 -0
  93. package/src/water/waterRenderExtension.js +107 -0
  94. package/src/water/waterScenePasses.js +14 -6
  95. package/src/water/waterSettings.js +53 -26
  96. package/src/water/waterShoreMaterial.js +38 -14
  97. package/src/water/waterSpectralOcean.js +137 -0
  98. package/src/water/waterStageSettings.js +19 -1
  99. package/src/water/waterSurface.js +62 -18
  100. package/src/water/waterUnderwaterAtmosphere.js +30 -3
  101. package/types/catalog/officialCatalog.d.ts +1 -0
  102. package/types/catalog/officialCatalogPlacement.d.ts +4 -0
  103. package/types/catalog/officialCatalogRockPackage.d.ts +68 -0
  104. package/types/cloud/noise/baseShapeVolume.d.ts +1 -1
  105. package/types/cloud/noise/textureCache.d.ts +12 -0
  106. package/types/core/sha256.d.ts +2 -0
  107. package/types/index.d.ts +30 -0
  108. package/types/rock-shader/rockMaterial.d.ts +3 -0
  109. package/types/rock-shader/rockShaderSettings.d.ts +2 -0
  110. package/types/rockgen/index.d.ts +1 -0
  111. package/types/rockgen/lod/index.d.ts +1 -0
  112. package/types/rockgen/lod/rockDenseFieldPolicy.d.ts +181 -0
  113. package/types/rockgen/rockDocument.d.ts +654 -71
  114. package/types/rockgen/surface/naturalRockSurface.d.ts +100 -0
  115. package/types/shaders-tsl/chunks/projected-water-caustics.d.ts +7 -1
  116. package/types/shaders-tsl/chunks/water-lighting.d.ts +4 -3
  117. package/types/shaders-tsl/water.d.ts +2 -1
  118. package/types/version.d.ts +1 -1
  119. package/types/water/waterDetailSpectrum.d.ts +13 -0
  120. package/types/water/waterDynamics.d.ts +89 -0
  121. package/types/water/waterFoamParticles.d.ts +32 -0
  122. package/types/water/waterFoamTexture.d.ts +1 -0
  123. package/types/water/waterHydrodynamics.d.ts +49 -0
  124. package/types/water/waterRenderExtension.d.ts +16 -0
  125. package/types/water/waterScenePasses.d.ts +1 -1
  126. package/types/water/waterSettings.d.ts +1 -0
  127. package/types/water/waterSpectralOcean.d.ts +17 -0
  128. package/types/water/waterStageSettings.d.ts +1 -1
  129. package/types/water/waterUnderwaterAtmosphere.d.ts +19 -4
@@ -146,12 +146,18 @@ function c7Field(u, v, profile, seed) {
146
146
  const mineralPatch = smoothstep(0.48, 0.70, tileFbm(u, v, 5, seed + 67, 2));
147
147
  height += smoothstep(0.88, 0.975, fine) * mineralPatch * 0.014;
148
148
  } else if (profile.fabric === 3) {
149
- height += Math.sin((v * 8.5 + u * 0.62) * Math.PI * 2) * lerp(0.009, 0.024, macro);
149
+ const beddingWarp = (Math.sin(u * Math.PI * 2) * 0.16)
150
+ + (Math.sin(u * Math.PI * 4) * 0.06);
151
+ height += Math.sin((v * 8 + beddingWarp) * Math.PI * 2) * lerp(0.009, 0.024, macro);
150
152
  } else if (profile.fabric === 5) {
151
153
  height -= (1 - smoothstep(0.08, 0.26, micro)) * 0.085;
152
154
  }
153
155
  let value = clamp01(0.5 + ((macro - 0.5) * 0.44) + ((micro - 0.5) * 0.34) + ((fine - 0.5) * 0.18));
154
- if (profile.fabric === 3) value = clamp01(value + Math.sin((v * 9 + u * 0.5) * Math.PI * 2) * 0.08);
156
+ if (profile.fabric === 3) {
157
+ value = clamp01(value + Math.sin(
158
+ (v * 9 + (Math.sin(u * Math.PI * 2) * 0.18)) * Math.PI * 2,
159
+ ) * 0.08);
160
+ }
155
161
  return { fine, height, macro, micro, value };
156
162
  }
157
163
 
@@ -229,11 +235,15 @@ function createFractureSegments(profile, seed) {
229
235
  function fractureField(u, v, segments, seed) {
230
236
  let fracture = 0;
231
237
  for (const segment of segments) {
232
- fracture = Math.max(fracture, 1 - smoothstep(
233
- segment.width,
234
- segment.width * 2.8,
235
- pointToSegmentDistance(u, v, segment),
236
- ));
238
+ for (let offsetY = -1; offsetY <= 1; offsetY += 1) {
239
+ for (let offsetX = -1; offsetX <= 1; offsetX += 1) {
240
+ fracture = Math.max(fracture, 1 - smoothstep(
241
+ segment.width,
242
+ segment.width * 2.8,
243
+ pointToSegmentDistance(u + offsetX, v + offsetY, segment),
244
+ ));
245
+ }
246
+ }
237
247
  }
238
248
  return fracture * lerp(0.22, 1, smoothstep(0.28, 0.70, tileFbm(u, v, 11, seed + 241, 2)));
239
249
  }
@@ -286,11 +296,13 @@ export function createC7GeologyMapData({ geology, seed, size = 512 } = {}) {
286
296
  if (profile.fabric === 3) {
287
297
  const u = x / size;
288
298
  const v = y / size;
289
- const warpedBed = (v * 6.4) + (u * 0.26) + ((field.macro - 0.5) * 1.35)
299
+ const warpedBed = (v * 6) + ((field.macro - 0.5) * 1.35)
300
+ + (Math.sin(u * Math.PI * 2) * 0.18)
290
301
  + (Math.sin(u * Math.PI * 4) * 0.12);
291
302
  const bed = 0.5 + (0.5 * Math.sin(warpedBed * Math.PI * 2));
292
303
  const seamVariation = lerp(0.12, 1, tileNoise(u, v, 5, resolvedSeed + 91));
293
- const fineBed = 0.5 + (0.5 * Math.sin(((v * 16) + (u * 0.42)
304
+ const fineBed = 0.5 + (0.5 * Math.sin(((v * 16)
305
+ + (Math.sin(u * Math.PI * 2) * 0.22)
294
306
  + ((field.micro - 0.5) * 0.72)) * Math.PI * 2));
295
307
  const creamSeam = Math.max(
296
308
  smoothstep(0.90, 0.992, bed) * seamVariation,
@@ -344,6 +356,20 @@ export function createC7GeologyMapData({ geology, seed, size = 512 } = {}) {
344
356
  }
345
357
  }
346
358
  }
359
+ let horizontalEdgeDelta = 0;
360
+ let verticalEdgeDelta = 0;
361
+ for (let index = 0; index < size; index += 1) {
362
+ for (let channel = 0; channel < 3; channel += 1) {
363
+ horizontalEdgeDelta += Math.abs(
364
+ maps.baseColor[((index * size) * 4) + channel]
365
+ - maps.baseColor[((index * size + size - 1) * 4) + channel],
366
+ ) / 255;
367
+ verticalEdgeDelta += Math.abs(
368
+ maps.baseColor[(index * 4) + channel]
369
+ - maps.baseColor[((((size - 1) * size) + index) * 4) + channel],
370
+ ) / 255;
371
+ }
372
+ }
347
373
  return {
348
374
  audit: Object.freeze({
349
375
  fractureSegments: fractureSegments.length,
@@ -353,6 +379,10 @@ export function createC7GeologyMapData({ geology, seed, size = 512 } = {}) {
353
379
  roles: Object.freeze(Object.keys(maps)),
354
380
  seed: resolvedSeed,
355
381
  size,
382
+ tileEdgeMeanAbsoluteDelta: Object.freeze({
383
+ horizontal: horizontalEdgeDelta / (size * 3),
384
+ vertical: verticalEdgeDelta / (size * 3),
385
+ }),
356
386
  }),
357
387
  maps,
358
388
  };