@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
@@ -0,0 +1,175 @@
1
+ # ToonLab Runtime Boundary
2
+
3
+ ToonLab is recommended for stylizing and populating supplied anime-game
4
+ scene content. Prefer focused imports from these production-oriented areas:
5
+
6
+ - `toon`, `toon-settings`, `character`
7
+ - `environment`, `ground-shader`, `rock-shader`
8
+ - `vegetation`, `vegetation-shaders`, `grass`, `grass-palettes`
9
+ - `water`, `water-settings`
10
+ - `lighting`
11
+ - `post`, `post-processing`
12
+ - `rockgen`, `texgen`, `assetlib`
13
+ - `styles`, `asset-policy`, `loaders`
14
+
15
+ `sky` and `cloud` are public because they are owned by the live Sky, Cloud, and
16
+ Sky & Cloud Labs. Weather, climate, debris, ambient-effects, fauna, debug, and
17
+ root terrain/world helpers are not package entry points in this release.
18
+ Repository examples may exercise them locally, but package users must not
19
+ import them.
20
+
21
+ For characters, prefer `createCharacterRuntime()` from `./character`. It owns
22
+ format loading, texture readiness, foot-origin fitting, toon conversion,
23
+ humanoid rig resolution, native clips or packaged locomotion fallback, mixer
24
+ updates, VRM updates, and disposal. The host still owns movement intent,
25
+ dynamic physics, ground contact, and camera behavior. The walkable runtime
26
+ automatically consumes the static collision service bound by
27
+ `createSceneStyleRuntime()`. Do not recreate this pipeline inside individual
28
+ scenes or Labs.
29
+
30
+ The selected style bundle coordinates visual settings and supported scene-look
31
+ systems; it does not construct or classify a scene. Lighting is a supported
32
+ bundle domain through `createSceneStyleRuntime()`. VFX, camera behavior,
33
+ game-feel behavior, and renderer configuration remain unsupported bundle
34
+ domains owned by the host game.
35
+ When a project-local implementation changes the selected anime treatment,
36
+ treat it as a custom adapter and record it in the custom-gap report.
37
+
38
+ The `grass` entry owns two deterministic first-party Call Me Sensei clump
39
+ recipes, three generated LODs per variant, the procedural material, and the
40
+ async-compatible `createCallMeSenseiGrassField()` default factory. It ships no
41
+ mesh or texture files. `RetainedGrassClumpField` remains the generic container
42
+ for caller-supplied, properly licensed geometry and materials.
43
+
44
+ The default factory resolves the `call_me_sensei_clump` meadow preset: 40
45
+ upright overlapping primary blades, full ground-field adoption, watercolor
46
+ lift and translucent stroke layering, and a final LOD without an implicit hard
47
+ cull. Sparse generic blades and repository comparison media are not equivalent
48
+ fallbacks.
49
+
50
+ Applying the Call Me Sensei bundle resolves the same grass field response. The
51
+ scene style runtime creates and updates the ground-field pass automatically, so
52
+ grass roots sample the actual labeled Ground Shader output without host-side
53
+ color duplication.
54
+
55
+ The `environment` entry accepts the same explicit style/scenario routing used
56
+ by the preset registry:
57
+
58
+ ```js
59
+ await applyEnvironmentShader(root, {
60
+ preset: 'call_me_sensei',
61
+ scenario: 'exteriorDay',
62
+ });
63
+ ```
64
+
65
+ This is equivalent to spreading
66
+ `resolveEnvironmentPreset('call_me_sensei', 'exteriorDay')` into the adapter.
67
+ Named preset values establish the baseline; explicit `settings`, `features`,
68
+ `parameters`, and `materialLook` overrides take precedence. Select the preset
69
+ before authoring overrides instead of retyping its numeric fields.
70
+
71
+ The `vegetation` entry's scatter helpers place across the ground heightfield —
72
+ `scatterInRect`, `scatterGrassAround`, `scatterForest` — taking `(x, z)` and
73
+ sampling `y` from a host `heightAt`. That contract cannot express a surface
74
+ which is not single-valued in `y`, such as a cliff cap or a ledge with terrain
75
+ both above and below it.
76
+
77
+ For those, use `scatterOnSurface({ surfaces, density | count, minSpacing,
78
+ mask, weightAt, normalBlend })`. Each surface is a disc in world space —
79
+ `{ center, radius, normal?, seed? }`, the shape a rock or cliff module already
80
+ publishes for its caps and ledges. Spacing is measured in 3D, so stacked caps
81
+ do not reject each other's points. Each surface draws from its own
82
+ deterministic stream, so adding or removing one does not reshuffle the others.
83
+ Returned placements carry `normal`, `forward` and `yaw` alongside `x/y/z`, so
84
+ an aligned field no longer has to derive orientation per placement. The
85
+ existing `(x, z)` mask factories and `combineMasks` compose unchanged.
86
+
87
+ The `ground-shader` entry also owns bounded transient print fields for sand,
88
+ dirt, and sufficiently deep snow. Create a `GroundPrintLayer`, pass it as the
89
+ material's `printLayer`, and emit contact events with `stamp()`. The portable
90
+ Ground Shader document saves only `printResponse`; stamp history, snow depth,
91
+ visibility, and recovery remain runtime state:
92
+
93
+ ```js
94
+ const prints = createGroundPrintLayer({
95
+ bounds: geometry.boundingBox,
96
+ resolution: 1024,
97
+ recoverySeconds: 30,
98
+ });
99
+
100
+ const ground = createGroundShaderMesh({ geometry, field, layers, printLayer: prints });
101
+ prints.stamp({
102
+ shape: 'boot-left',
103
+ position: footWorldPosition,
104
+ forward: characterForward,
105
+ size: [0.12, 0.28],
106
+ });
107
+ setGroundShaderSceneState(ground, { snowCover: 1, snowDepth: 0.12 });
108
+ ```
109
+
110
+ This is a visual albedo, roughness, and normal response. Terrain geometry,
111
+ precise/dynamic collision, navigation, character contact detection, and large-world print
112
+ streaming remain host-owned.
113
+
114
+ Pair it with `createCapEdgeWeight({ rimBias: 0.05, falloff, break })` for a
115
+ radial weight that thins coverage toward a broken rim. `falloff` and `break`
116
+ create the thinning; `rimBias` deliberately pushes coverage outward, so keep
117
+ it near zero for a soil cap. A cap that stays dense to its edge reads as a flat
118
+ disc stuck onto the rock rather than as soil.
119
+
120
+ ## Shared scene surface runtime
121
+
122
+ Use `createSceneSurfaceRuntime()` from `@call-me-sensei/toonlab/runtime` when a
123
+ scene combines an authored terrain heightfield with grounded props, meadow
124
+ grass, characters, or shoreline water. The host supplies world bounds,
125
+ `heightAt(x, z)`, and a water level once. The runtime then owns derived Y
126
+ placements, bounds grounding, water masking, the shoaling/nearshore/shore-state
127
+ connection, source-texture continuity checks, and fail-closed composition
128
+ readiness.
129
+
130
+ ```js
131
+ const surface = createSceneSurfaceRuntime({ bounds, heightAt, waterLevel: 0 });
132
+ const grass = await surface.createGrassField({ count: 12000, min, max });
133
+ const water = surface.createWaterSurface({ width: 80, depth: 50, position: { z: -25 } });
134
+ surface.place(tree, { x: 4, z: 8 });
135
+ surface.place(bench, { anchor: 'bounds', x: 2, z: 5 });
136
+
137
+ // After the package shadow pass has updated:
138
+ surface.assertReady({
139
+ camera,
140
+ styleRuntime,
141
+ requireShadowDomains: ['character', 'manufactured.surface', 'vegetation.tree'],
142
+ });
143
+ ```
144
+
145
+ Do not hand-author grass Y values, independently offset a shoreline water
146
+ plane, or infer readiness from `castShadow` flags when this contract applies.
147
+
148
+ The live `cloud` entry is a raymarched volumetric deck, not painted sources
149
+ placed by a composition. The
150
+ painted pipeline (`createCloudSourceDocument`, `createCloudCompositionDocument`,
151
+ `createCloudField`, `createCloudShaderSettings`) was replaced outright and no
152
+ longer exists. Parameters are six groups on a `toonlab/sky-params` document, and
153
+ the whole sky is one system:
154
+
155
+ ```js
156
+ const sky = await SkySystem.create({ renderer, scene, camera, quality: 'high' });
157
+ await sky.applyPreset({
158
+ cloud: {
159
+ shape: { altitude: 1400, coverage: 0.55, thickness: 2800 },
160
+ lighting: { powderStrength: 0.7, scatteringAlbedo: 0.82 },
161
+ wind: { heading: 135, speed: 8 },
162
+ },
163
+ });
164
+ sky.update(delta); // once per frame, before the scene pass
165
+ ```
166
+
167
+ `applyPreset` fully replaces sky state: anything the object omits falls back to
168
+ the schema default rather than to what is on screen. `sky.toParams()` is its
169
+ inverse and round-trips. This is a focused sky/cloud authoring and runtime
170
+ contract; final scene composition and art direction remain host
171
+ responsibilities.
172
+
173
+ Use the package README and exported functions/settings as the runtime source
174
+ of truth. Labs, internal comparison fixtures, local asset paths, and repository
175
+ documentation outside `agents/references/` are not installed public APIs.
@@ -0,0 +1,71 @@
1
+ # Style Bundles and Shader Routing
2
+
3
+ A style bundle selects coordinated visual treatments and supported system
4
+ behavior. It never selects model identity, species, placements, current
5
+ weather, or current time.
6
+
7
+ Use `CALL_ME_SENSEI_STYLE_BUNDLE` as the first-party anime-game reference.
8
+ Use `auditStyleBundleApplication()` before `applyStyleBundle()`. Production
9
+ targets need a stable `id` and an explicit `domain`. Supported domains use
10
+ package adapters automatically; custom renderers need an explicit adapter. Do
11
+ not classify from object names, texture colors, or scene parenting.
12
+
13
+ | Target domain | Bundle slot |
14
+ | --- | --- |
15
+ | `character`, `equipment`, `prop` | `toon` |
16
+ | `manufactured.environment` | `environment` |
17
+ | `vegetation.tree` | `treeShader` |
18
+ | `vegetation.grass` | `grassShader` + `grass` field response |
19
+ | `vegetation.flower` | `flowerShader` |
20
+ | `terrain.ground` | `groundShader` |
21
+ | `natural.rock` | `rock` |
22
+ | `natural.debris` | `debris` |
23
+ | `water` | `water` |
24
+ | `sky` | `sky` |
25
+ | `cloud` | `cloud` |
26
+ | `lighting` | `lighting` |
27
+ | `post` | `post` |
28
+
29
+ Prefer `createSceneStyleRuntime({ renderer, scene, sky, water })` for a complete
30
+ bundle application. It owns one stable lighting rig and automatically enables
31
+ the environment ground-field pass when the grass slot requests ground-color
32
+ adoption. Call `runtime.update(delta, camera)` before the scene render. Never
33
+ recreate those passes in each playground or scene.
34
+
35
+ Strict application preflights every target before the first mutation. Missing
36
+ slots, unknown domains, mixed material roles without an ID mask, unsupported
37
+ renderers, and undocumented custom adapters are failures. Advisory mode may
38
+ apply valid targets, but it must return every skipped target and gap.
39
+
40
+ ## Mandatory authored-asset labeling
41
+
42
+ Agents that model, generate, convert, or import a 3D object must finish its
43
+ style metadata before handoff. Every renderable root needs a stable target ID
44
+ and explicit domain. Every material slot beneath it needs a stable material ID
45
+ and at least one semantic role in the versioned `materials` contract. A root
46
+ domain label does not substitute for per-material classification.
47
+
48
+ If one atlas crosses incompatible physical or shader roles, split the draw
49
+ materials or author a material-ID mask. Strict mode must fail incomplete
50
+ material coverage. Advisory mode may continue only while recording the gap;
51
+ the agent must not call the asset style-bundle-ready.
52
+
53
+ The minimum public-API shape is:
54
+
55
+ ```js
56
+ material.userData.toonlabMaterialId = 'BenchWood';
57
+ labelStyleTarget(root, createStyleTargetLabel('manufactured.surface', {
58
+ targetId: 'scene/bench-1',
59
+ materials: createStyleMaterialContract('manufactured.surface', {
60
+ assignments: { BenchWood: { roles: ['primaryMass'] } },
61
+ }),
62
+ }));
63
+ ```
64
+
65
+ Repeat the assignment for every distinct render material. The IDs belong in
66
+ the asset/export manifest as well as the runtime object so reimport does not
67
+ silently erase routing.
68
+
69
+ Style bundle v2 is visual-only and includes anime art-direction metadata.
70
+ Parsing a v1 document returns migration warnings for old asset selections;
71
+ move those decisions to scene configuration or an asset-sourcing policy.
@@ -0,0 +1,275 @@
1
+ ---
2
+ name: asset-sourcing
3
+ description: Help agents source anime-game-ready models, textures, and presets through policy-aware ToonLab MCP discovery, provenance, supported shaders, and explicit custom-gap reporting.
4
+ ---
5
+
6
+ # Asset Sourcing
7
+
8
+ Use this skill when a developer needs an asset — a model, texture, HDRI,
9
+ prop, tree, rock, building, material, or a saved look/behavior preset.
10
+
11
+ Read first:
12
+ - `agents/references/anime-art-direction.md`
13
+ - `agents/references/style-bundles.md`
14
+ - `agents/references/mcp-asset-discovery.md`
15
+ - `agents/references/asset-sourcing-policy.md`
16
+ - `agents/references/custom-gap-report.md`
17
+
18
+ **The boundary:** ToonLab targets anime-style games and environments. The npm package is the worker for approved procedural
19
+ families, style presets, and texture baking. The gallery is optional. Route
20
+ through MCP only where it adds something beyond the package: external
21
+ discovery, curation/moderation policy, download provenance, shared workspace
22
+ state, or explicitly requested managed generation. Do not use MCP tools as a
23
+ proxy for package functions. ToonLab Pro may author and review stylized base
24
+ sets; their approved documents, recipes, labels, seeds, and provenance must
25
+ remain portable so OSS runtimes can use them without a database.
26
+
27
+ ## Select the connected MCP surface
28
+
29
+ Feature-detect tools before making a call. ToonLab OSS local MCP is identified
30
+ by `get_workspace_info`, `search_cc0_assets`, `get_cc0_asset`, and
31
+ `import_cc0_asset`. ToonLab Pro remote MCP is identified by
32
+ `get_runtime_guide`, `search_public_gallery`, and `get_toonlab_asset`. Either
33
+ surface is sufficient and both may be connected. Shared names such as
34
+ `search_assets`, `get_asset`, `list_my_creations`,
35
+ `validate_asset_candidate`, and `record_asset_gap` have surface-specific
36
+ schemas; qualify them by MCP server when both are present and use the schema
37
+ advertised by that server. Read `agents/references/mcp-asset-discovery.md` for
38
+ the exact OSS and Pro sequences.
39
+
40
+ ## Decision order
41
+
42
+ Choose the first route that is both available and accepted for the requested
43
+ scene-kit role.
44
+
45
+ 1. **Load policy and ask when missing.** Call the available server's
46
+ `get_anime_game_profile`, load
47
+ the selected bundle, and locate the project's sourcing policy. If no policy
48
+ exists, ask the developer; until answered, use library-first advisory mode
49
+ and report the unresolved decision. Validate every candidate before use.
50
+ 2. **Reuse what exists.** In OSS, earlier imports, saved presets, and exports
51
+ live in `.toonlab/`; call local `list_my_creations` and `search_assets` with
52
+ `source: 'workspace'`, `'workspace-storage'`, `'library'`, or `'builtin'`.
53
+ If those do not close the role, use local `search_assets` with
54
+ `source: 'official'` for the complete released Gallery catalog and follow
55
+ `nextOffset` until null.
56
+ In Pro, call cloud `list_my_creations`, then `search_public_gallery`; use
57
+ `source: 'toonlab'` plus the appropriate catalog for first-party assets and
58
+ follow `nextOffset`. For rocks on either surface, shortlist from positive
59
+ `dimensionsMeters` width/height/depth plus family/profile, scale class,
60
+ category/subcategory, geology, and surface; never render a GLB merely to
61
+ discover its size. Call `get_asset` (OSS) or `get_toonlab_asset` (Pro) only
62
+ for finalists that need full recipe, lineage, and file metadata. When both are connected,
63
+ search the local project/library before the Pro cloud library and gallery.
64
+ Never regenerate or re-download something already available.
65
+ 3. **Use an approved procedural family only when policy permits it.** Discover
66
+ approved families through MCP, then use their focused runtime such as
67
+ `@call-me-sensei/toonlab/vegetation`, `rockgen`, `debrisgen`, or `texgen`.
68
+ This is the direct route only when the requested family has an approved,
69
+ versioned stylized base set and passes the policy/review gate described in
70
+ `agents/references/asset-sourcing-policy.md`. Preserve base-set version, generator version,
71
+ recipe, seed, domain/material labels, and golden-seed verification. Do not
72
+ treat every legacy catalog entry as approved merely because it can spawn.
73
+ 4. **Search curated open sources when policy permits and generation is not
74
+ approved or is not the best fit.** In OSS, use
75
+ `search_cc0_assets({ query, kind, provider })`, `get_cc0_asset`, then
76
+ `import_cc0_asset` to download selected files into `.toonlab/imports/` with
77
+ a provenance manifest. In Pro, use Pro `search_assets` and `get_asset`;
78
+ Pro does not expose `search_cc0_assets` or `import_cc0_asset`. This route
79
+ stays on MCP because it carries the network fetch, the owner curation
80
+ policy, and licensing provenance —
81
+ selection is by name/tags only, so always preview imports in-scene before
82
+ committing to them. Prefer CC0. Accept CC-BY only through a source path that
83
+ exposes the exact creator, asset URL, license/version/URL, provider credit,
84
+ and modification notice; do not assume a tool named `search_cc0_assets`
85
+ returns CC-BY.
86
+ 5. **Use managed generation for a named remaining gap through the connected surface.**
87
+ First record why accepted
88
+ assets, approved procedural families, and curated open candidates were
89
+ inadequate. Check generation capabilities and rights for the input image.
90
+ Treat output as a candidate that still needs topology, UV, texture, scale,
91
+ collision, LOD, semantic-label, and Call Me Sensei review. OSS keeps
92
+ `generate_asset` for deterministic recipes and exposes provider-backed work
93
+ separately as `generate_ai_asset` when local keys are configured. Pro uses
94
+ credit-spending `generate_asset` with hosted workers. Both surfaces expose
95
+ generation capability, polling, and save tools; follow the advertised schema.
96
+ 6. **Author stable visual profiles in code.** Post profiles can be generated
97
+ deterministically through `@call-me-sensei/toonlab/post`; other stable
98
+ shader profiles resolve through the selected style bundle. Lighting, VFX,
99
+ camera, and game-feel generation are host-owned or pre-beta in the public package and
100
+ are not advertised by the packaged MCP server.
101
+
102
+ Persist anything worth keeping with `save_creation` (or write the JSON into
103
+ the repo); `.toonlab/creations/` is the shared surface labs and later
104
+ sessions read. Every reusable saved object must include up to ten concise
105
+ lowercase slug tags. Cover its semantic role, material or asset family,
106
+ location or biome when relevant, project, and lifecycle state; never save an
107
+ object with only a filename or generic `asset` tag. Follow `nextOffset` until
108
+ null when checking for an existing saved object before creating a duplicate.
109
+
110
+ For every completed asset request, update or report the scene family, kit
111
+ role, selected route, license/provenance, rendering domain, material roles,
112
+ support level, collision/LOD status, Call Me Sensei verification, and coverage
113
+ gap that was closed. State explicitly when gallery search was skipped because
114
+ an approved generator owned the role.
115
+
116
+ ## Manufactured environment material contract
117
+
118
+ For generated or imported props, vehicles, buildings, furniture, and interior
119
+ assets, classify each material once with glTF extras / Three.js
120
+ `userData.urbanMaterial`. Author the versioned object with these axes:
121
+
122
+ - `baseMaterial`: `metal`, `mineral`, `wood`, `polymer`, `rubber`, `glass`,
123
+ `ceramic`, `textile`, `leather`, `paper`, `composite`, `fluid`, or
124
+ `genericDielectric`.
125
+ - `finish`: `raw`, `painted`, `varnished`, `clearCoated`, `polished`,
126
+ `brushed`, `glazed`, `anodized`, `mirror`, or `matte`.
127
+ - `renderMode`: `opaque`, `alphaCutout`, `translucent`, `transmissive`, or
128
+ `unlit`.
129
+ - `structuralRole`: `primaryMass`, `secondaryStructure`, `trim`, `fastener`,
130
+ `cavity`, `window`, `graphic`, or `lightEmitter`.
131
+ - `contentFlags`: any of `graphic`, `display`, and `emissive`.
132
+
133
+ Preserve source color and every available PBR map. Classification supplies
134
+ stable meaning and fallback priors; it never replaces albedo, roughness,
135
+ metalness, normal, AO, emissive, clearcoat, transmission, opacity, or UV data.
136
+
137
+ - Put classification on the material when a mesh has multiple materials. A
138
+ node classification is a default for every material below it.
139
+ - Split materials or provide a material-ID mask when one atlas spans
140
+ incompatible classes such as masonry, wood, metal, and window glass.
141
+ - Keep wear, dirt, rust, chipped coating, wetness, burn, snow, and similar
142
+ conditions in continuous masks rather than inventing material classes.
143
+ - Never encode pastel amount, palette overrides, cel thresholds, reflection
144
+ strength, or time-of-day values in the model.
145
+ - Never reclassify a model to suit a shader. Custom shaders consume the stable
146
+ axes and define global settings plus sparse per-axis profiles.
147
+ - Accept the old `urbanSurface` IDs only through the documented compatibility
148
+ map; do not author `lid`, `roof`, or `trim` as physical material classes.
149
+ - Reload the exported GLB and inspect classifications, fallback warnings, and
150
+ mixed-atlas boundaries before judging only a beauty render.
151
+ - Run `analyzeManufacturedAsset(root)` as the code-first audit. Names, PBR
152
+ slots, alpha/transmission, emission, and metalness can cover clean assets;
153
+ never guess material identity from RGB alone. Use visual analysis only as
154
+ offline assistance for mixed/anonymous atlases and approve its proposal into
155
+ a material split, ID mask, or explicit assignment.
156
+ - Use `proposeManufacturedStyleTargetLabel(root)` to turn safe classifications
157
+ into stable material IDs and a versioned `manufactured.surface` label.
158
+ Generic fallback, low-confidence, and shared-role-conflict issues block the
159
+ proposal. Supply reviewed `materialOverrides`, then call
160
+ `applyManufacturedStyleTargetLabelProposal(root, proposal)`. Report automatic
161
+ and assisted results separately; an explicit repair is not an automatic hit.
162
+ - For FBX, OBJ/MTL, USDZ, VRM, PMX/PMD, third-party GLB, and other sources
163
+ that cannot safely carry custom properties, write a versioned
164
+ `*.toonlab-materials.json` sidecar and apply it after loading. The runtime
165
+ classification layer never edits geometry, UVs, or texture pixels.
166
+ - Review and temporarily switch tags in the Manufactured Material Lab; export
167
+ its sidecar to make the result durable.
168
+
169
+ ## Sample and compare (vision-capable agents)
170
+
171
+ For surfaces that dominate the look (terrain, floors, walls, hero props),
172
+ don't take the first hit — produce 2–3 candidates across routes and look at
173
+ them before choosing:
174
+
175
+ - **Generated**: texgen is part of the npm package, not an MCP tool — bake
176
+ candidates headlessly with a short node script:
177
+ `evaluateTextureMaps(createTextureSettings(findTexturePreset(id).settings),
178
+ { size: 256 })` (async, ~50 ms) returns raw RGBA maps; encode the albedo
179
+ to PNG and write it next to the imports.
180
+ - **Discovered in OSS**: when the connected surface exposes
181
+ `import_cc0_asset`, it leaves real image files in `.toonlab/imports/`.
182
+ ToonLab Pro instead returns approved immutable download URLs and provenance;
183
+ do not prescribe the OSS import tool on that surface.
184
+
185
+ View the swatches side by side, judge fit against the game's stylized look,
186
+ then confirm the winner in-scene (toon shading changes how a texture reads).
187
+ If you cannot view images, fall back to the routing heuristics and rely on
188
+ the in-scene verify step. This costs extra tokens — reserve it for hero
189
+ surfaces and take the first good match for incidental materials.
190
+
191
+ ## Which source for which asset
192
+
193
+ Stable routing (the source list itself grows — treat the registry, not this
194
+ table, as the source of truth):
195
+
196
+ - Seamless PBR material sets (brick, wood, ground …) → ambientCG.
197
+ - Photoscanned props, HDRIs, high-end texture sets → Poly Haven.
198
+ - Stylized/toon-ready models, vegetation, buildings → the built-in
199
+ procedural catalog first only for families that passed the base-set
200
+ reliability gate; otherwise compare curated external candidates.
201
+ - Stylized *seamless textures* → `@call-me-sensei/toonlab/texgen` in code
202
+ (60+ presets); the catalog has no texture entries, so this route is a
203
+ package import, not an MCP call.
204
+ - Audio, fonts, adjacent media → not automated; link the developer to the
205
+ source and import the downloaded file.
206
+
207
+ Sources carry their own metadata (`kinds`, `goodFor`, `qualityTier`,
208
+ `enabled`) in the registry (`src/assetlib/sources.js`, surfaced through the
209
+ asset tools). New sources appear over time; query rather than assume.
210
+
211
+ ## Loading first-party catalog models
212
+
213
+ Some first-party catalog GLBs declare `KHR_texture_basisu` in
214
+ **`extensionsRequired`**, so a KTX2 transcoder is mandatory for those assets.
215
+ Supply `decoderBasePath` and `renderer`, and stage the Basis and Draco decoder
216
+ files where that path resolves.
217
+
218
+ **Share one transcoder set across the whole catalog.** A transcoder is expensive
219
+ and is not automatically pooled. Use the public loader contract:
220
+
221
+ ```js
222
+ import {
223
+ createModelAssetTranscoders,
224
+ loadModelAsset,
225
+ } from '@call-me-sensei/toonlab/loaders';
226
+
227
+ const transcoders = createModelAssetTranscoders({ decoderBasePath, renderer });
228
+ const asset = await loadModelAsset(url, { transcoders });
229
+ // Reuse transcoders for every model, then dispose once after loading finishes.
230
+ transcoders.dispose();
231
+ ```
232
+
233
+ Constructing decoder resources per asset can spin up a WASM instance per asset,
234
+ and a catalog-scale scene can fail with
235
+
236
+ ```
237
+ RuntimeError: Aborted(RangeError: WebAssembly.instantiate():
238
+ Out of memory: Cannot allocate Wasm memory for new instance)
239
+ ```
240
+
241
+ long before it finishes loading. Cache each parsed asset/geometry by immutable
242
+ asset URL as well, so a repeated id is one decode and upload rather than two.
243
+
244
+ Note also that a catalog rock's `material-config.json` may name textures with
245
+ paths that do not resolve from the delivery origin. Do not block on them: the
246
+ rock shader's own projection is the safe fallback. Call Me Sensei normally
247
+ blends clean UV-authored albedo/normal/ORM detail and reports retained texture
248
+ lineage; use `assetIntegration.sourceAlbedoMode: 'replace'` only when an import
249
+ audit proves those source maps unusable.
250
+
251
+ ## Licensing and curation rules
252
+
253
+ - Enabled sources are owner-curated to the project quality bar; disabled
254
+ ones are pending review. Do not bypass the tools with ad-hoc downloads
255
+ from other sites — moderation and provenance exist for a reason.
256
+ - CC0 clears copyright, not trademarks, logos, or personality rights
257
+ visible in scans. If an asset shows a brand or a person, flag it instead
258
+ of importing.
259
+ - Every imported ref keeps `source` + attribution provenance. Preserve it;
260
+ some sources (e.g. Poly Haven's API terms) want credit even though the
261
+ assets are CC0. Surface attribution in the app's credits.
262
+ - CC-BY additionally requires appropriate creator credit, the license link,
263
+ the source link when supplied, and an indication of modifications. Preserve
264
+ those fields through conversions, bundles, scenes, and exports.
265
+
266
+ ## Verify
267
+
268
+ - For every selected first-party rock, record the catalog ID and original
269
+ `dimensionsMeters`; after authored scaling, record the resulting scene size.
270
+ Reject missing, zero, negative, or axis-ambiguous dimensions before download.
271
+ - Preview imported GLBs/textures in the consumer app's actual scene and
272
+ toon/environment shading — reference-realistic assets can clash with a
273
+ stylized look.
274
+ - For procedural assets, pin the `seed` and confirm the app regenerates the
275
+ identical asset.
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: environment
3
+ description: Help developers use ToonLab environment shading, lighting rigs, ambient probes, reflections, fog, cloud shadows, or vertex AO in an app.
4
+ ---
5
+
6
+ # Environment
7
+
8
+ Use this skill when a developer wants stylized scene materials, material-role
9
+ classification, sun/lamp rigs, time-of-day, ambient probes, planar reflections,
10
+ BVH vertex AO, fog, cloud shadows, or environment presets.
11
+
12
+ Public imports:
13
+ - `@call-me-sensei/toonlab/environment`
14
+
15
+ Read first:
16
+ - `agents/references/anime-art-direction.md`
17
+ - `agents/references/style-bundles.md`
18
+ - `agents/references/runtime-entry-points.md`
19
+ - the exported `environment` material-role schema and guidance below.
20
+
21
+ Developer guidance:
22
+ - Apply environment materials to app-owned meshes and scenes.
23
+ - Keep asset loading, texture hosting, renderer setup, and scene routing in the
24
+ host app.
25
+ - Use documented settings and presets for material roles, lighting, fog, cloud
26
+ shadows, probes, and reflections.
27
+ - Consume the versioned `urbanMaterial` classification: base material,
28
+ finish, render mode, structural role, and content flags. Put style choices
29
+ in global shader settings and sparse per-axis profiles; do not relabel assets
30
+ when the shader changes. Accept legacy `urbanSurface` only through the
31
+ documented migration map.
32
+ - Use `analyzeManufacturedAsset` for the automatic code-first import audit.
33
+ Apply durable corrections with `applyManufacturedMaterialManifest`; do not
34
+ infer semantic material from base-color pixels alone. A visual model is an
35
+ optional offline assistant for mixed atlases, never a runtime dependency.
36
+ - For an imported hero vehicle or ship, preserve the complete pre-conversion
37
+ audit and the `applyEnvironmentShader()` classification report. Report every
38
+ generic fallback, low-confidence assignment, transparent surface, and mixed
39
+ atlas; do not call the result contract-ready until a reviewed sidecar or
40
+ embedded material contract removes those warnings.
41
+ - Treat global environment settings as the catch-all, then resolve sparse
42
+ `materialLook` profiles by base material, finish, render mode, structural
43
+ role, content flags, object class, and stable asset id. Do not implement a
44
+ shader fork per base material; only incompatible render modes need distinct
45
+ shader families.
46
+ - Use the same post-load classification for GLB, FBX, OBJ/MTL, USDZ, VRM,
47
+ PMX/PMD, and procedural `Object3D`s. Prefer glTF extras for owned GLBs and a
48
+ `*.toonlab-materials.json` sidecar for formats that do not preserve custom
49
+ metadata reliably.
50
+ - Treat BVH vertex AO as optional; apps that do not use it should not need
51
+ `three-mesh-bvh`.
52
+ - Do not rely on ToonLab sample app URLs, sample asset paths, or generated local
53
+ manifests.
54
+
55
+ Verify:
56
+ - Run the consumer app's normal build and visual smoke check.
57
+ - For a vessel, inspect above-water, shoreline, and reflected/refracted views;
58
+ verify sails/windows keep their intended render mode and the hull crosses the
59
+ waterline without being excluded from required water scene passes.