@call-me-sensei/toonlab 0.3.1 → 0.4.20

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 (761) hide show
  1. package/NPM-LIBRARY.md +225 -0
  2. package/README.md +588 -184
  3. package/agents/PROMPTS.md +87 -0
  4. package/agents/README.md +54 -0
  5. package/agents/claude/CLAUDE.md +8 -0
  6. package/agents/codex/AGENTS.md +159 -0
  7. package/agents/cursor/toonlab.mdc +37 -0
  8. package/agents/references/anime-art-direction.md +24 -0
  9. package/agents/references/asset-sourcing-policy.md +23 -0
  10. package/agents/references/custom-gap-report.md +16 -0
  11. package/agents/references/mcp-asset-discovery.md +104 -0
  12. package/agents/references/runtime-entry-points.md +175 -0
  13. package/agents/references/style-bundles.md +71 -0
  14. package/agents/skills/claude/asset-sourcing/SKILL.md +275 -0
  15. package/agents/skills/claude/environment/SKILL.md +59 -0
  16. package/agents/skills/claude/game-dev/SKILL.md +100 -0
  17. package/agents/skills/claude/post-processing/SKILL.md +44 -0
  18. package/agents/skills/claude/rock-ground-shaders/SKILL.md +134 -0
  19. package/agents/skills/claude/rockgen/SKILL.md +30 -0
  20. package/agents/skills/claude/scene-style-application/SKILL.md +74 -0
  21. package/agents/skills/claude/style-presets/SKILL.md +101 -0
  22. package/agents/skills/claude/toon-shading/SKILL.md +44 -0
  23. package/agents/skills/claude/vegetation-sky/SKILL.md +167 -0
  24. package/agents/skills/claude/visual-verification/SKILL.md +136 -0
  25. package/agents/skills/claude/water/SKILL.md +105 -0
  26. package/agents/skills/codex/asset-sourcing/SKILL.md +275 -0
  27. package/agents/skills/codex/environment/SKILL.md +59 -0
  28. package/agents/skills/codex/game-dev/SKILL.md +100 -0
  29. package/agents/skills/codex/post-processing/SKILL.md +44 -0
  30. package/agents/skills/codex/rock-ground-shaders/SKILL.md +134 -0
  31. package/agents/skills/codex/rockgen/SKILL.md +30 -0
  32. package/agents/skills/codex/scene-style-application/SKILL.md +74 -0
  33. package/agents/skills/codex/style-presets/SKILL.md +101 -0
  34. package/agents/skills/codex/toon-shading/SKILL.md +44 -0
  35. package/agents/skills/codex/vegetation-sky/SKILL.md +167 -0
  36. package/agents/skills/codex/visual-verification/SKILL.md +136 -0
  37. package/agents/skills/codex/water/SKILL.md +105 -0
  38. package/cli/toonlab.mjs +53 -0
  39. package/compose.yaml +20 -0
  40. package/database/apply-sql.mjs +141 -0
  41. package/database/client.mjs +39 -0
  42. package/database/creation-tags.mjs +23 -0
  43. package/database/env.mjs +16 -0
  44. package/database/fal-patina.mjs +131 -0
  45. package/database/generation-service.mjs +415 -0
  46. package/database/migrations/0001_local_workspace.sql +120 -0
  47. package/database/migrations/0002_file_ownership.sql +11 -0
  48. package/database/migrations/0003_remove_autosaves_from_library.sql +7 -0
  49. package/database/migrations/0004_catalog_asset_packs.sql +39 -0
  50. package/database/migrations/0005_creation_tag_discovery.sql +1 -0
  51. package/database/migrations/0006_normalize_creation_tags.sql +28 -0
  52. package/database/migrations/0007_creation_revisions.sql +80 -0
  53. package/database/migrations/0008_creation_revision_hardening.sql +98 -0
  54. package/database/migrations/0009_creation_revision_delete_integrity.sql +11 -0
  55. package/database/migrations/0010_external_catalog_assets.sql +28 -0
  56. package/database/providers.mjs +644 -0
  57. package/database/repository.mjs +1073 -0
  58. package/database/seeds/catalog/0001_empty_official_catalog.sql +4 -0
  59. package/database/seeds/catalog/0002_2026-08.sql +19454 -0
  60. package/database/seeds/catalog/0003_2026-08-open-assets.sql +159086 -0
  61. package/database/seeds/catalog/0004_2026-08-c7-rocks.sql +39405 -0
  62. package/mcp/lab-management.mjs +629 -0
  63. package/mcp/public-catalog.mjs +168 -0
  64. package/mcp/server.mjs +1044 -63
  65. package/mcp/vite-plugin.mjs +519 -26
  66. package/mcp/workspace.mjs +26 -1
  67. package/package.json +334 -46
  68. package/scripts/generate-catalog-seed.mjs +324 -0
  69. package/scripts/setup-local.mjs +128 -0
  70. package/src/agents/index.js +7 -0
  71. package/src/agents/sceneStyleOperations.js +169 -0
  72. package/src/asset-policy/catalogLicenses.js +102 -0
  73. package/src/asset-policy/index.js +315 -0
  74. package/src/assetlib/assetRef.js +1 -1
  75. package/src/assetlib/galleryMaterialFamily.js +165 -0
  76. package/src/assetlib/index.js +6 -2
  77. package/src/assetlib/loadImported.js +15 -1
  78. package/src/assetlib/plateau.js +188 -0
  79. package/src/assetlib/plateauLandmarks.js +144 -0
  80. package/src/assetlib/plateauViewer.js +348 -0
  81. package/src/assetlib/sources.js +16 -2
  82. package/src/catalog/manifest.js +11 -1
  83. package/src/catalog/officialCatalog.js +4 -0
  84. package/src/catalog/officialCatalogAssetRuntime.js +324 -0
  85. package/src/catalog/officialCatalogLod.js +183 -0
  86. package/src/catalog/officialCatalogPlacement.js +243 -0
  87. package/src/catalog/officialCatalogProvider.js +334 -0
  88. package/src/character/animationRetarget.js +1084 -0
  89. package/src/character/characterRig.js +6 -1
  90. package/src/character/characterRuntime.js +544 -0
  91. package/src/character/groundStabilizer.js +137 -0
  92. package/src/character/index.js +8 -0
  93. package/src/character/locomotionActions.js +74 -0
  94. package/src/character/locomotionStateMachine.js +241 -0
  95. package/src/character/mannequinAsset.js +15 -0
  96. package/src/character/mannequinAssetUrl.browser.js +4 -0
  97. package/src/character/mannequinAssetUrl.node.js +3 -0
  98. package/src/character/modelLoader.js +92 -12
  99. package/src/character/walkableCharacterRuntime.js +284 -0
  100. package/src/character/waterInteractionController.js +217 -0
  101. package/src/cloud/ambientSkyBaker.js +248 -0
  102. package/src/cloud/cloudLighting.js +1114 -0
  103. package/src/cloud/cloudParams.js +819 -0
  104. package/src/cloud/cloudReprojection.js +563 -0
  105. package/src/cloud/cloudStyle.js +780 -0
  106. package/src/cloud/cloudStyleSnapshots.js +387 -0
  107. package/src/cloud/cloudVolume.js +1903 -0
  108. package/src/cloud/heroCloudRecipe.js +404 -0
  109. package/src/cloud/index.js +42 -0
  110. package/src/cloud/noise/baseShapeVolume.js +331 -0
  111. package/src/cloud/noise/cirrusMap.js +131 -0
  112. package/src/cloud/noise/curlNoise.js +289 -0
  113. package/src/cloud/noise/erosionVolume.js +188 -0
  114. package/src/cloud/noise/noiseVolume.js +202 -0
  115. package/src/cloud/noise/periodicNoise3.js +295 -0
  116. package/src/cloud/noise/weatherMap.js +470 -0
  117. package/src/cloud/paramSchema.js +458 -0
  118. package/src/collisionMetadata.js +320 -0
  119. package/src/core/systemStylePolicy.js +32 -0
  120. package/src/environment/dayCurves.js +146 -0
  121. package/src/environment/environmentGroundFieldPass.js +354 -0
  122. package/src/environment/environmentMaterialAdapter.js +144 -6
  123. package/src/environment/environmentPresets.js +486 -90
  124. package/src/environment/environmentRigs.js +17 -2
  125. package/src/environment/environmentSettings.js +37 -1
  126. package/src/environment/environmentShaderMaterials.js +37 -6
  127. package/src/environment/environmentState.js +133 -0
  128. package/src/environment/environmentSunShadowPass.js +399 -6
  129. package/src/environment/environmentTextureResolver.js +7 -0
  130. package/src/environment/index.js +51 -0
  131. package/src/environment/manufacturedMaterialContract.js +837 -0
  132. package/src/environment/manufacturedReflectionProvider.js +114 -0
  133. package/src/environment/scanAssetStylize.js +4 -4
  134. package/src/environment/surfaceMaterialModes.js +71 -0
  135. package/src/environment/toonLabEnvironmentMaterials.js +353 -0
  136. package/src/environment/toonLabMaterialPassCoupling.js +347 -0
  137. package/src/environment/toonLabNormalIntegration.js +171 -0
  138. package/src/environment/toonLabRockMaterialResolver.js +592 -0
  139. package/src/environment/toonLabSourceDefaultLit.js +444 -0
  140. package/src/environment/toonLabSourceLibrary.js +762 -0
  141. package/src/environment/toonLabSourceMaterials.js +3718 -0
  142. package/src/environment/toonLabSourceSubsurfaceLighting.js +415 -0
  143. package/src/environment/toonLabSourceTemporal.js +717 -0
  144. package/src/environment/toonLabSurfaceLighting.js +462 -0
  145. package/src/environment/toonLabTextureReadiness.js +105 -0
  146. package/src/environment/toonLabTreeMaterials.js +450 -0
  147. package/src/environment/transparentMaterialProfile.js +87 -0
  148. package/src/environment/urbanPropMaterial.js +2976 -0
  149. package/src/ground-shader/groundPrintLayer.js +375 -0
  150. package/src/ground-shader/groundShaderMaterial.js +851 -0
  151. package/src/ground-shader/groundShaderSettings.js +468 -0
  152. package/src/ground-shader/index.js +3 -0
  153. package/src/index.js +52 -22
  154. package/src/lighting/callMeSenseiLightingContract.js +163 -0
  155. package/src/lighting/index.js +14 -7
  156. package/src/lighting/lightingCapabilities.js +2 -2
  157. package/src/lighting/lightingPresets.js +6 -3
  158. package/src/lighting/lightingStyle.js +41 -6
  159. package/src/lighting/lightingSystem.js +200 -6
  160. package/src/lighting/{unrealExport.js → toonLabExport.js} +40 -41
  161. package/src/post/postProcessing.js +71 -12
  162. package/src/react/index.js +66 -0
  163. package/src/renderer/index.js +16 -0
  164. package/src/renderer/rendererConfiguration.js +250 -0
  165. package/src/renderer/styleComparison.js +985 -0
  166. package/src/rock-shader/index.js +8 -0
  167. package/src/rock-shader/rockGeometryDetail.js +701 -0
  168. package/src/rock-shader/rockMaterial.js +2586 -0
  169. package/src/rock-shader/rockRegionRuntime.js +185 -0
  170. package/src/rock-shader/rockSemanticMaterialRuntime.js +337 -0
  171. package/src/rock-shader/rockShaderRuntime.js +781 -0
  172. package/src/rock-shader/rockShaderSettings.js +1099 -0
  173. package/src/rock-shader/rockTangentIntegrity.js +136 -0
  174. package/src/rock-shader/rockTextureIntegrity.js +115 -0
  175. package/src/rockgen/export/glbExport.js +104 -14
  176. package/src/rockgen/index.js +5 -3
  177. package/src/rockgen/lod/index.js +6 -0
  178. package/src/rockgen/lod/rockLodMetrics.js +168 -0
  179. package/src/rockgen/lod/rockLodPlanner.js +372 -0
  180. package/src/rockgen/lod/rockLodPolicy.js +235 -0
  181. package/src/rockgen/lod/rockLodRuntime.js +124 -0
  182. package/src/rockgen/lod/rockLodSimplifier.js +173 -0
  183. package/src/rockgen/lod/rockLodValidation.js +113 -0
  184. package/src/rockgen/mesh/meshAttributes.js +17 -0
  185. package/src/rockgen/mesh/meshDocument.js +6 -0
  186. package/src/rockgen/rockDocument.js +376 -9
  187. package/src/rockgen/rockgenPresets.js +114 -13
  188. package/src/rockgen/rockgenSettings.js +62 -11
  189. package/src/rockgen/surface/c7GeologySurface.js +372 -0
  190. package/src/runtime/index.js +14 -0
  191. package/src/runtime/sceneCollisionRuntime.js +317 -0
  192. package/src/runtime/sceneSurfaceRuntime.js +451 -0
  193. package/src/runtime/sceneUpdateScheduler.js +203 -0
  194. package/src/shaders-tsl/anime.js +9 -2
  195. package/src/shaders-tsl/chunks/environment-ground-field.js +174 -0
  196. package/src/shaders-tsl/chunks/environment-state.js +79 -0
  197. package/src/shaders-tsl/chunks/environment-sun-shadow.js +99 -32
  198. package/src/shaders-tsl/chunks/normalized-hue.js +41 -0
  199. package/src/shaders-tsl/chunks/pass-depth-color.js +4 -2
  200. package/src/shaders-tsl/chunks/scene-depth-color-pass.js +273 -0
  201. package/src/shaders-tsl/chunks/vegetation-style.js +116 -8
  202. package/src/shaders-tsl/chunks/water-color.js +19 -5
  203. package/src/shaders-tsl/chunks/water-shore-state.js +8 -1
  204. package/src/shaders-tsl/chunks/world-noise.js +30 -0
  205. package/src/shaders-tsl/environment.js +123 -17
  206. package/src/shaders-tsl/flower.js +51 -8
  207. package/src/shaders-tsl/grass.js +194 -29
  208. package/src/shaders-tsl/post-composite.js +83 -2
  209. package/src/shaders-tsl/tree-leaf.js +107 -16
  210. package/src/shaders-tsl/water-breaker.js +18 -4
  211. package/src/shaders-tsl/water.js +51 -3
  212. package/src/shaders-tsl/woody-surface.js +59 -7
  213. package/src/sky/atmosphereDome.js +193 -0
  214. package/src/sky/atmosphereParams.js +396 -0
  215. package/src/sky/atmosphereScattering.js +593 -0
  216. package/src/sky/atmosphereSky.js +371 -0
  217. package/src/sky/cloudShadow.js +379 -0
  218. package/src/sky/godRays.js +257 -0
  219. package/src/sky/index.js +55 -1
  220. package/src/sky/nightSky.js +1190 -0
  221. package/src/sky/renderLayers.js +120 -0
  222. package/src/sky/skyColor.js +582 -0
  223. package/src/sky/skyDayCycle.js +244 -0
  224. package/src/sky/skyParams.js +661 -0
  225. package/src/sky/skyPresets.js +772 -0
  226. package/src/sky/skyQualityTiers.js +383 -0
  227. package/src/sky/skyShaderSettings.js +699 -0
  228. package/src/sky/skyStyleSnapshots.js +211 -0
  229. package/src/sky/skySystem.js +1447 -0
  230. package/src/sky/skyTimeKeyframes.js +361 -0
  231. package/src/sky/stylizedSky.js +405 -116
  232. package/src/sky/sunDriver.js +499 -0
  233. package/src/sky/timeOfDay.js +335 -0
  234. package/src/styles/animeGameProfile.js +44 -0
  235. package/src/styles/index.js +157 -0
  236. package/src/styles/manufacturedStyleLabeling.js +204 -0
  237. package/src/styles/neutralStylePresets.js +712 -0
  238. package/src/styles/sceneLayerDocuments.js +185 -0
  239. package/src/styles/sceneLookComposition.js +156 -0
  240. package/src/styles/sceneQualityApplication.js +152 -0
  241. package/src/styles/sceneQualityProfiles.js +268 -0
  242. package/src/styles/sceneStyleAudit.js +512 -0
  243. package/src/styles/sceneStyleRuntime.js +923 -0
  244. package/src/styles/styleAdapters.js +177 -0
  245. package/src/styles/styleApplication.js +369 -0
  246. package/src/styles/styleBundle.js +445 -92
  247. package/src/styles/styleBundleProvider.js +83 -0
  248. package/src/styles/styleDomains.js +21 -0
  249. package/src/styles/styleInspector.js +262 -0
  250. package/src/styles/styleMaterialContract.js +375 -0
  251. package/src/styles/styleMetadata.js +73 -0
  252. package/src/styles/styleTargetDiscovery.js +162 -0
  253. package/src/styles/styleTargetLabels.js +206 -0
  254. package/src/styles/styleTargetMaterialCoverage.js +137 -0
  255. package/src/styles/styleTransaction.js +272 -0
  256. package/src/texgen/evaluateTexture.js +30 -3
  257. package/src/texgen/textureGenerators.js +83 -35
  258. package/src/texgen/textureSettings.js +25 -8
  259. package/src/toon/toonSettings.js +100 -2
  260. package/src/vegetation/branchTree.js +587 -0
  261. package/src/vegetation/callMeSenseiGrass.js +183 -0
  262. package/src/vegetation/compiledTree.js +506 -0
  263. package/src/vegetation/contactShadowField.js +107 -0
  264. package/src/vegetation/flowerSpecies.js +10 -2
  265. package/src/vegetation/grass.js +13 -0
  266. package/src/vegetation/grassClump.js +1179 -0
  267. package/src/vegetation/importedVegetationMaterial.js +183 -0
  268. package/src/vegetation/index.js +17 -1
  269. package/src/vegetation/legacyTreePresets.js +120 -0
  270. package/src/vegetation/scatter.js +688 -3
  271. package/src/vegetation/stylizedBush.js +14 -0
  272. package/src/vegetation/stylizedFlower.js +31 -0
  273. package/src/vegetation/stylizedFlowers.js +59 -7
  274. package/src/vegetation/stylizedForest.js +455 -147
  275. package/src/vegetation/stylizedGrass.js +188 -24
  276. package/src/vegetation/stylizedTree.js +676 -54
  277. package/src/vegetation/stylizedTreeFoliage.js +1111 -38
  278. package/src/vegetation/stylizedUnderstory.js +230 -0
  279. package/src/vegetation/treeExport.js +262 -47
  280. package/src/vegetation/treeSurfaceTextures.js +665 -0
  281. package/src/vegetation/vegetationShaders.js +617 -28
  282. package/src/version.js +3 -0
  283. package/src/water/water.js +2 -0
  284. package/src/water/waterBreakerSystem.js +2 -0
  285. package/src/water/waterCurrentField.js +1 -0
  286. package/src/water/waterMaterial.js +3 -0
  287. package/src/water/waterRain.js +2 -0
  288. package/src/water/waterScenePasses.js +170 -7
  289. package/src/water/waterSettings.js +250 -50
  290. package/src/water/waterShoreMaterial.js +16 -2
  291. package/src/water/waterShoreStateField.js +1 -1
  292. package/src/water/waterSplashSystem.js +2 -0
  293. package/src/water/waterStageSettings.js +60 -0
  294. package/src/water/waterSurface.js +144 -4
  295. package/src/water/waterUnderwaterAtmosphere.js +288 -0
  296. package/src/water/waterVegetation.js +20 -4
  297. package/src/worldCollision.js +64 -9
  298. package/types/agents/index.d.ts +1 -0
  299. package/types/agents/sceneStyleOperations.d.ts +484 -0
  300. package/types/asset-policy/catalogLicenses.d.ts +7 -0
  301. package/types/asset-policy/index.d.ts +20 -0
  302. package/types/assetlib/ambientcg.d.ts +81 -0
  303. package/types/assetlib/assetRef.d.ts +26 -0
  304. package/types/assetlib/galleryMaterialFamily.d.ts +13 -0
  305. package/types/assetlib/importedEntry.d.ts +18 -0
  306. package/types/assetlib/index.d.ts +16 -0
  307. package/types/assetlib/kaykit.d.ts +112 -0
  308. package/types/assetlib/kaykitStaticIndex.d.ts +38 -0
  309. package/types/assetlib/loadImported.d.ts +56 -0
  310. package/types/assetlib/opensource3d.d.ts +55 -0
  311. package/types/assetlib/plateau.d.ts +67 -0
  312. package/types/assetlib/plateauLandmarks.d.ts +238 -0
  313. package/types/assetlib/plateauViewer.d.ts +3 -0
  314. package/types/assetlib/polyhaven.d.ts +90 -0
  315. package/types/assetlib/polypizza.d.ts +10 -0
  316. package/types/assetlib/smithsonian.d.ts +9 -0
  317. package/types/assetlib/sources.d.ts +22 -0
  318. package/types/assetlib/zip.d.ts +8 -0
  319. package/types/catalog/manifest.d.ts +26 -0
  320. package/types/catalog/officialCatalog.d.ts +4 -0
  321. package/types/catalog/officialCatalogAssetRuntime.d.ts +2 -0
  322. package/types/catalog/officialCatalogLod.d.ts +63 -0
  323. package/types/catalog/officialCatalogPlacement.d.ts +49 -0
  324. package/types/catalog/officialCatalogProvider.d.ts +7 -0
  325. package/types/character/animationRetarget.d.ts +20 -0
  326. package/types/character/characterRig.d.ts +87 -0
  327. package/types/character/characterRuntime.d.ts +5 -0
  328. package/types/character/freestyleSwimClip.d.ts +5 -0
  329. package/types/character/groundStabilizer.d.ts +55 -0
  330. package/types/character/index.d.ts +10 -0
  331. package/types/character/locomotionActions.d.ts +4 -0
  332. package/types/character/locomotionStateMachine.d.ts +62 -0
  333. package/types/character/mannequinAsset.d.ts +12 -0
  334. package/types/character/mannequinAssetUrl.node.d.ts +1 -0
  335. package/types/character/modelLoader.d.ts +7 -0
  336. package/types/character/walkableCharacterRuntime.d.ts +343 -0
  337. package/types/character/waterInteractionController.d.ts +114 -0
  338. package/types/cloud/ambientSkyBaker.d.ts +18 -0
  339. package/types/cloud/cloudLighting.d.ts +38 -0
  340. package/types/cloud/cloudParams.d.ts +18 -0
  341. package/types/cloud/cloudReprojection.d.ts +15 -0
  342. package/types/cloud/cloudStyle.d.ts +1380 -0
  343. package/types/cloud/cloudStyleSnapshots.d.ts +10 -0
  344. package/types/cloud/cloudVolume.d.ts +43 -0
  345. package/types/cloud/heroCloudRecipe.d.ts +167 -0
  346. package/types/cloud/index.d.ts +12 -0
  347. package/types/cloud/noise/baseShapeVolume.d.ts +86 -0
  348. package/types/cloud/noise/cirrusMap.d.ts +24 -0
  349. package/types/cloud/noise/curlNoise.d.ts +106 -0
  350. package/types/cloud/noise/erosionVolume.d.ts +58 -0
  351. package/types/cloud/noise/noiseVolume.d.ts +63 -0
  352. package/types/cloud/noise/periodicNoise3.d.ts +75 -0
  353. package/types/cloud/noise/weatherMap.d.ts +227 -0
  354. package/types/cloud/paramSchema.d.ts +142 -0
  355. package/types/collisionMetadata.d.ts +11 -0
  356. package/types/core/generation.d.ts +95 -0
  357. package/types/core/materialRoles.d.ts +102 -0
  358. package/types/core/presetDocuments.d.ts +25 -0
  359. package/types/core/systemStylePolicy.d.ts +4 -0
  360. package/types/environment/dayCurves.d.ts +47 -0
  361. package/types/environment/environmentAmbientProbe.d.ts +2 -0
  362. package/types/environment/environmentGroundFieldPass.d.ts +2 -0
  363. package/types/environment/environmentMaterialAdapter.d.ts +44 -0
  364. package/types/environment/environmentMaterialClassifier.d.ts +26 -0
  365. package/types/environment/environmentPlanarReflection.d.ts +3 -0
  366. package/types/environment/environmentPresets.d.ts +171 -0
  367. package/types/environment/environmentRigs.d.ts +13 -0
  368. package/types/environment/environmentSettings.d.ts +161 -0
  369. package/types/environment/environmentShaderMaterials.d.ts +14 -0
  370. package/types/environment/environmentState.d.ts +6 -0
  371. package/types/environment/environmentSunShadowPass.d.ts +2 -0
  372. package/types/environment/environmentTextureResolver.d.ts +30 -0
  373. package/types/environment/environmentTimeOfDay.d.ts +25 -0
  374. package/types/environment/environmentVertexAo.d.ts +18 -0
  375. package/types/environment/index.d.ts +27 -0
  376. package/types/environment/manufacturedMaterialContract.d.ts +129 -0
  377. package/types/environment/manufacturedReflectionProvider.d.ts +3 -0
  378. package/types/environment/scanAssetStylize.d.ts +43 -0
  379. package/types/environment/surfaceMaterialModes.d.ts +14 -0
  380. package/types/environment/toonLabEnvironmentMaterials.d.ts +139 -0
  381. package/types/environment/toonLabMaterialPassCoupling.d.ts +7 -0
  382. package/types/environment/toonLabNormalIntegration.d.ts +29 -0
  383. package/types/environment/toonLabRockMaterialResolver.d.ts +270 -0
  384. package/types/environment/toonLabSourceDefaultLit.d.ts +136 -0
  385. package/types/environment/toonLabSourceLibrary.d.ts +19 -0
  386. package/types/environment/toonLabSourceMaterials.d.ts +14 -0
  387. package/types/environment/toonLabSourceSubsurfaceLighting.d.ts +85 -0
  388. package/types/environment/toonLabSourceTemporal.d.ts +20 -0
  389. package/types/environment/toonLabSurfaceLighting.d.ts +153 -0
  390. package/types/environment/toonLabTextureReadiness.d.ts +8 -0
  391. package/types/environment/toonLabTreeMaterials.d.ts +7 -0
  392. package/types/environment/transparentMaterialProfile.d.ts +76 -0
  393. package/types/environment/urbanPropMaterial.d.ts +25 -0
  394. package/types/ground-shader/groundPrintLayer.d.ts +4 -0
  395. package/types/ground-shader/groundShaderMaterial.d.ts +11 -0
  396. package/types/ground-shader/groundShaderSettings.d.ts +90 -0
  397. package/types/ground-shader/index.d.ts +3 -0
  398. package/types/index.d.ts +1591 -0
  399. package/types/lighting/callMeSenseiLightingContract.d.ts +14 -0
  400. package/types/lighting/colorIntensity.d.ts +44 -0
  401. package/types/lighting/index.d.ts +12 -0
  402. package/types/lighting/lightDescriptors.d.ts +803 -0
  403. package/types/lighting/lightingCapabilities.d.ts +85 -0
  404. package/types/lighting/lightingDocuments.d.ts +140 -0
  405. package/types/lighting/lightingFixtures.d.ts +171 -0
  406. package/types/lighting/lightingGenerator.d.ts +403 -0
  407. package/types/lighting/lightingPresets.d.ts +264 -0
  408. package/types/lighting/lightingRuntime.d.ts +401 -0
  409. package/types/lighting/lightingStyle.d.ts +156 -0
  410. package/types/lighting/lightingSystem.d.ts +440 -0
  411. package/types/lighting/toonLabExport.d.ts +46 -0
  412. package/types/lighting/utils.d.ts +18 -0
  413. package/types/loaders/index.d.ts +1 -0
  414. package/types/post/index.d.ts +2 -0
  415. package/types/post/postGenerator.d.ts +282 -0
  416. package/types/post/postProcessing.d.ts +16 -0
  417. package/types/react/index.d.ts +1785 -0
  418. package/types/renderer/index.d.ts +2 -0
  419. package/types/renderer/rendererConfiguration.d.ts +8 -0
  420. package/types/renderer/styleComparison.d.ts +409 -0
  421. package/types/rock-shader/index.d.ts +8 -0
  422. package/types/rock-shader/rockGeometryDetail.d.ts +300 -0
  423. package/types/rock-shader/rockMaterial.d.ts +21 -0
  424. package/types/rock-shader/rockRegionRuntime.d.ts +86 -0
  425. package/types/rock-shader/rockSemanticMaterialRuntime.d.ts +29 -0
  426. package/types/rock-shader/rockShaderRuntime.d.ts +10 -0
  427. package/types/rock-shader/rockShaderSettings.d.ts +184 -0
  428. package/types/rock-shader/rockTangentIntegrity.d.ts +51 -0
  429. package/types/rock-shader/rockTextureIntegrity.d.ts +61 -0
  430. package/types/rockgen/export/glbExport.d.ts +58 -0
  431. package/types/rockgen/heightfield/heightfieldErosion.d.ts +10 -0
  432. package/types/rockgen/heightfield/heightfieldPatch.d.ts +15 -0
  433. package/types/rockgen/heightfield/stylizedErosionSim.d.ts +41 -0
  434. package/types/rockgen/index.d.ts +12 -0
  435. package/types/rockgen/lod/index.d.ts +6 -0
  436. package/types/rockgen/lod/rockLodMetrics.d.ts +62 -0
  437. package/types/rockgen/lod/rockLodPlanner.d.ts +86 -0
  438. package/types/rockgen/lod/rockLodPolicy.d.ts +76 -0
  439. package/types/rockgen/lod/rockLodRuntime.d.ts +95 -0
  440. package/types/rockgen/lod/rockLodSimplifier.d.ts +15 -0
  441. package/types/rockgen/lod/rockLodValidation.d.ts +16 -0
  442. package/types/rockgen/mesh/meshAttributes.d.ts +32 -0
  443. package/types/rockgen/mesh/meshDocument.d.ts +40 -0
  444. package/types/rockgen/mesh/surfaceNets.d.ts +42 -0
  445. package/types/rockgen/noise/cellularNoise3.d.ts +24 -0
  446. package/types/rockgen/noise/prng.d.ts +16 -0
  447. package/types/rockgen/noise/simplexNoise3.d.ts +2 -0
  448. package/types/rockgen/noise/valueNoise3.d.ts +12 -0
  449. package/types/rockgen/rockDocument.d.ts +243 -0
  450. package/types/rockgen/rockHelpers.d.ts +2 -0
  451. package/types/rockgen/rockgenPresets.d.ts +10 -0
  452. package/types/rockgen/rockgenSettings.d.ts +531 -0
  453. package/types/rockgen/sdf/fieldCompiler.d.ts +20 -0
  454. package/types/rockgen/sdf/sculptEdits.d.ts +30 -0
  455. package/types/rockgen/sdf/sdfModifiers.d.ts +19 -0
  456. package/types/rockgen/sdf/sdfOps.d.ts +8 -0
  457. package/types/rockgen/sdf/sdfPrimitives.d.ts +22 -0
  458. package/types/rockgen/surface/c7GeologySurface.d.ts +8 -0
  459. package/types/runtime/index.d.ts +3 -0
  460. package/types/runtime/sceneCollisionRuntime.d.ts +94 -0
  461. package/types/runtime/sceneSurfaceRuntime.d.ts +90 -0
  462. package/types/runtime/sceneUpdateScheduler.d.ts +28 -0
  463. package/types/shaders-tsl/anime.d.ts +9 -0
  464. package/types/shaders-tsl/chunks/character-color.d.ts +6 -0
  465. package/types/shaders-tsl/chunks/character-highlights.d.ts +12 -0
  466. package/types/shaders-tsl/chunks/character-lighting.d.ts +20 -0
  467. package/types/shaders-tsl/chunks/character-material-maps.d.ts +18 -0
  468. package/types/shaders-tsl/chunks/character-roles.d.ts +21 -0
  469. package/types/shaders-tsl/chunks/character-scene-lights.d.ts +48 -0
  470. package/types/shaders-tsl/chunks/character-shadow-color.d.ts +5 -0
  471. package/types/shaders-tsl/chunks/character-skinning.d.ts +23 -0
  472. package/types/shaders-tsl/chunks/environment-color.d.ts +9 -0
  473. package/types/shaders-tsl/chunks/environment-debug.d.ts +24 -0
  474. package/types/shaders-tsl/chunks/environment-ground-field.d.ts +40 -0
  475. package/types/shaders-tsl/chunks/environment-lighting.d.ts +22 -0
  476. package/types/shaders-tsl/chunks/environment-state.d.ts +42 -0
  477. package/types/shaders-tsl/chunks/environment-sun-shadow.d.ts +19 -0
  478. package/types/shaders-tsl/chunks/foliage-fog.d.ts +21 -0
  479. package/types/shaders-tsl/chunks/normalized-hue.d.ts +1 -0
  480. package/types/shaders-tsl/chunks/pass-depth-color.d.ts +20 -0
  481. package/types/shaders-tsl/chunks/projected-water-caustics.d.ts +24 -0
  482. package/types/shaders-tsl/chunks/scene-depth-color-pass.d.ts +39 -0
  483. package/types/shaders-tsl/chunks/stylized-cloud-shadow.d.ts +9 -0
  484. package/types/shaders-tsl/chunks/vegetation-style.d.ts +60 -0
  485. package/types/shaders-tsl/chunks/water-color.d.ts +15 -0
  486. package/types/shaders-tsl/chunks/water-common.d.ts +9 -0
  487. package/types/shaders-tsl/chunks/water-foam.d.ts +8 -0
  488. package/types/shaders-tsl/chunks/water-lighting.d.ts +9 -0
  489. package/types/shaders-tsl/chunks/water-ripple.d.ts +8 -0
  490. package/types/shaders-tsl/chunks/water-shore-state.d.ts +7 -0
  491. package/types/shaders-tsl/chunks/water-waves.d.ts +18 -0
  492. package/types/shaders-tsl/chunks/world-noise.d.ts +4 -0
  493. package/types/shaders-tsl/environment-ao-overlay.d.ts +5 -0
  494. package/types/shaders-tsl/environment.d.ts +34 -0
  495. package/types/shaders-tsl/flower.d.ts +6 -0
  496. package/types/shaders-tsl/grass.d.ts +4 -0
  497. package/types/shaders-tsl/post-composite.d.ts +25 -0
  498. package/types/shaders-tsl/sky.d.ts +4 -0
  499. package/types/shaders-tsl/tree-leaf.d.ts +2 -0
  500. package/types/shaders-tsl/water-breaker.d.ts +15 -0
  501. package/types/shaders-tsl/water-kelp.d.ts +5 -0
  502. package/types/shaders-tsl/water-rain.d.ts +10 -0
  503. package/types/shaders-tsl/water-shore-state-simulation.d.ts +12 -0
  504. package/types/shaders-tsl/water-simulation.d.ts +5 -0
  505. package/types/shaders-tsl/water-splash.d.ts +12 -0
  506. package/types/shaders-tsl/water.d.ts +22 -0
  507. package/types/shaders-tsl/woody-surface.d.ts +3 -0
  508. package/types/sky/atmosphereDome.d.ts +2 -0
  509. package/types/sky/atmosphereParams.d.ts +185 -0
  510. package/types/sky/atmosphereScattering.d.ts +11 -0
  511. package/types/sky/atmosphereSky.d.ts +2 -0
  512. package/types/sky/cloudShadow.d.ts +69 -0
  513. package/types/sky/godRays.d.ts +5 -0
  514. package/types/sky/index.d.ts +18 -0
  515. package/types/sky/nightSky.d.ts +22 -0
  516. package/types/sky/renderLayers.d.ts +59 -0
  517. package/types/sky/sceneOverrideLayers.d.ts +10 -0
  518. package/types/sky/skyColor.d.ts +704 -0
  519. package/types/sky/skyDayCycle.d.ts +86 -0
  520. package/types/sky/skyParams.d.ts +3407 -0
  521. package/types/sky/skyPresets.d.ts +160 -0
  522. package/types/sky/skyQuality.d.ts +21 -0
  523. package/types/sky/skyQualityTiers.d.ts +223 -0
  524. package/types/sky/skyShaderSettings.d.ts +152 -0
  525. package/types/sky/skyStyleSnapshots.d.ts +11 -0
  526. package/types/sky/skySystem.d.ts +3 -0
  527. package/types/sky/skyTimeKeyframes.d.ts +230 -0
  528. package/types/sky/stylizedSky.d.ts +341 -0
  529. package/types/sky/sunDriver.d.ts +15 -0
  530. package/types/sky/timeOfDay.d.ts +145 -0
  531. package/types/styles/animeGameProfile.d.ts +27 -0
  532. package/types/styles/index.d.ts +18 -0
  533. package/types/styles/manufacturedStyleLabeling.d.ts +119 -0
  534. package/types/styles/neutralStylePresets.d.ts +944 -0
  535. package/types/styles/sceneLayerDocuments.d.ts +145 -0
  536. package/types/styles/sceneLookComposition.d.ts +53 -0
  537. package/types/styles/sceneQualityApplication.d.ts +34 -0
  538. package/types/styles/sceneQualityProfiles.d.ts +13 -0
  539. package/types/styles/sceneStyleAudit.d.ts +80 -0
  540. package/types/styles/sceneStyleRuntime.d.ts +1802 -0
  541. package/types/styles/styleAdapters.d.ts +14 -0
  542. package/types/styles/styleApplication.d.ts +47 -0
  543. package/types/styles/styleBundle.d.ts +19 -0
  544. package/types/styles/styleBundleProvider.d.ts +44 -0
  545. package/types/styles/styleDomains.d.ts +18 -0
  546. package/types/styles/styleInspector.d.ts +59 -0
  547. package/types/styles/styleMaterialContract.d.ts +46 -0
  548. package/types/styles/styleMetadata.d.ts +11 -0
  549. package/types/styles/styleTargetDiscovery.d.ts +48 -0
  550. package/types/styles/styleTargetLabels.d.ts +32 -0
  551. package/types/styles/styleTargetMaterialCoverage.d.ts +20 -0
  552. package/types/styles/styleTransaction.d.ts +10 -0
  553. package/types/styles/styleTypes.d.ts +66 -0
  554. package/types/texgen/evaluateTexture.d.ts +40 -0
  555. package/types/texgen/index.d.ts +7 -0
  556. package/types/texgen/noise2.d.ts +46 -0
  557. package/types/texgen/textureAi.d.ts +6 -0
  558. package/types/texgen/textureGenerators.d.ts +261 -0
  559. package/types/texgen/texturePresets.d.ts +45 -0
  560. package/types/texgen/textureSettings.d.ts +121 -0
  561. package/types/texgen/textureThree.d.ts +13 -0
  562. package/types/toon/characterRenderPasses.d.ts +3 -0
  563. package/types/toon/index.d.ts +3 -0
  564. package/types/toon/settings/alphaSettings.d.ts +125 -0
  565. package/types/toon/settings/averageShadowSettings.d.ts +39 -0
  566. package/types/toon/settings/baseTextureSettings.d.ts +39 -0
  567. package/types/toon/settings/celShadeSettings.d.ts +37 -0
  568. package/types/toon/settings/contactShadowSettings.d.ts +30 -0
  569. package/types/toon/settings/eyeHighlightSettings.d.ts +55 -0
  570. package/types/toon/settings/faceLightingSettings.d.ts +32 -0
  571. package/types/toon/settings/furSettings.d.ts +23 -0
  572. package/types/toon/settings/glitterSettings.d.ts +43 -0
  573. package/types/toon/settings/hairHighlightSettings.d.ts +89 -0
  574. package/types/toon/settings/indirectLightSettings.d.ts +43 -0
  575. package/types/toon/settings/localLightSettings.d.ts +46 -0
  576. package/types/toon/settings/materialMapSettings.d.ts +86 -0
  577. package/types/toon/settings/outlineSettings.d.ts +125 -0
  578. package/types/toon/settings/perspectiveRemovalSettings.d.ts +14 -0
  579. package/types/toon/settings/rimLightSettings.d.ts +79 -0
  580. package/types/toon/settings/sceneShadowSettings.d.ts +32 -0
  581. package/types/toon/settings/selfShadowSettings.d.ts +44 -0
  582. package/types/toon/settings/shadowColorSettings.d.ts +77 -0
  583. package/types/toon/settings/skinToneSettings.d.ts +30 -0
  584. package/types/toon/settings/specularSettings.d.ts +96 -0
  585. package/types/toon/settings/stickerSettings.d.ts +40 -0
  586. package/types/toon/toonMaterialAdapter.d.ts +883 -0
  587. package/types/toon/toonSettings.d.ts +1182 -0
  588. package/types/vegetation/branchTree.d.ts +14 -0
  589. package/types/vegetation/callMeSenseiGrass.d.ts +8 -0
  590. package/types/vegetation/compiledTree.d.ts +75 -0
  591. package/types/vegetation/contactShadowField.d.ts +26 -0
  592. package/types/vegetation/flowerSpecies.d.ts +107 -0
  593. package/types/vegetation/grass.d.ts +4 -0
  594. package/types/vegetation/grassClump.d.ts +7 -0
  595. package/types/vegetation/grassPalettes.d.ts +29 -0
  596. package/types/vegetation/importedVegetationMaterial.d.ts +13 -0
  597. package/types/vegetation/index.d.ts +225 -0
  598. package/types/vegetation/legacyTreePresets.d.ts +22 -0
  599. package/types/vegetation/scatter.d.ts +13 -0
  600. package/types/vegetation/stylizedBush.d.ts +2 -0
  601. package/types/vegetation/stylizedFlower.d.ts +2 -0
  602. package/types/vegetation/stylizedFlowers.d.ts +8 -0
  603. package/types/vegetation/stylizedForest.d.ts +3 -0
  604. package/types/vegetation/stylizedGrass.d.ts +21 -0
  605. package/types/vegetation/stylizedTree.d.ts +20 -0
  606. package/types/vegetation/stylizedTreeFoliage.d.ts +19 -0
  607. package/types/vegetation/stylizedUnderstory.d.ts +50 -0
  608. package/types/vegetation/treeExport.d.ts +6 -0
  609. package/types/vegetation/treeSurfaceTextures.d.ts +72 -0
  610. package/types/vegetation/vegetationShaders.d.ts +74 -0
  611. package/types/version.d.ts +1 -0
  612. package/types/water/index.d.ts +1 -0
  613. package/types/water/sceneOverrideLayers.d.ts +16 -0
  614. package/types/water/water.d.ts +17 -0
  615. package/types/water/waterBreakerSystem.d.ts +46 -0
  616. package/types/water/waterCurrentField.d.ts +115 -0
  617. package/types/water/waterInteraction.d.ts +21 -0
  618. package/types/water/waterMaterial.d.ts +60 -0
  619. package/types/water/waterNearshorePhase.d.ts +5 -0
  620. package/types/water/waterRain.d.ts +17 -0
  621. package/types/water/waterRippleSimulation.d.ts +52 -0
  622. package/types/water/waterScenePasses.d.ts +70 -0
  623. package/types/water/waterSettings.d.ts +648 -0
  624. package/types/water/waterShoreMaterial.d.ts +3 -0
  625. package/types/water/waterShoreStateField.d.ts +2 -0
  626. package/types/water/waterSplashSystem.d.ts +2 -0
  627. package/types/water/waterStageSettings.d.ts +9 -0
  628. package/types/water/waterSurface.d.ts +2 -0
  629. package/types/water/waterUnderwaterAtmosphere.d.ts +103 -0
  630. package/types/water/waterVegetation.d.ts +16 -0
  631. package/types/worldCollision.d.ts +22 -0
  632. package/AGENTS.md +0 -254
  633. package/ATTRIBUTION.md +0 -78
  634. package/docs/characters.md +0 -144
  635. package/docs/debug-panel.md +0 -126
  636. package/docs/docs.css +0 -589
  637. package/docs/environment.md +0 -186
  638. package/docs/getting-started.md +0 -180
  639. package/docs/index.html +0 -14
  640. package/docs/lab-architecture.md +0 -100
  641. package/docs/lighting.md +0 -825
  642. package/docs/main.jsx +0 -752
  643. package/docs/mcp.md +0 -97
  644. package/docs/post-processing.md +0 -98
  645. package/docs/settings-reference.md +0 -1878
  646. package/docs/shader-constants.md +0 -77
  647. package/docs/sky.md +0 -182
  648. package/docs/style-labs.md +0 -309
  649. package/docs/texture-lab.md +0 -135
  650. package/docs/toon-shading.md +0 -183
  651. package/docs/tsl-conventions.md +0 -167
  652. package/docs/vegetation-sky.md +0 -275
  653. package/docs/water.md +0 -430
  654. package/docs/weather.md +0 -200
  655. package/docs/world-scale.md +0 -111
  656. package/mcp/style-lab-tools.mjs +0 -371
  657. package/src/ambientfx/INTEGRATION.md +0 -164
  658. package/src/ambientfx/ambientFxPresets.js +0 -83
  659. package/src/ambientfx/ambientFxSettings.js +0 -368
  660. package/src/ambientfx/emitters.js +0 -169
  661. package/src/ambientfx/index.js +0 -5
  662. package/src/ambientfx/particleBackbone.js +0 -493
  663. package/src/ambientfx/stylizedAmbientFx.js +0 -450
  664. package/src/biome/biomeGenerator.js +0 -385
  665. package/src/biome/biomeRuntime.js +0 -299
  666. package/src/biome/index.js +0 -2
  667. package/src/buildinggen/buildingAsset.js +0 -44
  668. package/src/buildinggen/buildingGrammar.js +0 -311
  669. package/src/buildinggen/buildingMesh.js +0 -451
  670. package/src/buildinggen/buildingPresets.js +0 -46
  671. package/src/buildinggen/buildingRecipe.js +0 -100
  672. package/src/buildinggen/buildingSettings.js +0 -238
  673. package/src/buildinggen/index.js +0 -6
  674. package/src/camera/cameraDirector.js +0 -157
  675. package/src/camera/cameraGenerator.js +0 -367
  676. package/src/camera/cameraRig.js +0 -570
  677. package/src/camera/cameraSettings.js +0 -236
  678. package/src/camera/index.js +0 -7
  679. package/src/catalog/builtinEntries.js +0 -245
  680. package/src/catalog/catalog.js +0 -210
  681. package/src/catalog/index.js +0 -3
  682. package/src/core/shaderBackend.js +0 -24
  683. package/src/debrisgen/debrisFields.js +0 -544
  684. package/src/debrisgen/debrisGenerator.js +0 -1929
  685. package/src/debrisgen/debrisPalettes.js +0 -71
  686. package/src/debrisgen/debrisPhysics.js +0 -198
  687. package/src/debrisgen/debrisPresets.js +0 -162
  688. package/src/debrisgen/debrisSettings.js +0 -333
  689. package/src/debrisgen/debrisTextures.js +0 -380
  690. package/src/debrisgen/index.js +0 -5
  691. package/src/debug/fieldValues.js +0 -95
  692. package/src/debug/index.js +0 -7
  693. package/src/debug/settingsPanel.js +0 -170
  694. package/src/fauna/INTEGRATION.md +0 -174
  695. package/src/fauna/boids.js +0 -861
  696. package/src/fauna/faunaBodies.js +0 -492
  697. package/src/fauna/faunaPresets.js +0 -52
  698. package/src/fauna/faunaSettings.js +0 -525
  699. package/src/fauna/index.js +0 -5
  700. package/src/fauna/stylizedFauna.js +0 -395
  701. package/src/game-feel/gameFeelGenerator.js +0 -402
  702. package/src/game-feel/gameFeelRuntime.js +0 -549
  703. package/src/game-feel/index.js +0 -2
  704. package/src/motion/index.js +0 -5
  705. package/src/motion/motionClip.js +0 -441
  706. package/src/motion/motionController.js +0 -628
  707. package/src/motion/motionDocuments.js +0 -225
  708. package/src/motion/motionGraph.js +0 -307
  709. package/src/motion/motionSettings.js +0 -222
  710. package/src/pathgen/index.js +0 -7
  711. package/src/pathgen/pathBridge.js +0 -232
  712. package/src/pathgen/pathPresets.js +0 -35
  713. package/src/pathgen/pathRibbon.js +0 -410
  714. package/src/pathgen/pathRouter.js +0 -380
  715. package/src/pathgen/pathSettings.js +0 -335
  716. package/src/pathgen/pathTextures.js +0 -123
  717. package/src/pathgen/stylizedPaths.js +0 -453
  718. package/src/propgen/generatorsWave1.js +0 -379
  719. package/src/propgen/generatorsWave2.js +0 -462
  720. package/src/propgen/index.js +0 -5
  721. package/src/propgen/propAsset.js +0 -323
  722. package/src/propgen/propParts.js +0 -170
  723. package/src/propgen/propPlacement.js +0 -459
  724. package/src/propgen/propPresets.js +0 -82
  725. package/src/propgen/propSettings.js +0 -395
  726. package/src/soundscape/index.js +0 -4
  727. package/src/soundscape/soundscapeGenerator.js +0 -179
  728. package/src/soundscape/soundscapeRuntime.js +0 -806
  729. package/src/soundscape/soundscapeSettings.js +0 -292
  730. package/src/stylizedTerrain.js +0 -631
  731. package/src/stylizedWorld.js +0 -903
  732. package/src/vegetation/treeRecipe.js +0 -647
  733. package/src/vfxgen/INTEGRATION.md +0 -145
  734. package/src/vfxgen/core/burstBackbone.js +0 -380
  735. package/src/vfxgen/core/projectileCore.js +0 -92
  736. package/src/vfxgen/core/spriteShapes.js +0 -98
  737. package/src/vfxgen/core/trailRibbon.js +0 -272
  738. package/src/vfxgen/core/vfxRandom.js +0 -29
  739. package/src/vfxgen/effects/emitHelpers.js +0 -37
  740. package/src/vfxgen/effects/magicEffects.js +0 -162
  741. package/src/vfxgen/effects/movementEffects.js +0 -87
  742. package/src/vfxgen/effects/weaponEffects.js +0 -118
  743. package/src/vfxgen/index.js +0 -18
  744. package/src/vfxgen/moves/moveController.js +0 -146
  745. package/src/vfxgen/moves/moveLibrary.js +0 -335
  746. package/src/vfxgen/vfxPresets.js +0 -98
  747. package/src/vfxgen/vfxSettings.js +0 -384
  748. package/src/vfxgen/vfxSystem.js +0 -449
  749. package/src/vfxgen/weapons/stylizedWeapons.js +0 -137
  750. package/src/villagegen/index.js +0 -4
  751. package/src/villagegen/stylizedVillage.js +0 -490
  752. package/src/villagegen/villageArchetypes.js +0 -160
  753. package/src/villagegen/villageNames.js +0 -40
  754. package/src/villagegen/villageSites.js +0 -105
  755. package/src/weather/index.js +0 -6
  756. package/src/weather/weatherPrecipitation.js +0 -221
  757. package/src/weather/weatherPresets.js +0 -258
  758. package/src/weather/weatherSettings.js +0 -269
  759. package/src/weather/weatherSystem.js +0 -871
  760. package/src/worldMinimap.js +0 -214
  761. package/src/worldPresets.js +0 -125
package/README.md CHANGED
@@ -1,23 +1,73 @@
1
1
  # ToonLab by Call Me Sensei
2
2
 
3
- ToonLab by Call Me Sensei is a stylized anime-style game starter kit and
4
- runtime library for [Three.js](https://threejs.org/). Its goal is to simplify
5
- Three.js game development: you get a better-looking anime/stylized game
6
- without having to develop shaders yourself, and procedurally generated assets
7
- (trees, rocks, grass) plus integrated procedural world systems (water, sky)
8
- reduce content complexity so you can focus on your core game logic instead.
9
- Clone it and a toon-shaded character is
10
- walking and swimming through a fully stylized world: cel-shaded characters,
11
- painterly environments, interactive water, procedural vegetation and sky,
12
- post-processing, and a schema-driven tuning panel. Use it as a starter kit,
13
- or import the pieces you need as a library (`@call-me-sensei/toonlab` on npm,
14
- subpath exports per cluster).
3
+ ToonLab by Call Me Sensei is an anime rendering and content-integration toolkit
4
+ for [Three.js](https://threejs.org/). It is purpose-built for cel-shaded anime
5
+ games rather than generic stylization. It is strongest when you already have a
6
+ scene, level layout, or asset and want to apply coordinated
7
+ character, environment, ground, rock, vegetation, water, and post treatments
8
+ without building those shaders from scratch. It also provides focused asset
9
+ generators, a searchable Gallery, portable presets, and OSS/Pro MCP workflows.
10
+
11
+ ToonLab does **not** currently make a coding agent reliable at constructing a
12
+ complete polished world from one prompt. Terrain composition, natural cliffs,
13
+ coastlines, beaches, underwater habitat, biome layout, cameras, and final scene
14
+ art direction remain host-authored or experimental work. For an existing
15
+ labeled scene, the public style runtime coordinates the selected bundle's
16
+ lighting, sky probe, grass/ground coupling, sky/cloud/water, and post defaults.
17
+
18
+ Use ToonLab as a focused runtime library (`@call-me-sensei/toonlab` on npm), as
19
+ an asset/preset authoring workspace, or as an asset-discovery service—not as a
20
+ one-shot world generator.
21
+
22
+ ## Versioned expectation: 0.4.20
23
+
24
+ For a correctly constructed and semantically labeled scene, one strict Call Me
25
+ Sensei bundle application is expected to establish the supported visual
26
+ baseline without scene-specific shader tuning: partly-cloudy sky and clouds,
27
+ renderer look, sun and blue sky fill, shared sun shadows and visible-cloud
28
+ shadows across every supported receiver (including water foam and direct-sun
29
+ highlights), character and material
30
+ routing, source-texture-preserving rocks, Ground Shader conversion,
31
+ meadow grass that adopts the ground's final lit/shadowed color with LOD and
32
+ finite-water exclusion, Anime water,
33
+ and reversible per-domain inspection.
34
+
35
+ The host still authors the level, geometry, asset selection and placement,
36
+ material labels, cameras, gameplay, dynamic physics, and navigation. Labeled
37
+ solid objects receive conservative static collision by default. Arbitrary
38
+ imported assets are not guaranteed to route automatically; strict mode blocks
39
+ uncertain contracts instead of guessing. The installed
40
+ [npm library guide](./NPM-LIBRARY.md) defines the complete shipped surface,
41
+ exclusions, agent setup, MCP setup, and package-first documentation paths.
42
+
43
+ ## Recommended scope today
44
+
45
+ The recommended production workflow is:
46
+
47
+ 1. **Style an existing scene** with Toon, Environment, Ground, Rock,
48
+ Tree/Grass/Flower, Water, and Post runtimes. Water still needs a host-authored
49
+ footprint, shore, and closed seabed.
50
+ 2. **Find and reuse assets** from the project/library, released ToonLab Gallery,
51
+ or policy-permitted open sources. Select by dimensions, taxonomy,
52
+ provenance, license, review status, and immutable public URLs before
53
+ downloading.
54
+ 3. **Connect through ToonLab MCP**—ToonLab OSS local MCP, ToonLab Pro remote
55
+ MCP, or both—for discovery, metadata, provenance, saved presets/files, and
56
+ policy-aware imports.
57
+ 4. **Author bounded outputs** such as portable settings, style bundles,
58
+ procedural grass/trees/rocks/textures, model-loading integrations, and
59
+ reusable exports.
60
+
61
+ Whole-world generation, terrain/biome/coast/cliff formation, automatic set
62
+ dressing, Weather/Climate composition, gameplay systems, and autonomous scene
63
+ classification belong under experimentation. The exact supported boundary and
64
+ a recommended agent brief ship in `NPM-LIBRARY.md` and `agents/PROMPTS.md`.
15
65
 
16
66
  ## Quickstart
17
67
 
18
- **No install** — use the hosted labs at **[toonlab.io](https://toonlab.io)**:
68
+ **No install** — use the hosted Labs at **[toonlab.io](https://toonlab.io)**:
19
69
  define character, vegetation, and environment shaders; author stylized assets;
20
- tune water and sky systems; and export portable presets from the browser.
70
+ tune Water, Sky, and Cloud; and export portable presets from the browser.
21
71
 
22
72
  **As a library** in your own Three.js app:
23
73
 
@@ -25,16 +75,223 @@ tune water and sky systems; and export portable presets from the browser.
25
75
  npm install @call-me-sensei/toonlab
26
76
  ```
27
77
 
78
+ The package publishes declaration files for the root and every supported
79
+ subpath. TypeScript resolves them through each export's `types` condition. The
80
+ style-target, label, bundle-application, inspector, and official-catalog
81
+ placement APIs use exact contracts, including the closed style-domain union;
82
+ the remaining JavaScript surface uses source-inferred declarations with
83
+ permissive signatures only where inference cannot produce a valid public type.
84
+ Package verification compiles a clean packed consumer with `strict: true` and
85
+ `skipLibCheck: false`.
86
+
87
+ The npm artifact is self-documenting when the source repository is unavailable:
88
+
89
+ - `NPM-LIBRARY.md` is the versioned install, runtime, agent, MCP, and support
90
+ boundary guide.
91
+ - `agents/PROMPTS.md` contains ready-to-paste supported prompts.
92
+ - The Codex, Claude Code, and Cursor guidance files are included under
93
+ `agents/` alongside their paired feature skills.
94
+ - Live user documentation remains available at
95
+ [toonlab.io/docs](https://toonlab.io/docs), including the
96
+ [15 public Labs](https://toonlab.io/docs/labs),
97
+ [MCP setup](https://toonlab.io/docs/mcp), and
98
+ [settings reference](https://toonlab.io/docs/reference).
99
+
100
+ ```ts
101
+ import {
102
+ CALL_ME_SENSEI_STYLE_BUNDLE,
103
+ createStyleTargetLabel,
104
+ createToonLabInspector,
105
+ } from '@call-me-sensei/toonlab/styles';
106
+
107
+ const label = createStyleTargetLabel('natural.rock', {
108
+ targetId: 'island/cliff',
109
+ });
110
+ const inspector = createToonLabInspector({ bundle: CALL_ME_SENSEI_STYLE_BUNDLE });
111
+
112
+ await inspector.setDomainEnabled(label.domain, false);
113
+ ```
114
+
28
115
  **Run the labs locally** (this repo):
29
116
 
30
117
  ```bash
31
118
  git clone https://github.com/call-me-sensei/toonlab.git && cd toonlab
32
119
  npm install
120
+ npm run setup
33
121
  npm run dev
34
122
  ```
35
123
 
36
- Vite serves the labs at `http://localhost:5175`. See
37
- [Getting started](docs/getting-started.md) for a tour.
124
+ Setup starts local Postgres with Docker Compose, applies schema migrations and
125
+ official catalog seeds, and reports configured BYO-key providers. Set an
126
+ external `DATABASE_URL` to use an existing Postgres service instead. Vite
127
+ serves the labs at `http://127.0.0.1:5175`. See
128
+ [Getting started](https://github.com/call-me-sensei/toonlab/blob/main/docs/getting-started.md) for a tour.
129
+
130
+ ### Open the full documentation locally
131
+
132
+ After `npm run dev` is running, open **[http://127.0.0.1:5175/docs/](http://127.0.0.1:5175/docs/)**.
133
+ The Docs page links to the runtime reference, the 15 live Labs, MCP setup,
134
+ asset policy, style bundles, and the generated settings reference. Use the
135
+ language menu in the site header to choose one of the 22 Call Me Sensei
136
+ languages; the selected language is remembered in your browser.
137
+
138
+ ### Complete local setup
139
+
140
+ Prerequisites:
141
+
142
+ - Git and Node.js 18 or newer.
143
+ - Docker Desktop on macOS/Windows, or Docker Engine with the Compose plugin on
144
+ Linux. Use Docker's official installation guides for
145
+ [macOS](https://docs.docker.com/desktop/setup/install/mac-install/),
146
+ [Windows](https://docs.docker.com/desktop/setup/install/windows-install/),
147
+ or [Linux](https://docs.docker.com/engine/install/).
148
+ - On macOS or Windows, open Docker Desktop once, finish its first-run setup,
149
+ and wait until it reports that the Docker engine is running.
150
+ - At least one provider API key only if you want local AI generation. Browsing,
151
+ editing, the Library, styles, and official catalog assets do not require one.
152
+
153
+ Install and configure:
154
+
155
+ ```bash
156
+ git clone https://github.com/call-me-sensei/toonlab.git
157
+ cd toonlab
158
+ npm install
159
+ cp .env.example .env
160
+ ```
161
+
162
+ Edit `.env` if needed:
163
+
164
+ ```dotenv
165
+ # The bundled local database; leave this unchanged for the simplest setup.
166
+ DATABASE_URL=postgresql://toonlab:toonlab@127.0.0.1:55432/toonlab
167
+
168
+ # Optional server-side provider keys. Add only providers you use.
169
+ TRIPO_API_KEY=
170
+ MESHY_API_KEY=
171
+ MESHY_API_KEYS=
172
+ GEMINI_API_KEY=
173
+ FAL_KEY=
174
+ OPENAI_API_KEY=
175
+ ARK_API_KEY=
176
+ POLYPIZZA_API_KEY=
177
+ ```
178
+
179
+ Then initialize and start ToonLab:
180
+
181
+ ```bash
182
+ npm run setup
183
+ npm run dev
184
+ ```
185
+
186
+ Open `http://127.0.0.1:5175`. `npm run setup` starts Postgres, waits for it to
187
+ be healthy, applies every missing schema migration, applies every missing
188
+ official catalog dataset, and reports which providers are configured. It is
189
+ safe to run again.
190
+
191
+ The local MCP server exposes the same configured image/3D providers through
192
+ `generate_ai_asset`, `get_generation_job(s)`, and `save_generated_asset`.
193
+ With `FAL_KEY`, `kind: "material"` creates a seamless Fal Patina preview and a
194
+ durable grouped PBR bundle (basecolor, normal, roughness, metalness, and height)
195
+ at 1K–8K instead of flattening the maps into unrelated image jobs.
196
+ Meshy text mode first generates a concept with the selected `image_model`,
197
+ then submits that PNG/JPEG to Meshy 7 as one trackable MCP job. The existing
198
+ `generate_asset` tool remains the deterministic procedural-recipe contract.
199
+
200
+ If setup reports that Docker Desktop is installed but not running, start it
201
+ and retry:
202
+
203
+ ```bash
204
+ open -a Docker # macOS
205
+ npm run setup
206
+ ```
207
+
208
+ ToonLab supports the normal `docker compose` plugin, Docker Desktop's bundled
209
+ Compose binary on macOS, and the legacy `docker-compose` command.
210
+
211
+ To use an existing Postgres server instead of Docker, set `DATABASE_URL` to
212
+ that server before running setup. ToonLab skips Docker and applies the same
213
+ migrations and catalog batches to the external database.
214
+
215
+ ### Local Generate and Library
216
+
217
+ Open `/generate/` to use the same asset-generation workflow as ToonLab Pro
218
+ without accounts, credits, billing, or Character Setup. The local workspace
219
+ supports:
220
+
221
+ - Meshy 7 image-to-3D and multi-image-to-3D, including status polling and GLB
222
+ downloads. Text prompts can run through a selected image model and chain
223
+ into Meshy 7 automatically. Tripo remains available for direct text/image/
224
+ multi-view generation and model segmentation.
225
+ - Gemini image, texture, and concept generation, including model,
226
+ aspect-ratio, resolution, image-count, reference-image, reference-URL,
227
+ previous-generation, prompt-enhancement, and automatic image-to-3D controls.
228
+ - Searchable generation history, full previews, bulk image-to-3D conversion,
229
+ multi-view composition, prompt reuse, cancellation, and explicit saving to
230
+ the Library.
231
+
232
+ Provider keys remain in `.env` and are read only by the local Node server.
233
+ Uploaded references, generated files, and provider downloads are stored as
234
+ opaque objects under `.toonlab/objects`; Postgres stores their metadata and
235
+ generation history. Saved generated assets appear in `/library/` with preview,
236
+ Open, asset-download, JSON-export, and delete actions.
237
+
238
+ Every meaningful Library save also creates an immutable local revision. Open a
239
+ creation in `/library/` to browse or download earlier documents, give important
240
+ versions a unique name, add version-only tags and notes, pin milestones, or
241
+ restore an earlier snapshot. Identical saves are deduplicated, and restore
242
+ always creates a new head revision instead of rewriting history. This revision
243
+ number is Library history; a document's own `version` field remains its portable
244
+ schema version. Style-bundle revisions also record the exact revisions of saved
245
+ documents referenced by their slots. Local runtimes can request the locked,
246
+ self-contained bundle with
247
+ `fetchStyleBundle('/api/toonlab/library/<bundle-id>/resolved')`; a missing lock
248
+ fails explicitly instead of substituting a newer dependency.
249
+
250
+ ### Updating an existing installation
251
+
252
+ Use the same update sequence for every ToonLab release, whether it contains
253
+ application changes, database changes, new official assets, or all three:
254
+
255
+ ```bash
256
+ git pull --ff-only
257
+ npm install
258
+ npm run update
259
+ ```
260
+
261
+ Restart `npm run dev` afterward. `npm run update` is idempotent: it applies
262
+ only files that this database has not recorded yet. It does not recreate the
263
+ database, reset the Library, or delete local creations, drafts, files, styles,
264
+ bundles, or generation history.
265
+
266
+ Users do not need to inspect a release and choose a migration manually:
267
+
268
+ | Release content | Repository location | Applied automatically by |
269
+ |---|---|---|
270
+ | Database structure or behavior | `database/migrations/NNNN_name.sql` | `npm run setup` and `npm run update` |
271
+ | Official catalog metadata and immutable `https://assets.toonlab.io` R2 URLs | `database/seeds/catalog/NNNN_release.sql` | `npm run setup` and `npm run update` |
272
+ | Personal Library content | Local Postgres and `.toonlab/objects` | Never replaced by an official update |
273
+
274
+ Fresh installations receive the complete catalog by applying all versioned
275
+ seed batches in order. Existing installations apply only newer batches.
276
+ Catalog data therefore does **not** use a separate downloadable “current
277
+ seed,” and new datasets are **not** schema migrations. Keeping every released
278
+ batch in the repository gives fresh and upgraded installations the same final
279
+ catalog while preserving a simple, auditable upgrade path. The checked-in
280
+ catalog currently contains 8,163 official assets: 480 first-party ToonLab
281
+ rocks plus 7,683 verified open assets.
282
+
283
+ Applied filenames and SHA-256 digests are recorded in `schema_migrations` and
284
+ `catalog_seed_batches`. Never edit, rename, or replace a released migration or
285
+ seed file; add the next numbered file instead. The updater intentionally stops
286
+ if an already-applied file has changed.
287
+
288
+ Advanced troubleshooting commands are available, but are not required for a
289
+ normal installation:
290
+
291
+ ```bash
292
+ npm run db:migrate # apply schema files only
293
+ npm run db:seed # apply catalog dataset files only
294
+ ```
38
295
 
39
296
  **Building with an AI coding agent?** That is the fastest path through all of
40
297
  this — see [Build with an AI coding agent](#build-with-an-ai-coding-agent)
@@ -42,8 +299,9 @@ for the recommended setup (skills + MCP) and ready-to-paste starting prompts.
42
299
 
43
300
  ### Local MCP server
44
301
 
45
- Running the labs locally also creates a disk-backed `.toonlab/` workspace
46
- shared by the browser tools and the included MCP server. Open
302
+ Running the labs locally also creates a Postgres-backed `.toonlab/` workspace
303
+ shared by the browser tools and the included MCP server. Structured records
304
+ live in Postgres; `.toonlab/objects` contains opaque local binaries. Open
47
305
  `http://localhost:5175/settings/` for a checkout-specific configuration you
48
306
  can paste into an MCP-compatible coding tool.
49
307
 
@@ -55,83 +313,79 @@ npm run dev
55
313
  The local server can search the built-in procedural catalog and public CC0
56
314
  sources, read your saved presets and exported files, generate seeded recipes,
57
315
  and import assets into the project. It uses stdio, requires no account or
58
- OAuth, and keeps work on disk. See [Local MCP and workspace](docs/mcp.md).
316
+ OAuth, and keeps work local. See [Local MCP and workspace](https://github.com/call-me-sensei/toonlab/blob/main/docs/mcp.md) and
317
+ [Local database and public asset releases](https://github.com/call-me-sensei/toonlab/blob/main/docs/local-database-and-public-assets.md).
59
318
 
60
319
  ## The labs
61
320
 
62
321
  Lab UIs are development tools and are not published in the npm package. The
63
- Labs home (`/`) presents them by the artifact they author:
64
-
65
- - **Shader Labs** — Character Shader Lab (`/shader-lab/`), Vegetation Shader
66
- Lab (`/vegetation-shader-lab/`), and Environment Shader Lab
67
- (`/environment-lab/`) each save one reusable IP-wide material treatment.
68
- - **Asset Labs** — Rock, Tree, Flower, Grass, Debris, and Texture Labs author
69
- geometry, material data, recipes, and exports for individual asset classes.
70
- Grass color palettes coordinate base, tip, and shadow tint as one set.
71
- - **World Systems** — Water Lab (`/water-lab/`) authors waves, surface
72
- shading, foam, reflections, interaction, and quality as one runtime preset;
73
- Sky Lab (`/sky-lab/`) authors the gradient, sun, clouds, stars, and cloud
74
- motion as one runtime preset. Their shader controls are embedded in the
75
- complete system labs rather than duplicated as separate shader labs.
76
- - **Playgrounds & demos** — Playground, Water Playground, Outdoor World, VFX
77
- Arena, Fauna Demo, and Ambient VFX Demo validate the authored artifacts in
78
- interactive scenes.
79
-
80
- Supporting editors remain available by direct URL: Weather Lab
81
- (`/weather-lab/`) coordinates current atmosphere, wind, precipitation,
82
- lightning, and surface state; Lighting Lab (`/lighting-lab/`) authors light
83
- rigs and budgets; Gallery
84
- (`/gallery/`) searches supported open-asset sources. The procedural Catalog
85
- is exposed through `@call-me-sensei/toonlab/catalog`. See
86
- [Lab responsibilities](docs/lab-architecture.md) for the scope rules and
87
- [Getting started](docs/getting-started.md) for every direct route.
88
-
89
- Sky and Water are integrated runtime systems, not extra Shader Labs. Their
90
- `.settings` are authored preset data; current Lighting and Weather state is
91
- composed through named transient layers and exposed as `.renderedSettings`
92
- without changing exported presets. Create a `LightingSystem`, then call
93
- `lighting.attachWorld(world)` to own the Lighting layers and connect the
94
- world's Weather coordinator as modulation, so each system can detach only its
95
- own layer. The shared `world.setSun({ direction, color, sky })` adapter keeps
96
- the physical light/shadows, vegetation scene inputs, Sky, and Water aligned;
97
- Weather captures and restores every transient baseline it drives. Sky presets contain exactly 46
98
- portable art fields; dome radius and compile-time quality stay outside the
99
- document. Sky provides low/medium/high cloud graphs plus custom 1–5-octave
100
- quality and can rebuild its material with `setQuality()`. Water quality is a
101
- construction-time graph choice; switching it requires replacing/rebuilding
102
- the surface rather than calling `applySettings()`.
322
+ Labs home (`/`) presents the 15 live user-facing Labs by the artifact they
323
+ author. Every Lab can save and reopen its documented portable creation type;
324
+ preview cameras, stages, lights, playback, and comparison helpers remain
325
+ preview-only. See [The 15 live ToonLab Labs](https://github.com/call-me-sensei/toonlab/blob/main/docs/live-labs.md).
326
+
327
+ Focused ToonLab shaders, water, vegetation, generated assets, texture recipes,
328
+ Gallery assets, and metadata are intended for supplied scene content. Complete
329
+ scene layout, gameplay, dynamic physics, precise collision, navigation, and one-shot world
330
+ construction remain host responsibilities.
331
+
332
+ Every lab also uses one shared 24-hour preview harness with Dawn, Day, Sunset,
333
+ and Night captures. The Day reference must visibly show Call Me Sensei's
334
+ cool/blue shadow response. See the
335
+ [universal preview contract](https://github.com/call-me-sensei/toonlab/blob/main/docs/lab-preview-environment.md).
336
+
337
+ - **Shaders** — Character, Tree, Grass, Flower, Rock, Ground, Manufactured
338
+ Surface, Water, Sky, Cloud, and integrated Sky & Cloud authoring.
339
+ - **Asset Generation** — Rock, Tree, and Grass recipes and projects.
340
+ - **Source & Texture Generation** — deterministic material-map recipes.
341
+
342
+ Every card links to a working editor. Integration examples are documented as
343
+ examples rather than additional Labs. See
344
+ [Lab responsibilities](https://github.com/call-me-sensei/toonlab/blob/main/docs/lab-architecture.md) for scope rules and
345
+ [Getting started](https://github.com/call-me-sensei/toonlab/blob/main/docs/getting-started.md) for current direct routes.
346
+
347
+ Sky, Cloud, and Water Labs author reusable rendering artifacts. Your application
348
+ still supplies valid scene geometry, placement, current conditions, and the
349
+ lighting coordination that keeps the sun, shadows, vegetation, sky, and water
350
+ aligned. Current time and weather remain runtime state and do not alter exported
351
+ presets. Sky quality can be rebuilt with `setQuality()`; Water quality is a
352
+ construction-time graph choice and requires rebuilding the surface.
103
353
 
104
354
  Every URL parameter has a HUD control. In local development, lab state is
105
- mirrored into `.toonlab/` so the MCP server and browser share it; existing
106
- `localStorage` and IndexedDB data migrate on first run. Static hosted builds
355
+ stored in Postgres so the MCP server and browser share it; existing
356
+ `localStorage` and IndexedDB data migrate on first run and browser copies are
357
+ retired after the verified commit. Static hosted builds
107
358
  fall back to browser storage. **Reset Lab** clears the current lab state.
108
359
  Point any model-aware lab at your own model with the Model URL input or
109
360
  `?model=` — see
110
- [Characters](docs/characters.md).
361
+ [Characters](https://github.com/call-me-sensei/toonlab/blob/main/docs/characters.md).
111
362
 
112
363
  ## What's inside
113
364
 
365
+ The current release exposes the public runtime clusters below. Public API status and
366
+ end-to-end capability maturity are different: the recommended workflow is to
367
+ apply focused runtimes to supplied scene content. Whole-world composition
368
+ remains host-owned even though focused Sky and Cloud authoring is live.
369
+ Lighting, VFX, renderer ownership,
370
+ camera behavior, and game feel remain host-owned or pre-beta.
371
+
114
372
  | Cluster | Import | What you get |
115
373
  |---|---|---|
116
- | Toon character shading | `@call-me-sensei/toonlab/toon` | Modern anime character shader: cel bands with art-directed face lighting, skin-tone shadow management, shadow-color HSV control, scene/self/contact shadows, average-shadow smoothing, rim light (fresnel or screen-space depth), stylized + anisotropic hair highlights, eye catchlights, role-aware specular, source map routing (normal/AO/emissive/MatCap/ramp/detail), inverted-hull outlines, glitter, stickers, perspective removal, shell fur, dither fades — 23 settings groups, all preset-serializable. [Docs](docs/toon-shading.md) |
117
- | Environment shading | `@call-me-sensei/toonlab/environment` | Modern anime-style scene shader for texture packs, standard glTF, and untextured scenes: material-role classification, wrapped lighting, packed-map hints, window cutouts, sun/lamp rigs, time-of-day, six-direction ambient probe, planar floor reflections, BVH vertex-AO baking, height fog, cloud shadows. [Docs](docs/environment.md) |
118
- | Lighting | `@call-me-sensei/toonlab/lighting` | Versioned lighting recipes and looks, physical/artistic intensity helpers, reusable luminaire/rig/look/quality presets, deterministic light and shadow budgets, capability diagnostics, runtime Three.js realization, and a data-only Unreal Engine 5.8 MegaLights/Lumen handoff. [Docs](docs/lighting.md) |
119
- | Weather | `@call-me-sensei/toonlab/weather` | Shared cross-system weather coordinator with 22 presets, smooth transitions, one-draw GPU precipitation (rain, snow, sleet, hail, dust), lightning/thunder events, and normalized wetness/snow/ice outputs. It drives sky, sun, fog, cloud shadows, wind, vegetation, water, fauna, and ambient effects through their public adapters. [Docs](docs/weather.md) |
120
- | Water | `@call-me-sensei/toonlab/water` | Fully procedural integrated water system: Gerstner wave stack with a calm→storm dial, wave sets, plunging breakers you can surf, three-stop absorption color, refraction/caustics/foam, GPU ripple sim, splashes, wakes, rain, kelp, underwater view, construction-time quality, and a CPU mirror of the whole spectrum for buoyancy. [Docs](docs/water.md) |
121
- | Vegetation | `@call-me-sensei/toonlab/vegetation` | Instanced grass and flower fields, procedural trees/flowers with serializable recipes, coordinated grass palettes (base, tip, and shadow tint), and one semantic-role `VegetationShaderProfile` shared across grass, foliage, flowers, bark, and stems. Asset identity and current wind/weather remain separate. [Docs](docs/vegetation-sky.md) |
122
- | Paths, roads & bridges | `@call-me-sensei/toonlab/pathgen` | Seeded path networks routed over any `heightAt`: cost-field router (slope/water aware), hand-drawn ribbon overlay in dirt/stone/planks, arched plank bridges with collision, stepped stone climbs, flattened `paths.heightAt` for walkability, scatter exclusion mask, minimap overlay. |
123
- | Asset placement | `@call-me-sensei/toonlab/propgen` | The universal placement pipeline (the PropAsset contract: grounded, collided, instanced, hi/lo LOD by true 3D distance). `propAssetFromObject` drops any imported GLB — e.g. a CC0 model found through MCP — into the pipeline. |
124
- | Fauna | `@call-me-sensei/toonlab/fauna` | Instanced GPU-animated ambient creatures: flocking birds that perch and flush, butterflies over flower masks, hovering dragonflies, schooling koi — staggered boids, hard population budgets, ≤ 1 ms CPU at defaults. |
125
- | Ambient VFX | `@call-me-sensei/toonlab/ambientfx` | One GPU particle backbone, five effects: falling petals and leaves, dusk fireflies, backlit pollen, shoreline mist — follow-window emission, shared wind with grass, time-of-day gates, 3 draw calls total. |
126
- | Asset catalog | `@call-me-sensei/toonlab/catalog` | Every recipe/preset as a searchable manifest with one headline call: `catalog.spawn(id, { seed })` → a placeable PropAsset for trees, rocks, and debris. `catalog.addSource(url)` mounts remote registries. |
127
- | Sky | `@call-me-sensei/toonlab/sky` | Integrated gradient/sun/painterly-cloud/star system with exactly 46 portable art fields, named live scene layers, compile-time quality tiers/custom 1–5 cloud octaves, meaningful built-in looks, and water-reflection compatibility. [Docs](docs/sky.md) |
128
- | Post-processing | `@call-me-sensei/toonlab/post` | Optional single-pipeline compositor: character-aware bloom, color grade, LUT, vignette, screen outline, depth cue — schema-driven, preset-serializable. [Docs](docs/post-processing.md) |
129
- | Camera | `@call-me-sensei/toonlab/camera` | Extensible camera operator stack, generated recipe/preset documents, follow/framing/collision/damping/noise/impulse behavior, and a director for blending reusable rigs. [Style domain docs](docs/style-labs.md#camera) |
130
- | Game feel | `@call-me-sensei/toonlab/game-feel` | Event-driven response scheduler for camera punches, hit-stop/time warp, squash, flashes, audio, and haptics through capability-safe adapters, extensible effect factories, and bounded concurrency. [Style domain docs](docs/style-labs.md#game-feel) |
131
- | Procedural textures | `@call-me-sensei/toonlab/texgen` | Seamless CPU-baked PBR texture generator: 25 tileable pattern/noise generators, layered detail + colored overlays (moss, rust, grime), five-stop cel-capable color ramp, cavity/sheen hand-painted read, derived normal/AO/roughness/metalness/height/ORM/emissive maps, 60+ presets, and a natural-language recipe mapper (offline keywords or BYO-key Gemini/OpenAI). [Docs](docs/texture-lab.md) |
132
- | Character pipeline | `@call-me-sensei/toonlab/character` | Bone-role adapters for VRM/MMD/Mixamo/Rigify rigs, native-clip conventions, Mixamo retarget helpers, and a procedural freestyle swim clip. [Docs](docs/characters.md) |
133
- | Model loaders | `@call-me-sensei/toonlab/loaders` | Optional GLB/glTF, VRM 0+1, PMX/PMD, FBX, OBJ, and text-USDZ loading helpers. Kept off the root import so apps that do not load models avoid loader dependencies. [Docs](docs/characters.md) |
134
- | Debug panel | `@call-me-sensei/toonlab/debug` | One-line schema-driven tuning GUI for any settings module — the same panel the labs use. [Docs](docs/debug-panel.md) |
374
+ | Styles and bundles | `@call-me-sensei/toonlab/styles` | Local, versioned style-bundle documents that coordinate domain profiles without storing asset identity or current scene state. Create, validate, serialize, parse, and resolve JSON with no account or database; hosts currently route explicitly labeled assets through each owning runtime. [Contract](https://github.com/call-me-sensei/toonlab/blob/main/docs/styles-and-bundles.md) |
375
+ | Toon character shading | `@call-me-sensei/toonlab/toon` | Modern anime character shader: cel bands with art-directed face lighting, skin-tone shadow management, shadow-color HSV control, scene/self/contact shadows, average-shadow smoothing, rim light (fresnel or screen-space depth), stylized + anisotropic hair highlights, eye catchlights, role-aware specular, source map routing (normal/AO/emissive/MatCap/ramp/detail), inverted-hull outlines, glitter, stickers, perspective removal, shell fur, dither fades — 23 settings groups, all preset-serializable. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/toon-shading.md) |
376
+ | Environment shading | `@call-me-sensei/toonlab/environment` | Modern anime-style scene shader for texture packs, standard glTF, and untextured scenes: material-role classification, wrapped lighting, packed-map hints, window cutouts, sun/lamp rigs, time-of-day, six-direction ambient probe, planar floor reflections, BVH vertex-AO baking, height fog, cloud shadows. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/environment.md) |
377
+ | Water | `@call-me-sensei/toonlab/water` | Focused water treatment for a host-authored water footprint, continuous shore, and closed seabed: Gerstner waves, absorption color, refraction/caustics/foam, ripples, splashes, wakes, kelp, underwater treatment, and CPU buoyancy sampling. It does not design the coast or underwater habitat. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/water.md) |
378
+ | Vegetation | `@call-me-sensei/toonlab/vegetation` | Instanced grass and flower fields; the 12 named pre-species legacy trees; and a focused procedural broadleaf `BranchTree` with deterministic branching, five leaf silhouettes, caller-supplied leaf/bark textures, and a portable recipe. Package-generated Call Me Sensei trees preserve authored bark first and otherwise select a registered deterministic bark surface instead of a bare trunk. The 165-species research roster remains repository-only experimental work. Independent Tree, Grass, and Flower shader profiles share one semantic-role renderer family. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/vegetation-sky.md) |
379
+ | Rock shader | `@call-me-sensei/toonlab/rock-shader` | Detailed, versioned rock-material profiles with projected detail, distance tint, normal fading, striping, moss and optional top layers, plus explicit source-albedo and vertex-color/AO integration. Call Me Sensei is the default. Geometry generation remains separate in `rockgen`. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/rock-shader.md) |
380
+ | Ground shader | `@call-me-sensei/toonlab/ground-shader` | Splat-weighted anime terrain with slope/cliff detail, shoreline and weather response, HDR sun/shade controls, safe shadow defaults, and flat-albedo ground-field output for vegetation adoption. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/ground-shader.md) |
381
+ | Sky | `@call-me-sensei/toonlab/sky` | Reusable atmosphere, palette, sun, moon, stars, and god-ray settings authored by Sky Lab and Sky & Cloud Lab. Your application coordinates final lighting and scene state. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/sky.md) |
382
+ | Cloud | `@call-me-sensei/toonlab/cloud` | Reusable cloud shape, erosion, density, lighting, wind, cirrus, haze, fade, style, and hero-cloud recipe controls authored by Cloud Shader Lab and Sky & Cloud Lab. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/cloud-shader.md) |
383
+ | Post-processing | `@call-me-sensei/toonlab/post` | Optional single-pipeline compositor: character-aware bloom, color grade, LUT, vignette, screen outline, depth cue — schema-driven, preset-serializable. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/post-processing.md) |
384
+ | Procedural textures | `@call-me-sensei/toonlab/texgen` | Seamless CPU-baked PBR texture generator: 25 tileable pattern/noise generators, layered detail + colored overlays (moss, rust, grime), five-stop cel-capable color ramp, cavity/sheen hand-painted read, derived normal/AO/roughness/metalness/height/ORM/emissive maps, 60+ presets, and a natural-language recipe mapper (offline keywords or BYO-key Gemini/OpenAI). [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/texture-lab.md) |
385
+ | Character pipeline | `@call-me-sensei/toonlab/character` | High-level load/style/rig/animate lifecycle runtime, bone-role adapters for VRM/MMD/Mixamo/Rigify rigs, native-or-packaged locomotion fallback, and procedural freestyle swim. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/characters.md) |
386
+ | Scene surface runtime | `@call-me-sensei/toonlab/runtime` | One strict heightfield contract for grounded props/characters, terrain-aware meadow scatter, shoreline water bed/phase/state wiring, source-texture continuity, and actual labeled shadow-coverage readiness. The host still authors terrain and XZ layout. |
387
+ | Scene collision runtime | `@call-me-sensei/toonlab/runtime` | Automatic reversible collision discovery for labeled static solids, lightweight walkable blockers by default, strict readiness diagnostics, and public Rapier/custom-adapter integration. |
388
+ | Model loaders | `@call-me-sensei/toonlab/loaders` | Optional GLB/glTF, VRM 0+1, PMX/PMD, FBX, OBJ, and text-USDZ loading helpers. Kept off the root import so apps that do not load models avoid loader dependencies. [Docs](https://github.com/call-me-sensei/toonlab/blob/main/docs/characters.md) |
135
389
 
136
390
  The main `vegetation` barrel exposes the complete runtime. Smaller consumers
137
391
  can import the same bindings from
@@ -139,63 +393,182 @@ can import the same bindings from
139
393
  `@call-me-sensei/toonlab/grass-palettes`; package verification asserts that
140
394
  the focused subpaths and root export reference the identical implementations.
141
395
 
142
- Zero texture assets in the library: water, sky, grass, flowers, trees, and
143
- splashes are all procedural. The one bundled model is a CC0 mannequin with 45
144
- embedded animation clips.
145
-
146
- ## Library usage
396
+ ### Default Call Me Sensei grass
147
397
 
148
- ### A complete open world in one screen of code
398
+ ToonLab's default grass is its own deterministic procedural implementation.
399
+ The package generates the `primary` or denser `secondary` clump, LOD0/1/2,
400
+ blade attributes, and material entirely from code. The public factory uses the
401
+ primary `call_me_sensei_clump` meadow by default and has no GLB or image
402
+ dependency. Its accepted look is continuous upright coverage, full ground
403
+ color adoption, and a bright texture-free watercolor wash—not isolated dark
404
+ tufts or generic procedural blades:
149
405
 
150
406
  ```js
151
- import { createStylizedTerrain, createStylizedWorld, createWorldMinimap } from '@call-me-sensei/toonlab';
152
-
153
- // Seeded terrain generator — ANY seed is a valid, playable world. One knob
154
- // per big idea: waterCoverage (how much water), height (mountain range),
155
- // depth (basins), size (number or { x, z }), floatingIslands, sinkholes.
156
- const terrain = createStylizedTerrain({ seed: 42, size: 1000, archetype: 'terracedKarst' });
157
- const terrainRoot = new THREE.Group();
158
- terrainRoot.add(terrain.root);
159
- scene.add(terrainRoot);
160
-
161
- // Environment shading, aligned sun + real shadows, sky, anime water, LOD
162
- // forests (billboard far trees), follow-window grass, cloud shadows,
163
- // unified three-layer fog, and collision — all on by default.
164
- const world = await createStylizedWorld({
165
- renderer, scene, camera,
166
- terrain: { heightAt: terrain.heightAt, root: terrainRoot, size: terrain.meshExtent },
167
- water: { level: terrain.waterLevel },
168
- weather: { preset: 'call_me_sensei' }, // 'snow' | 'hail' | 'thunderstorm' | ...
169
- followTarget: character, // your character root (optional): splashes, wakes, grass push
407
+ import { createSceneSurfaceRuntime } from '@call-me-sensei/toonlab/runtime';
408
+ import { createSceneStyleRuntime, createStyleTarget } from '@call-me-sensei/toonlab/styles';
409
+
410
+ const surface = createSceneSurfaceRuntime({ bounds, heightAt, waterLevel: 0 });
411
+ const grass = await surface.createGrassField({
412
+ count: 12000,
413
+ min: { x: -40, z: -30 },
414
+ max: { x: 40, z: 30 },
415
+ // variant: 'secondary',
170
416
  });
171
- character.position.copy(terrain.spawn); // probed: walkable, near a shore
417
+ const water = surface.createWaterSurface({
418
+ width: 80,
419
+ depth: 50,
420
+ position: { x: 0, z: -25 },
421
+ });
422
+ scene.add(grass);
423
+ scene.add(water);
424
+
425
+ const look = createSceneStyleRuntime({ renderer, scene, sky, water });
426
+ await look.apply('call-me-sensei', {
427
+ targets: [
428
+ createStyleTarget('terrain', 'terrain.ground', ground),
429
+ createStyleTarget('meadow', 'vegetation.grass', grass),
430
+ ],
431
+ });
432
+
433
+ // The style runtime updates its ground-color field before the grass renders.
434
+ look.update(delta, camera);
435
+ grass.update(delta, camera);
172
436
 
173
- const clock = new THREE.Clock();
174
- renderer.setAnimationLoop(() => {
175
- world.update(clock.getDelta());
176
- renderer.render(scene, camera);
437
+ // Fail closed after the package shadow pass has produced coverage telemetry.
438
+ surface.assertReady({
439
+ camera,
440
+ styleRuntime: look,
441
+ requireShadowDomains: ['character', 'manufactured.surface', 'vegetation.tree'],
177
442
  });
178
443
  ```
179
444
 
180
- **Bring your own terrain instead** — the generator is optional. The whole
181
- contract is a pure `heightAt(x, z)` in meters plus your displaced mesh under
182
- `terrain.root`; masks, scatter, collision, and the minimap all derive from
183
- it:
445
+ Large fields are spatially chunked by default. Each update rejects chunks and
446
+ placements outside the camera frustum, then compacts only visible records into
447
+ the same three LOD draw buffers. `chunkSize` (default 16 m), `cullPadding`
448
+ (default 1.5 m), and `frustumCulling` are construction options;
449
+ `grass.cullingStats` reports the current visible/culled instance and chunk
450
+ counts. Do not disable this for an outdoor meadow merely to work around bounds.
451
+
452
+ `CALL_ME_SENSEI_GRASS_CLUMP_VARIANTS` exposes the stable procedural recipes;
453
+ `CALL_ME_SENSEI_GRASS_MATERIAL_TEXTURE_URLS` is an empty compatibility binding
454
+ because the material has no image dependencies. The default factory returns a
455
+ `StylizedGrassClumpField`. `RetainedGrassClumpField` remains the generic
456
+ caller-supplied geometry/material container and does not load assets by itself.
457
+ The Call Me Sensei default preserves sampled ground hue: green ground produces
458
+ only lighter/darker green blades. Optional hue shift/desaturation remain public
459
+ profile parameters for other authored styles. Its recipe-v3 LOD0/1/2 topology
460
+ uses 40/14/6 primary blades and compensates retained stroke width so zooming
461
+ does not make the underlying terrain appear to change color.
462
+
463
+ The supported tree set is intentionally the proven pre-species surface.
464
+ Use a named legacy silhouette directly:
184
465
 
185
466
  ```js
186
- const heightAt = (x, z) => 12 * Math.sin(x / 90) * Math.cos(z / 90); // yours
187
- const world = await createStylizedWorld({
188
- renderer, scene, camera,
189
- terrain: { heightAt, root: myTerrainRoot, size: 1200 },
190
- water: { level: 0 },
467
+ import {
468
+ LEGACY_TREE_IDS,
469
+ createLegacyTree,
470
+ } from '@call-me-sensei/toonlab/vegetation';
471
+
472
+ console.log(LEGACY_TREE_IDS); // straight, leaning, see-through, ...
473
+ const legacyTree = createLegacyTree('golden-gingko', {
474
+ trunkMap: barkTexture,
475
+ vegetationShader: { preset: 'call_me_sensei' },
191
476
  });
477
+ scene.add(legacyTree);
192
478
  ```
193
479
 
194
- Add a clickable minimap with `createWorldMinimap({ heightAt, size,
195
- waterLevel, onPick })`, and solid rocks/trees with the built-in
196
- `world.collision` (`addCircles` for your own props, `resolve(position,
197
- radius)` per frame). Archetypes: `terracedKarst`, `lakeland`, `alpine`,
198
- `rollingPlains`, `archipelago`.
480
+ For a configurable recursive branch-type broadleaf, use the focused wrapper:
481
+
482
+ ```js
483
+ import { BranchTree } from '@call-me-sensei/toonlab/vegetation';
484
+
485
+ const tree = new BranchTree({
486
+ seed: 18,
487
+ branches: { levels: 3, children: 5, angle: 52 },
488
+ leaves: { shape: 'oak', color: [0.18, 0.48, 0.22], map: leafTexture },
489
+ trunk: { color: [0.48, 0.29, 0.16], map: barkTexture },
490
+ });
491
+ scene.add(tree);
492
+ ```
493
+
494
+ `teardrop`, `round`, `oak`, `maple`, and `gingko` are the supported leaf
495
+ shapes. Botanical species generation is not a public package claim.
496
+
497
+ Water, sky, flowers, trees, grass, and splashes keep procedural defaults, while
498
+ legacy trees and BranchTree may use caller-owned leaf and bark textures. The
499
+ Call Me Sensei tree path resolves bark in this order: explicit
500
+ `trunkSurfaceProfile`, authored `trunkMap`, then the registered
501
+ `call-me-sensei-bark-v1` fallback. Use `getTreeSurfaceProfileOptions()` when a
502
+ developer or coding agent should choose a different registered surface; use
503
+ `trunkSurfaceProfile: 'none'` only for an intentional flat-color trunk. Trunks
504
+ cast and receive through the package shared shadow pass by default.
505
+
506
+ The optional CC0 Quaternius mannequin is also not bundled in npm: its immutable R2
507
+ URL, byte count, hash, source, and license are exposed as metadata. A host may
508
+ download that test fixture or use its own mannequin:
509
+
510
+ ```js
511
+ import { TOONLAB_MANNEQUIN_ASSET } from '@call-me-sensei/toonlab/character';
512
+ import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
513
+
514
+ const { scene: mannequin, animations } = await new GLTFLoader().loadAsync(
515
+ TOONLAB_MANNEQUIN_ASSET.url,
516
+ );
517
+ ```
518
+
519
+ ## Library usage
520
+
521
+ The local Library is discoverable through the same vocabulary as Gallery:
522
+ search names, descriptions, types, and durable tags in `/library/`, or use
523
+ `list_my_creations` / `search_assets({ source: 'library' })` through MCP.
524
+ Saved-object tags are ASCII lowercase slugs (`a-z`, `0-9`, and single hyphen
525
+ separators; maximum 10 tags and 32 characters each) and are
526
+ stored independently from the portable document so they remain searchable
527
+ after reload and edits.
528
+
529
+ Revision history is unlimited in the local workspace. Creation tags above are
530
+ separate from version tags: creation tags remain discovery metadata, while
531
+ version tags describe a particular immutable snapshot.
532
+
533
+ Start by loading one style bundle, explicitly labeling the scene targets, and
534
+ preflighting the complete routing plan. Strict mode is atomic: if any target
535
+ is unlabeled, unsupported, or missing an adapter, nothing is mutated.
536
+
537
+ ```js
538
+ import {
539
+ CALL_ME_SENSEI_STYLE_BUNDLE,
540
+ applyStyleBundle,
541
+ } from '@call-me-sensei/toonlab/styles';
542
+
543
+ const targets = [
544
+ {
545
+ id: 'hero',
546
+ domain: 'character',
547
+ subject: characterRoot,
548
+ apply: (root, settings) => applyCharacterProfile(root, settings),
549
+ },
550
+ {
551
+ id: 'terrain',
552
+ domain: 'terrain.ground',
553
+ subject: terrainRoot,
554
+ apply: (root, settings) => applyGroundProfile(root, settings),
555
+ },
556
+ {
557
+ id: 'forest',
558
+ domain: 'vegetation.tree',
559
+ subject: treeRoot,
560
+ apply: (root, settings) => applyTreeProfile(root, settings),
561
+ },
562
+ ];
563
+
564
+ await applyStyleBundle(CALL_ME_SENSEI_STYLE_BUNDLE, { targets });
565
+ ```
566
+
567
+ Use the domain-specific runtimes below to implement each `apply` callback.
568
+ Asset identity stays in project/library sourcing configuration; it is never
569
+ embedded in the style bundle. Custom adapters and custom assets must be
570
+ recorded in `.toonlab/reports/style-asset-gaps.json` and
571
+ `TOONLAB_ASSET_GAPS.md`.
199
572
 
200
573
  ### Individual clusters
201
574
 
@@ -214,18 +587,24 @@ applyToonShader(characterRoot, { settings });
214
587
 
215
588
  ```js
216
589
  import { WaterSurface } from '@call-me-sensei/toonlab/water';
217
- import { StylizedSky } from '@call-me-sensei/toonlab/sky';
218
590
 
219
- const water = new WaterSurface({ width: 200, depth: 200, preset: 'lake' });
591
+ // The host supplies a continuous shore and closed bed sampler.
592
+ const water = new WaterSurface({
593
+ width: 200,
594
+ depth: 200,
595
+ preset: 'lake',
596
+ bedHeight,
597
+ });
220
598
  scene.add(water);
221
- const sky = new StylizedSky();
222
- scene.add(sky);
223
599
 
224
600
  // per frame, before renderer.render(scene, camera):
225
601
  water.update(renderer, scene, camera, delta);
226
- sky.update(delta, camera);
227
602
  ```
228
603
 
604
+ Add Sky and Cloud after the host scene has one coordinated sun, light rig, and
605
+ current-condition source. Their focused Labs produce the portable settings;
606
+ the application owns final scene composition.
607
+
229
608
  Inside this repo the labs import from `../../src/...`; the `@call-me-sensei/toonlab/...`
230
609
  specifiers are what you use once the package is installed from npm. The
231
610
  shader clusters are TSL/NodeMaterial modules for Three's WebGPU renderer
@@ -238,63 +617,81 @@ stack, with WebGL2 fallback through the same TSL path.
238
617
  MCP setup, the prompt cookbook, and the full settings reference. Hosted
239
618
  features are marked "Pro"; the extended hosted docs live at
240
619
  [toonlab.io/docs](https://toonlab.io/docs).
241
- - [Lab responsibilities](docs/lab-architecture.md) — the boundary between
242
- Shader Labs, Asset Labs, World Systems, and preview-only scene state.
243
- - [Getting started](docs/getting-started.md) — clone, run, tour the labs,
620
+ - [Lab responsibilities](https://github.com/call-me-sensei/toonlab/blob/main/docs/lab-architecture.md) — the finalized artifact,
621
+ production-method, editor/library, and preview-state boundaries.
622
+ - [The 15 live ToonLab Labs](https://github.com/call-me-sensei/toonlab/blob/main/docs/live-labs.md) — each user-facing editor, saved artifact, runtime, and generation workflow.
623
+ - [Universal lab preview environment](https://github.com/call-me-sensei/toonlab/blob/main/docs/lab-preview-environment.md) —
624
+ shared 24-hour controls, four-state regression matrix, and required cool/blue
625
+ daylight-shadow verification.
626
+ - [Rock shader](https://github.com/call-me-sensei/toonlab/blob/main/docs/rock-shader.md) — the separate generator/material
627
+ architecture, 58-field public configuration, import policy, and bundle use.
628
+ - [Styles, style bundles, and asset routing](https://github.com/call-me-sensei/toonlab/blob/main/docs/styles-and-bundles.md) —
629
+ rendering domains, required asset labels, fallback policy, bundle ownership,
630
+ OSS application boundaries, and the shader/lab migration contract.
631
+ - [Open asset library and scene coverage](https://github.com/call-me-sensei/toonlab/blob/main/docs/open-asset-library.md) —
632
+ measurable scene-kit coverage, curated stylized generator base sets,
633
+ CC0/CC-BY provenance, gallery routing, and generation fallback policy.
634
+ - [Getting started](https://github.com/call-me-sensei/toonlab/blob/main/docs/getting-started.md) — clone, run, tour the labs,
244
635
  load your own models.
245
- - [Toon character shading](docs/toon-shading.md)
246
- - [Environment shading](docs/environment.md)
247
- - [Lighting](docs/lighting.md)
248
- - [Weather system](docs/weather.md)
249
- - [Generative style labs](docs/style-labs.md) — Post & Color, Camera, Motion,
250
- UI Theme, Biome, Soundscape, and Game Feel; shared recipes, MCP authoring,
251
- package runtimes, quality budgets, and engine design references.
252
- - [Water](docs/water.md)
253
- - [Sky system](docs/sky.md)
254
- - [Vegetation](docs/vegetation-sky.md)
255
- - [Post-processing](docs/post-processing.md)
256
- - [Texture Lab and texgen](docs/texture-lab.md)
257
- - [Characters and animation](docs/characters.md)
258
- - [Debug panel](docs/debug-panel.md)
259
- - [World scale and world presets](docs/world-scale.md) — the meters
260
- convention, open-world scale presets, rock quality tiers, and vegetation
261
- scatter helpers.
262
- - [Settings reference](docs/settings-reference.md) — every tunable field,
636
+ - [Current capability status](https://github.com/call-me-sensei/toonlab/blob/main/docs/capability-status.md) — recommended
637
+ existing-scene, Gallery, MCP, and focused-authoring workflows versus
638
+ experimental scene-construction claims.
639
+ - [Toon character shading](https://github.com/call-me-sensei/toonlab/blob/main/docs/toon-shading.md)
640
+ - [Manufactured environment materials](https://github.com/call-me-sensei/toonlab/blob/main/docs/urban-prop-surface-roles.md) —
641
+ the layered classify-once contract for props, vehicles, buildings,
642
+ interiors, and reusable material-aware shaders.
643
+ - [Environment shading](https://github.com/call-me-sensei/toonlab/blob/main/docs/environment.md)
644
+ - [Styles and bundles](https://github.com/call-me-sensei/toonlab/blob/main/docs/styles-and-bundles.md) — apply coordinated treatments to explicitly labeled scene targets.
645
+ - [Current release notes](https://github.com/call-me-sensei/toonlab/blob/main/docs/release-notes.md)
646
+ - [Water](https://github.com/call-me-sensei/toonlab/blob/main/docs/water.md)
647
+ - [Sky system](https://github.com/call-me-sensei/toonlab/blob/main/docs/sky.md)
648
+ - [Cloud shader](https://github.com/call-me-sensei/toonlab/blob/main/docs/cloud-shader.md)
649
+ - [Vegetation](https://github.com/call-me-sensei/toonlab/blob/main/docs/vegetation-sky.md)
650
+ - [Post-processing](https://github.com/call-me-sensei/toonlab/blob/main/docs/post-processing.md)
651
+ - [Texture Lab and texgen](https://github.com/call-me-sensei/toonlab/blob/main/docs/texture-lab.md)
652
+ - [Characters and animation](https://github.com/call-me-sensei/toonlab/blob/main/docs/characters.md)
653
+ - [Settings reference](https://github.com/call-me-sensei/toonlab/blob/main/docs/settings-reference.md) — every tunable field,
263
654
  generated from the schemas (`node scripts/generate-settings-reference.mjs`).
264
- - [Shader constants](docs/shader-constants.md) — the deliberately unexposed
655
+ - [Shader constants](https://github.com/call-me-sensei/toonlab/blob/main/docs/shader-constants.md) — the deliberately unexposed
265
656
  constants and where they live.
266
657
 
267
658
  ## Build with an AI coding agent
268
659
 
269
660
  ToonLab is designed to be driven by a coding agent (Claude Code, Codex,
270
661
  Cursor, …). The recommended setup has three parts: give the agent the ToonLab
271
- skills, connect an MCP server for asset discovery, then start from a goal
272
- prompt and iterate. Everything the agent needs ships in this repo under
273
- `agents/` (not in the npm package — the package stays runtime-only).
662
+ skills, connect whichever ToonLab OSS local or ToonLab Pro remote MCP surface
663
+ the developer has, then start from a goal prompt and iterate. The npm package
664
+ ships runtime source and the small text-only `agents/` guidance bundle. It
665
+ ships no models, textures, labs, examples, review fixtures, or other binary or
666
+ visual assets.
274
667
 
275
668
  ### 1. Install the ToonLab skills in your game project
276
669
 
277
- The skills teach the agent the assembly order, the frame-loop contract, and
278
- each subsystem's API so it wires ToonLab correctly on the first try. Start
279
- with `game-dev`; the other twelve cover individual features (water, weather,
280
- lighting, camera, game feel, …).
670
+ The skills teach the agent the runtime boundary, asset-discovery order,
671
+ frame-loop contract, and each focused subsystem API. Start with `game-dev` for
672
+ integration into an existing scene and `asset-sourcing` for Gallery/MCP work.
673
+ Experimental whole-world, natural-cliff, Weather/Climate, camera, game-feel,
674
+ and gameplay-VFX skills are intentionally not included in the npm artifact.
281
675
 
282
676
  ```bash
283
677
  # Claude Code — feature skills + project guidance
284
678
  mkdir -p .claude/skills
285
- cp -R path/to/toonlab/agents/skills/claude/* .claude/skills/
286
- cat path/to/toonlab/agents/codex/AGENTS.md >> CLAUDE.md
679
+ cp -R node_modules/@call-me-sensei/toonlab/agents/skills/claude/* .claude/skills/
680
+ cat node_modules/@call-me-sensei/toonlab/agents/claude/CLAUDE.md >> CLAUDE.md
287
681
 
288
682
  # Codex — shared guide + Codex-oriented skills
289
- cat path/to/toonlab/agents/codex/AGENTS.md >> AGENTS.md
290
- cp -R path/to/toonlab/agents/skills/codex path/to/your-game/docs/toonlab-skills
683
+ cat node_modules/@call-me-sensei/toonlab/agents/codex/AGENTS.md >> AGENTS.md
684
+ mkdir -p docs/toonlab-skills
685
+ cp -R node_modules/@call-me-sensei/toonlab/agents/skills/codex/* docs/toonlab-skills/
291
686
 
292
687
  # Cursor — rule file
293
688
  mkdir -p .cursor/rules
294
- cp path/to/toonlab/agents/cursor/toonlab.mdc .cursor/rules/
689
+ cp node_modules/@call-me-sensei/toonlab/agents/cursor/toonlab.mdc .cursor/rules/
295
690
  ```
296
691
 
297
692
  See [`agents/README.md`](agents/README.md) for the full layout.
693
+ Ready-to-paste supported prompts are included in
694
+ [`agents/PROMPTS.md`](agents/PROMPTS.md).
298
695
 
299
696
  ### 2. Connect MCP for asset discovery
300
697
 
@@ -310,15 +707,17 @@ into a disk-backed `.toonlab/` workspace:
310
707
  "mcpServers": {
311
708
  "toonlab-local": {
312
709
  "command": "npx",
313
- "args": ["-y", "@call-me-sensei/toonlab@latest", "--workspace", "/absolute/path/to/your-game/.toonlab"]
710
+ "args": ["-y", "@call-me-sensei/toonlab@latest", "--workspace", "/absolute/path/to/your-game/.toonlab"],
711
+ "env": { "TOONLAB_LEGACY_WORKSPACE": "1" }
314
712
  }
315
713
  }
316
714
  }
317
715
  ```
318
716
 
319
- If you run the labs from a checkout (`npm run dev`), open
320
- `http://localhost:5175/settings/` for a ready-made config instead. See
321
- [Local MCP and workspace](docs/mcp.md).
717
+ The npm server defaults to this disk workspace when `DATABASE_URL` is absent.
718
+ See [the installed npm guide](./NPM-LIBRARY.md) and
719
+ [live MCP documentation](https://toonlab.io/docs/mcp) for the complete local
720
+ and hosted setup.
322
721
 
323
722
  **ToonLab Pro (remote, OAuth).** [toonlab.io](https://toonlab.io) hosts a
324
723
  remote MCP server that adds an indexed CC0 asset search with ToonLab-styled
@@ -337,25 +736,28 @@ live at [toonlab.io/docs/mcp](https://toonlab.io/docs/mcp).
337
736
 
338
737
  ### 3. The first prompt
339
738
 
340
- Give the agent a goal, name the skill, and let it verify its own work:
739
+ Give the agent a bounded goal over supplied scene content, name the skill, and
740
+ let it verify its own work:
341
741
 
342
742
  ```text
343
- Using the ToonLab game-dev skill, set up a new Three.js + Vite project with
344
- @call-me-sensei/toonlab. Build a 1 km seeded open world (archetype
345
- "lakeland") with the bundled toon-shaded mannequin as the playable character,
346
- water, sky, the "call_me_sensei" weather preset, post-processing, and a
347
- follow camera with game feel. Follow the skill's assembly order and
348
- frame-loop contract, then run the dev server and fix issues until I can walk
349
- from spawn to the shoreline and swim.
743
+ Using the ToonLab game-dev skill, integrate @call-me-sensei/toonlab into this
744
+ existing Three.js scene. Inventory and label the character, manufactured,
745
+ ground, rock, tree, grass, flower, water, and post targets. Confirm my asset
746
+ sourcing policy and use whichever ToonLab OSS or Pro MCP surface is connected
747
+ to fill only named asset gaps. Apply the matching public runtimes, preserve
748
+ provenance, run the scene, and verify the supplied cameras. Do not redesign the
749
+ terrain, coastline, biome, lighting, camera, or gameplay unless I explicitly
750
+ request an experiment.
350
751
  ```
351
752
 
352
753
  ### 4. Prompts for common jobs
353
754
 
354
755
  ```text
355
756
  Use the ToonLab MCP server to find CC0 props for a small fishing village —
356
- lanterns, crates, a pier, a torii gate — then place every import with
357
- propAssetFromObject so they are grounded, collided, and LOD'd. Tell me what
358
- came from where with licenses.
757
+ lanterns, crates, a pier, a torii gate. Evaluate geometry, material separation,
758
+ texture frequency, silhouette, provenance, and license for the Call Me Sensei
759
+ anime treatment. Use the host game's placement/collision/LOD system and tell
760
+ me what came from where.
359
761
  ```
360
762
 
361
763
  ```text
@@ -369,9 +771,10 @@ shrine path. I want a hand-painted look with a five-stop cel ramp.
369
771
  ```
370
772
 
371
773
  ```text
372
- Using the ToonLab weather + lighting skills, add a day/night cycle with a
373
- thunderstorm that rolls in at dusk: wind picks up in the grass, rain streaks
374
- the water, lightning drives the sky and light rig.
774
+ As an experiment, use ToonLab Weather plus the host game's lighting system to
775
+ prototype a day/night cycle with a thunderstorm at dusk. Keep lighting outside
776
+ the selected style bundle, list every host adapter, and do not describe the result
777
+ as a supported full-world workflow.
375
778
  ```
376
779
 
377
780
  ```text
@@ -380,8 +783,9 @@ it across toon shading, sky, water, and post so the whole game matches it.
380
783
  ```
381
784
 
382
785
  ```text
383
- Give the sword swing anime game feel: hit-stop, a camera punch, a trail
384
- ribbon and impact sparks from vfxgen, and a white flash on hit.
786
+ Design a sword-swing VFX treatment that matches the selected anime bundle.
787
+ VFX is not included in the selected bundle, so use your application runtime,
788
+ record the custom VFX choice, and include its provenance and intended feedback.
385
789
  ```
386
790
 
387
791
  A more extensive prompt cookbook — including the Pro generation and