@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,74 @@
1
+ ---
2
+ name: scene-style-application
3
+ description: Inspect, plan, apply, and verify ToonLab style bundles on labeled scenes without copying Lab or showcase code.
4
+ ---
5
+
6
+ # Scene style application
7
+
8
+ Ask the developer whether application should be **strict** or **advisory** before
9
+ changing the scene. Strict mode stops on unlabeled, invalid, or unsupported
10
+ targets. Advisory mode applies valid labeled targets and reports every gap.
11
+
12
+ Use the package contract in this order:
13
+
14
+ 1. Label host-owned objects with `createStyleTargetLabel()` and
15
+ `labelStyleTarget()` from `@call-me-sensei/toonlab/styles`.
16
+ For every newly modeled, generated, or imported renderable, assign a stable
17
+ material ID and at least one valid semantic material role to **every material
18
+ slot** in the label's versioned `materials` contract. A root domain label by
19
+ itself is incomplete for a multi-material object. Split incompatible surface
20
+ regions or provide an explicit material-ID mask; never guess a production
21
+ role from names or RGB values.
22
+ For an imported manufactured asset, call
23
+ `proposeManufacturedStyleTargetLabel()` first. Review every generic,
24
+ conflicting, or low-confidence entry, supply explicit `materialOverrides`,
25
+ then call `applyManufacturedStyleTargetLabelProposal()`. Never lower the
26
+ confidence threshold merely to make strict application pass.
27
+ 2. Run `toonlab inspect`, `toonlab audit`, then `toonlab plan` against a portable
28
+ `toonlab/scene-style-manifest` document. The OSS MCP tools with the same names
29
+ are equivalent when MCP is available.
30
+ 3. Show the plan, including unsupported domains and custom-material exemptions.
31
+ 4. Run `toonlab apply` only after the strict/advisory choice is known.
32
+ 5. Run `toonlab verify`, the consumer build, and visual checks for every camera,
33
+ renderer, quality profile, and scenario affected.
34
+
35
+ When the scene combines ground-bound content with shoreline water, use one
36
+ `createSceneSurfaceRuntime()` from `@call-me-sensei/toonlab/runtime` before
37
+ creating grass, water, or derived object Y positions. Its `createGrassField()`,
38
+ `createWaterSurface()`, and `place()` methods are the default integration path.
39
+ After rendering the shared shadow pass, its strict readiness audit must pass;
40
+ do not hand off a page that merely built or set shadow flags.
41
+
42
+ For a package-generated `StylizedTree`, preserve an authored `trunkMap`; when
43
+ it is absent, let Call Me Sensei select `call-me-sensei-bark-v1` or choose an
44
+ explicit registered ID from `getTreeSurfaceProfileOptions()`. Never leave bark
45
+ flat because no one chose a texture. Verify every trunk is both a shared-pass
46
+ caster and receiver. `trunkSurfaceProfile: 'none'` is a deliberate opt-out,
47
+ not a fallback.
48
+
49
+ Do not hand off an authored 3D object while any render material is absent from
50
+ the contract. In strict mode, missing material IDs/roles or a mixed atlas
51
+ without a split/mask is a blocking failure; fix the asset metadata before
52
+ applying the bundle. In advisory mode, report the same gap explicitly and do
53
+ not describe the object as style-bundle-ready.
54
+
55
+ `applyStyleBundle({ mode: 'strict' })` reconciles the declared material
56
+ contract against the live material slots before mutation. Keep the broader
57
+ scene audit as the reporting gate, but do not bypass a direct strict rejection
58
+ by calling a lower-level shader adapter.
59
+
60
+ Never import from a ToonLab `labs/` directory, copy a showcase scene, or depend
61
+ on a retained reference-scene implementation. Labs are authoring/test clients;
62
+ public package exports are the runtime authority. If a needed behavior is not a
63
+ public export, record the package gap rather than copying private code.
64
+
65
+ The host owns authored XZ layout, terrain shape/sampler, gameplay, dynamic
66
+ physics, navigation, and content identity. The shared surface runtime owns
67
+ derived ground heights and terrain/water coordination. The scene style runtime
68
+ owns conservative static collision for labeled manufactured, rock, prop, and
69
+ tree targets unless the label declares another policy. Call
70
+ `styleRuntime.collision.assertReady()` before handoff and report its per-target
71
+ plan. Do not add scene-local tree/rock/bench blocker lists. Use explicit
72
+ `none`, `blockers`, `convex`, or `trimesh` metadata when bounds are wrong; use
73
+ `createRapierCollisionAdapter()` for an existing Rapier world. A style bundle
74
+ owns visual treatment and package-managed systems.
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: style-presets
3
+ description: Explicitly select and record the intended ToonLab style or preset at every style-aware call site, distinguish neutral-default factories from Call Me Sensei-default factories, and audit overrides before reporting a custom integration note. Use before authoring environment, vegetation, grass, water, rock, ground, sky, cloud, or post settings, and whenever a subsystem looks unexpectedly unstyled.
4
+ ---
5
+
6
+ # Name the preset
7
+
8
+ This skill makes an individual call site explicit; it does not imply that every
9
+ listed subsystem is part of a live Lab. Sky and Cloud focused authoring is live.
10
+ Weather, Climate, and automatic full-world composition remain lower-level APIs
11
+ for users who want to assemble those systems in their own application.
12
+
13
+ Style-aware ToonLab factories take a `preset`, a `style`, or both. Some
14
+ factories intentionally resolve a neutral/default treatment when the selector
15
+ is omitted; Rock and Ground already default to Call Me Sensei, while
16
+ Cloud has no named style at all since the volumetric rebuild retired them.
17
+ Always pass the intended selector anyway so the call site and capture manifest
18
+ are auditable. Never claim that every omitted selector falls back to neutral.
19
+
20
+ Omitting a selector on the neutral-default factories is one of the most
21
+ expensive mistakes a ToonLab agent can make. In one capability test it hit
22
+ three independent subsystems, each investigated as a custom integration note when the
23
+ actual cause was a missing selector or an overridden preset field.
24
+
25
+ ## The rule
26
+
27
+ ```js
28
+ // WRONG for a Call Me Sensei scene — resolves the vegetation baseline.
29
+ createVegetationShaderScopeSettings('tree', { foliage: { ... } });
30
+
31
+ // RIGHT
32
+ createVegetationShaderScopeSettings('tree', {
33
+ preset: 'call_me_sensei',
34
+ foliage: { ... },
35
+ });
36
+ ```
37
+
38
+ Do this for every domain, on the **first** call, not as a later refinement.
39
+
40
+ ## Where it bites
41
+
42
+ | Factory | Name this | Actual default behavior |
43
+ |---|---|---|
44
+ | `applyEnvironmentShader` | `preset: 'call_me_sensei'`, plus the intended `scenario` | The adapter accepts the selectors directly and composes preset, `settings`, then explicit overrides. `resolveEnvironmentPreset` remains available when plain settings data is needed elsewhere. |
45
+ | `createVegetationShaderScopeSettings` | `preset: 'call_me_sensei'` | Omitting it resolves the neutral vegetation baseline. |
46
+ | `createGrassSettings` / grass fields | `preset: 'call_me_sensei_clump'` for the first-party meadow, or `'anime_clump'` for the short narrow tuft recipe | Omitting it resolves neutral grass settings. These presets differ in geometry/coverage, not only colour. `createCallMeSenseiGrassField` defaults to the meadow and honors an explicit alternate preset. |
47
+ | `createWaterSettings` | `preset: <water body>` **and** `style: 'call_me_sensei'` | Omitting selectors resolves Lake with the default rendition. The Call Me Sensei style owns `colorTone: 'anime'`; any non-`classic` tone intentionally owns its palette/fade/reflection block, while `classic` leaves those per-key values authorable. |
48
+ | `createRockShaderSettings` / `applyRockShader` | `preset: 'call_me_sensei'` | Already defaults to Call Me Sensei. Textures are optional: the fallback is first-party generated 256 px data and the application report identifies its source. |
49
+ | `createGroundShaderSettings` | `preset: 'call_me_sensei'` | Already defaults to Call Me Sensei. |
50
+ | `createSkySettings` | `style: 'call_me_sensei'`, plus the intended `scenario` | Omitting style resolves the default sky rendition. |
51
+ | `createCloudParams` / `SkySystem.applyPreset` | no preset id | The volumetric rebuild retired the named cloud styles; the eight replacement looks are whole-sky presets. Omitting parameters resolves the published schema defaults. |
52
+ | `createPostProcessingSettings` | `preset: 'call_me_sensei'` | Omitting it resolves `off`. |
53
+
54
+ ## Overriding a preset field is a deliberate act
55
+
56
+ Changing one key of a first-party preset is indistinguishable, at the call site,
57
+ from configuring an unstyled system. Real examples, all of which produced a bug
58
+ report against ToonLab before the cause was found:
59
+
60
+ - `groundAdoptStrength: 0.04` over the shipped meadow's `1` — grass then never adopted
61
+ the ground colour, and the *mechanism* was reported as broken.
62
+ - `colorTone: 'classic'` over the studio `'anime'` — the lagoon deliberately
63
+ left the studio tone, after which its palette/fade/reflection values needed
64
+ explicit authorship.
65
+ - A bare `createVegetationShaderScopeSettings()` plus ~25 hand-authored fields —
66
+ three revisions of look development on the wrong base.
67
+
68
+ So: **before overriding a preset field, state why the shipped value is wrong for
69
+ this scene**, in a comment, naming the scene fact the shared IP treatment cannot
70
+ know — plane extent, bed depth, camera distance, a specific art-direction target
71
+ with a measured value. If you cannot name one, do not override it.
72
+
73
+ ## When a subsystem looks wrong
74
+
75
+ Before concluding that ToonLab lacks a capability, check, in this order:
76
+
77
+ 1. **Was a preset named?** Not "is a preset applied somewhere" — was one passed
78
+ to *this* factory, at *this* call site.
79
+ 2. **Was a preset field overridden?** Diff your options against the shipped
80
+ preset's settings in the package source.
81
+ 3. **Does the package or repository lab do it differently?** Inspect the
82
+ installed preset registry/source first. If working in a ToonLab repository
83
+ checkout, open the matching lab and compare the public API call and values it
84
+ boots. Labs are not present in the npm tarball and are never runtime imports.
85
+ 4. **Only then** record a custom integration note.
86
+
87
+ Steps 1–3 take minutes. Skipping them cost, in one run, several days of agent
88
+ time and produced register entries claiming gaps that did not exist.
89
+
90
+ ## Introspection is limited, so be explicit
91
+
92
+ Not every resolved settings object records which preset produced it. Water and
93
+ Rock retain selector identity, while scoped vegetation, Grass, Ground, and
94
+ Cloud settings are normalized value objects. A few options are
95
+ **compile flags** rather than settings and never appear on the resolved object
96
+ at all — `groundField` on grass is one, so `'groundField' in settings` reports
97
+ `false` in a fully working scene.
98
+
99
+ Therefore: log the preset id you passed, at construction, next to the subsystem
100
+ name. It is the only durable record, and it makes a wrong base obvious in the
101
+ console instead of three revisions later in a render.
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: toon-shading
3
+ description: Help developers use ToonLab character toon shading, toon settings, presets, material roles, outlines, shadows, highlights, fur, or stickers.
4
+ ---
5
+
6
+ # Toon Shading
7
+
8
+ Use this skill when a developer wants ToonLab character toon materials, toon
9
+ settings, preset documents, material-role handling, outlines, hair highlights,
10
+ rim light, shadows, stickers, glitter, fur, or debug views in their app.
11
+
12
+ Public imports:
13
+ - `@call-me-sensei/toonlab/toon`
14
+ - `@call-me-sensei/toonlab/toon-settings`
15
+
16
+ Read first:
17
+ - `agents/references/anime-art-direction.md`
18
+ - `agents/references/style-bundles.md`
19
+ - `agents/references/runtime-entry-points.md`
20
+
21
+ Developer guidance:
22
+ - Apply toon shading to app-owned Three.js character roots and meshes.
23
+ - The host app owns character loading, animation, input, camera, persistence,
24
+ and asset URLs.
25
+ - The optional CC0 qualification mannequin is not bundled in npm. Load the
26
+ immutable public-R2 URL and provenance from `TOONLAB_MANNEQUIN_ASSET` in
27
+ `@call-me-sensei/toonlab/character`, or use the host project's own mannequin.
28
+ Never substitute a repository `public/characters/mannequin.glb` path when
29
+ testing an installed package. After downloading, verify its byte count,
30
+ SHA-256, and 46 clips before applying the toon shader.
31
+ - Use settings and preset documents for portable looks instead of lab HUD
32
+ state.
33
+ - Use ToonLab's TSL/NodeMaterial path; do not advise raw GLSL or
34
+ `ShaderMaterial` forks for ToonLab toon features.
35
+ - Do not rely on `assets-local/` or lab-only model discovery.
36
+
37
+ Verify:
38
+ - Run the consumer app's normal build and inspect the character under at least
39
+ one lit and one shadowed view.
40
+ - Record `applyToonShader()`'s converted mesh count, material-role summary,
41
+ shader mode, and selected preset. A loaded GLB is not proof that cel shading
42
+ was applied.
43
+ - Toggle the relevant setting or preset to confirm the app is not hard-coded to
44
+ lab defaults.
@@ -0,0 +1,167 @@
1
+ ---
2
+ name: vegetation-sky
3
+ description: Help users apply ToonLab grass, flowers, trees, Tree/Grass/Flower shader profiles, and the live Sky/Cloud authoring surfaces to an existing scene.
4
+ ---
5
+
6
+ # Vegetation, Sky, and Cloud
7
+
8
+ Use these focused systems on an existing scene with host-supplied placements,
9
+ terrain, lighting coordination, and current conditions. The Sky and Cloud Labs
10
+ are live authoring tools; they do not replace whole-scene composition.
11
+
12
+ Public imports:
13
+ - `@call-me-sensei/toonlab/vegetation`
14
+ - `@call-me-sensei/toonlab/vegetation-shaders`
15
+ - `@call-me-sensei/toonlab/grass-palettes`
16
+ - `@call-me-sensei/toonlab/sky`
17
+ - `@call-me-sensei/toonlab/cloud`
18
+ - `@call-me-sensei/toonlab/grass`
19
+
20
+ Read first:
21
+ - `agents/references/anime-art-direction.md`
22
+ - `agents/references/style-bundles.md`
23
+ - `agents/references/runtime-entry-points.md`
24
+
25
+ User guidance:
26
+ - Add vegetation and sky objects to app-owned scenes, terrain, and render loops.
27
+ - Produce `placements` with the scatter helpers rather than by hand. Across the
28
+ ground heightfield use `scatterInRect`, `scatterGrassAround` or
29
+ `scatterForest`. For a surface that is **not single-valued in y** — a cliff
30
+ cap, a ledge, a shelf, a rock platform, anything with terrain both above and
31
+ below it — those cannot express the placement at all; use
32
+ `scatterOnSurface({ surfaces, density | count, minSpacing, mask, weightAt,
33
+ normalBlend })`. Surfaces are discs in world space,
34
+ `{ center, radius, normal?, seed? }`, which is the shape a rock or cliff
35
+ module already publishes for its caps. Spacing is measured in 3D so stacked
36
+ caps do not starve each other, each surface has its own deterministic stream
37
+ so adding one does not reshuffle the rest, and the returned placements carry
38
+ `normal`, `forward` and `yaw` so an aligned field does not have to derive
39
+ orientation itself. The `(x, z)` mask factories and `combineMasks` compose
40
+ with it unchanged.
41
+ - Pair it with `createCapEdgeWeight({ rimBias: 0.05, falloff, break })`. A cap that
42
+ stays dense all the way to its rim reads as a flat green disc stuck onto the
43
+ rock; real soil caps thin toward a broken, slightly overhanging edge. Keep
44
+ `rimBias` near zero for soil: high values push coverage into an outer annulus
45
+ and work against the edge falloff. Use `falloff` and `break` for the ragged
46
+ transition.
47
+ - Use async `createCallMeSenseiGrassField({ placements, variant })` for
48
+ ToonLab's first-party procedural grass. `primary` is the accepted default;
49
+ `secondary` is the denser alternate. Both generate deterministic LOD0/1/2
50
+ geometry and the material directly from package code. They have no GLB,
51
+ image, or package-owned URL dependency. The returned default is a
52
+ `StylizedGrassClumpField`; use `RetainedGrassClumpField` only when the caller
53
+ deliberately supplies custom geometry or material.
54
+ - Keep the field's package-default spatial frustum culling enabled for outdoor
55
+ scenes. It chunks placements, rejects offscreen chunks/records, and compacts
56
+ visible records into the existing three LOD buffers. Read `cullingStats` for
57
+ visible/culled counts; tune `chunkSize` or `cullPadding` only for a measured
58
+ world-scale need. Never set `frustumCulling: false` as a meadow default.
59
+ - Keep the factory's default `call_me_sensei_clump` preset unless the developer
60
+ explicitly requests another style. It is the accepted meadow preset: 40
61
+ upright overlapping blades per primary clump, full ground-field adoption,
62
+ texture-free watercolor lift, translucent stroke layering, and three LODs
63
+ without an implicit terminal hard cull. Do not replace it with a generic
64
+ single-blade field, a repository asset, or example-local material settings.
65
+ Reject dark or dirty roots, isolated patches, tangled silhouettes,
66
+ bare-ground pinholes at normal density, and straight coverage boundaries.
67
+ Compare both composition and grass-close views against the frozen controlled
68
+ source mode.
69
+ - Preserve ground hue in the Call Me Sensei default. Its neutral
70
+ `groundAdoptTint` may lift exposure uniformly, but `tipHueShift` and
71
+ `tipDesaturation` remain zero: green ground produces only shades of green.
72
+ Hue shifts remain public profile parameters for explicitly authored styles.
73
+ LOD0/1/2 reduce 40/14/6 primary blades and widen retained strokes to keep
74
+ integrated coverage within 2% of LOD0. Reject any camera-distance change
75
+ that makes the terrain appear to change color.
76
+ - Ground-field sampling is a compile option; the source is the shared
77
+ environment ground-field pass. Prefer `createSceneStyleRuntime()` and label
78
+ terrain `terrain.ground` plus grass `vegetation.grass`; the bundle then marks
79
+ writers and owns the pass automatically. For a manual subsystem integration,
80
+ create the pass after all writer meshes exist, call its `update()` every frame before grass, require
81
+ `writerCount > 0` and `ready`, and call `invalidate()` after repainting a
82
+ writer without a transform change.
83
+ - In the public package, use `LEGACY_TREE_PRESETS` and `createLegacyTree()` for the 12
84
+ supported pre-species silhouettes. Use `BranchTree` when the developer wants
85
+ recursive branching, five broadleaf silhouettes, leaf color/texture plus a
86
+ portable lit/shadow/crown palette, independent leaf `coverageScale`, bark
87
+ color/texture, authored trunk bend/twist/taper, roots, portable documents,
88
+ and the shared Tree Shader. `branches.children` counts lateral children;
89
+ the generator also continues the leader so the trunk does not end in a stump.
90
+ `BranchTree` is the focused portable wrapper around `StylizedTree` with
91
+ `skeleton.generator: 'branching'`; choose the normal blob-crown tree when a
92
+ solid anime foliage mass matters more than a visible recursive skeleton.
93
+ Its current crown is tip-driven: `canopyWidth`, `canopyDepth`, and
94
+ `leafPlacement` are fixed by the wrapper, while `coverageScale` remains the
95
+ supported density control. Use `StylizedTree` directly when the crown
96
+ geometry itself must be authored; do not pass ignored BranchTree options.
97
+ Preserve an authored `trunkMap`. If it is absent, the Call Me Sensei preset
98
+ and bundle select `call-me-sensei-bark-v1` automatically. Use
99
+ `getTreeSurfaceProfileOptions()` when the developer asks the agent to choose
100
+ another registered bark surface; never leave the trunk bare by accident,
101
+ and use `trunkSurfaceProfile: 'none'` only for a deliberate flat-color art
102
+ direction. Verify every trunk both casts and receives in shared-pass
103
+ coverage telemetry.
104
+ Do not select, invent, or claim support for a botanical species. The large
105
+ taxonomy/species roster visible in repository labs is experimental and is
106
+ not a package API.
107
+ - Author and route the independent `TREE_SHADER_PROFILE`,
108
+ `GRASS_SHADER_PROFILE`, and `FLOWER_SHADER_PROFILE` through the bundle's
109
+ `treeShader`, `grassShader`, and `flowerShader` slots. They share a renderer
110
+ family and semantic material contract, but serialize and apply independently.
111
+ Keep asset albedo and legacy/BranchTree geometry/material inputs separate from all
112
+ three shader treatments.
113
+ - Grass palettes update base, tip, and shadow tint together; they do not change
114
+ shadow strength, wind, or current weather.
115
+ - Use the public versioned Grass, vegetation-shader, legacy/BranchTree/flower recipe, and Sky
116
+ preset document APIs for portable data; do not copy lab-local validators.
117
+ - Treat Sky as one integrated World System, not a separate Shader Lab. Its
118
+ shader, sun, clouds, stars, and procedural motion form one system preset with
119
+ exactly 46 portable art fields; dome radius and quality are not in it.
120
+ - Cloud is a raymarched volumetric deck. The painted source/composition/card
121
+ pipeline was replaced outright: `createCloudSourceDocument`,
122
+ `createCloudCompositionDocument`, `createCloudField` and
123
+ `createCloudShaderSettings` no longer exist. Build the sky with
124
+ `SkySystem.create({ renderer, scene, camera })` and author it with
125
+ `applyPreset(skyParams)`, whose `cloud` block is the six groups shape,
126
+ lighting, wind, cirrus, haze and fade. `applyPreset` fully replaces sky
127
+ state; omitted fields fall back to the schema default, not to what is on
128
+ screen.
129
+ - `sky.settings` is the authored baseline and `sky.renderedSettings` is the
130
+ current named-layer composition. Give Lighting, Weather, and other scene
131
+ owners unique `setSceneOverrideLayer` ids and clear only their own id.
132
+ - For world integration, let the host game own the sun/light adapter. Lighting
133
+ is not a stable public package or bundle domain; coordinate project-local
134
+ lighting through explicit Sky, Weather, Water, and vegetation adapters.
135
+ - The composed-world sun adapter is `setSun({ direction, color, sky })`; it
136
+ keeps the real light/shadows and Grass, Flower, Forest, Ambient FX, Sky, and
137
+ Water scene inputs aligned without changing their portable presets.
138
+ - Sky quality is compile-time: low/medium/high compile 2/3/4 cloud octaves,
139
+ custom `{ cloudOctaves: 1..5 }` is supported, and `sky.setQuality()` rebuilds
140
+ the material while preserving authored settings and active layers.
141
+ - Keep current wind, wetness, snow, interaction targets, weather, lighting,
142
+ camera, and export destinations owned by the host app.
143
+ - **Start from a public package preset or a portable Lab export.** The browser
144
+ Labs author and preview settings, while the package registry and imported
145
+ documents are the runtime sources of truth. Never import Lab UI code into an
146
+ application. Water and Sky keep their controls inside their complete system
147
+ documents rather than requiring hidden companion settings.
148
+ - **Always name the preset.** `createVegetationShaderScopeSettings(scope, {...})`
149
+ with no `preset` silently resolves an anonymous `default` — not the studio
150
+ look — and does not warn. Pass `preset: 'call_me_sensei'` explicitly on the
151
+ first call. See the `style-presets` skill; this single omission has taken a
152
+ whole vegetation look onto the wrong base for several revisions.
153
+ - Grass presets differ in **shape**, not only colour: `call_me_sensei_clump` is
154
+ the wide dense meadow clump, while `anime_clump` is the shorter narrow six-
155
+ blade tuft with a far smaller clump radius. Choose deliberately when coverage
156
+ and silhouette matter. `createCallMeSenseiGrassField()` defaults to the
157
+ meadow and honors an explicit alternate `preset`; verify the resolved id in
158
+ `field.userData.callMeSenseiGrass.preset`.
159
+ - Do not rely on repository sample meshes, textures, or generated manifests.
160
+ A clean npm tarball contains no grass media files; test the generated
161
+ topology, blade attributes, LOD counts, and material in a clean consumer.
162
+
163
+ Verify:
164
+ - Run the consumer app's normal build and inspect near/far vegetation plus sky
165
+ under the target camera.
166
+ - For exported trees, reload the generated asset in the consumer app or asset
167
+ pipeline.
@@ -0,0 +1,136 @@
1
+ ---
2
+ name: visual-verification
3
+ description: How to prove a ToonLab scene actually looks right — settling the scene before screenshotting, isolating a subsystem to attribute a defect, measuring colour against sampled targets with CIEDE2000, scanning the scene graph for outliers, and running an adversarial critic loop. Use whenever judging, reviewing, or iterating on a rendered scene, and before reporting that any visual defect is a ToonLab limitation.
4
+ ---
5
+
6
+ # Verifying that it looks right
7
+
8
+ A passing build is not visual approval, and a screenshot is not evidence unless
9
+ you know what was in the frame when it was taken. This skill is the measurement
10
+ discipline that turns "it looks wrong" into "this surface, this value, this
11
+ owner".
12
+
13
+ ## Settle the scene before you screenshot
14
+
15
+ ToonLab subsystems keep resolving work **after their factory returns** — GLB
16
+ loads, render-target passes, texture uploads. Screenshotting on a fixed frame
17
+ count produces frames with whole subsystems missing while your manifest happily
18
+ reports them as present.
19
+
20
+ Observed: the same command produced 273,520 triangles with the entire lagoon
21
+ absent on one run and 606,056 on the next.
22
+
23
+ So: await every readiness promise the host exposes, render through the real
24
+ pipeline, and re-read the scene graph until triangle and drawable counts are
25
+ **unchanged across several consecutive reads**. Treat count stability as a
26
+ necessary signal, not proof that GPU compilation, render targets, or external
27
+ loads succeeded. Then screenshot. Report `settled`, the readiness signals, and
28
+ a non-zero rendered frame count in the capture manifest, and **fail the
29
+ capture** if any required signal is wrong. A black or half-built frame must
30
+ never be able to pass as a render.
31
+
32
+ Before accepting the final frame, inspect pixels from the real output (a
33
+ small `readPixels` grid or the captured image). Fail when nearly every sample
34
+ matches the renderer clear/background color, when useful RGB variance or
35
+ non-background coverage is effectively zero, or when alpha is invalid. Do not
36
+ hardcode black as the only empty-frame value: sky blue, transparent, and custom
37
+ clear colors can hide the same failure. Record the distinct-color count or
38
+ coverage ratio with the capture.
39
+
40
+ Also fail on any browser console error. A texture that failed to decode is a
41
+ defect, not a warning.
42
+
43
+ ## Isolate before you blame
44
+
45
+ Render subsystems alone to attribute a defect — and include the light rig, or
46
+ you get a black frame and learn nothing.
47
+
48
+ A "flowing water" texture smeared over every cliff was investigated as a
49
+ waterfall bug for two review cycles. One isolated capture of terrain plus its
50
+ lighting settled it in a minute: the ground shader was painting it.
51
+
52
+ Support a query flag that takes a **list** (`?only=terrain,lighting,sky`), and a
53
+ flag that bypasses post. Most attribution questions collapse to two captures.
54
+
55
+ ## Measure colour, do not argue about it
56
+
57
+ Sample the frame at fixed points and compare against your target values in
58
+ **CIEDE2000**, not by eye and not by RGB distance. Average a small patch rather
59
+ than a single pixel so dithering does not decide the answer.
60
+
61
+ Two disciplines that matter more than the metric:
62
+
63
+ - **Probe the right surface.** A probe that lands on terrain when you think it
64
+ is on rock will report a rock defect that does not exist. Prove it: change the
65
+ suspected material's value and re-measure. If the probe does not move, it is
66
+ not on that material. This exact check revealed that two "rock" probes were
67
+ reading the ground shader.
68
+ - **Probe where the reference has that material.** A probe placed at coordinates
69
+ the reference fills with sky, on a frame where your scene has a cliff, measures
70
+ a composition difference and reports it as a colour failure.
71
+
72
+ Keep a second sampler for arbitrary points, so a question like "is the shaded
73
+ wall darker than the lit one, and by how much" is one command.
74
+
75
+ ## Scan the scene graph for outliers
76
+
77
+ Traverse for meshes above a size threshold and print path, world-space extent
78
+ and position. This catches the things nobody sees because they read as
79
+ background:
80
+
81
+ - a 104 m slab lying across a 72 m channel, damming it;
82
+ - "cliff-top caps" built at 70–90 m across when the tower crown is 20 m.
83
+
84
+ Both survived several visual reviews. A ten-line traversal found each in
85
+ seconds.
86
+
87
+ Audit transforms the same way. Report per-role mean and max uniform scale and
88
+ the worst axis ratio; a mean scale of 6× with a max of 22× is a stretched
89
+ surface, and it is visible long before anyone can articulate why.
90
+
91
+ ## Judge from every approved camera
92
+
93
+ A formation can read as one coherent mass from the hero camera and as a kit row
94
+ from above. Fix a small set of cameras — hero, wide, close, flyover, top-down —
95
+ and require all of them before approving a change. Never approve from one view.
96
+
97
+ ## Run an adversarial critic
98
+
99
+ Separate the builder from the judge. When the active tool surface and developer
100
+ authorization permit an independent agent/thread, have that critic capture its
101
+ **own** fresh evidence rather than trusting the builder's screenshots. Otherwise
102
+ perform a separate critic pass after clearing builder assumptions. Read the
103
+ module source and return structured blockers: region, expected, actual, fix,
104
+ owner.
105
+
106
+ Make the critic's standard a specific shipped frame, not "good". Give it the
107
+ sampled palette and an explicit auto-fail list, and require a verdict field that
108
+ is hard to fudge — a boolean like `readsAsOneMass` forces a judgement that a
109
+ score can blur.
110
+
111
+ Then feed the blockers back to the builder with instructions not to argue but to
112
+ disprove with a capture if it disagrees. Loop until the critic passes it.
113
+
114
+ In the qualifying run, independent critics scored subsystems 1.5–3.0 out of 10
115
+ with 9–11 blockers each and drove the useful visual fixes. Code inspection
116
+ still found contract defects; rendered evidence determined whether they were
117
+ visible and whether a correction actually improved the target frame.
118
+
119
+ ## Keep the harness honest under parallelism
120
+
121
+ If several agents capture at once:
122
+
123
+ - give each run its own port, or they fight over a fixed one;
124
+ - serialise the browser through a small semaphore — GPU-backed browsers
125
+ exhaust WASM memory a few instances in, and the failure surfaces to an agent
126
+ as a broken module rather than as machine pressure;
127
+ - expect transient failures from another agent's mid-edit file, and retry rather
128
+ than "fixing" a module you do not own.
129
+
130
+ ## Record the measurement, not the conclusion
131
+
132
+ Write down the number and the command that produced it. "The wall is too blue"
133
+ ages badly; "left wall `#4B6E97` L105 against target `#93A9C6` L168, from
134
+ `capture --view hero` then a point sample at 300,250" can be re-checked after
135
+ the scene has moved on — and it repeatedly turned out that the conclusion was
136
+ wrong while the measurement was still useful.
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: water
3
+ description: Help developers use ToonLab water materials, waves, ripple simulation, breakers, splashes, rain, kelp, or water settings.
4
+ ---
5
+
6
+ # Water
7
+
8
+ Use this skill when a developer wants WaterSurface, water material settings,
9
+ Gerstner waves, CPU buoyancy mirrors, ripple simulation, refraction, foam,
10
+ breakers, wakes, splashes, rain, kelp, underwater view, or water preset
11
+ documents.
12
+
13
+ Public imports:
14
+ - `@call-me-sensei/toonlab/water`
15
+ - `@call-me-sensei/toonlab/water-settings`
16
+
17
+ Read first:
18
+ - `agents/references/anime-art-direction.md`
19
+ - `agents/references/style-bundles.md`
20
+ - `agents/references/runtime-entry-points.md`
21
+
22
+ Developer guidance:
23
+ - Add water surfaces and update hooks to the host app's scene and render loop.
24
+ - For a standalone controlled coast, construct `WaterSurface` with a world-space
25
+ `bedHeight(x, z)` sampler so shoaling and shoreline depth use the same beach
26
+ geometry, enable `shoreState` when wet-sand/foam memory is under test, keep
27
+ the surface axis-aligned, and call `water.update(renderer, scene, camera,
28
+ delta)` before the host render.
29
+ - Cover the full water tile and every allowed camera footprint with closed
30
+ seabed geometry. Dress visible underwater areas with package `WaterKelpField`
31
+ vegetation and licensed/package rock clusters, including partially buried
32
+ and partially submerged transitions. An empty bed, visible terrain underside,
33
+ open world edge, or sky showing below the bed is a release failure.
34
+ - Treat Water as one integrated World System. Surface shading, waves, foam,
35
+ reflections, interaction, and quality belong to the complete Water preset;
36
+ do not invent a separate Water Shader document or runtime dependency.
37
+ - Keep `WaterSurface`'s default `underwaterAtmosphere` scene adapter enabled.
38
+ Its update restores the host's air-side background/fog for water capture
39
+ passes, then applies body-color fog and background when the camera is below
40
+ and inside the surface footprint. Its capture-excluded color veil also
41
+ grades ToonLab TSL materials that opt out of scene fog. Do not duplicate
42
+ Water Lab fog-swapping in a host app. Disable or override this adapter only
43
+ when a complete replacement underwater post stack owns the same transition.
44
+ - Keep the three authored axes explicit: `preset` selects the body/motion
45
+ recipe (`coast`, `ocean`, `lake`, and so on), `style: 'call_me_sensei'`
46
+ selects the studio rendition, and `colorTone` selects `classic`, `anime`,
47
+ `teal`, `caribbean`, `lagoon`, or `deepOcean`. Do not replace a coast preset
48
+ with an "Anime" preset; Anime is a tone selected by the style.
49
+ - A non-`classic` tone owns its coherent optical block:
50
+ `shallowColor`, `midColor`, `deepColor`, `depthFadeDistance`,
51
+ `deepFadeDistance`, `fresnelBias`, `fresnelColor`, `reflectionStrength`,
52
+ `reflectionSoftness`, `causticsStrength`, and `detailNormalStrength`.
53
+ Supplying those keys alongside a named tone does not override the tone.
54
+ Choose `classic` when the caller needs full per-key control instead.
55
+ - Choose the tone from captures made with the real bed depth and approved
56
+ cameras, not from its label or palette table alone. Grazing views tend toward
57
+ `deepColor`; overhead shallow views expose more `shallowColor`.
58
+ - `opacity` controls only the fallback path without a scene-color capture.
59
+ With the normal WaterSurface scene-color pass bound, the body composites as
60
+ the integrated refractive surface and that setting is intentionally inactive.
61
+ - Keep interaction targets, camera mode, resize handling, and physics/buoyancy
62
+ integration owned by the app.
63
+ - Use `water.settings` for the portable authored baseline and
64
+ `water.renderedSettings` when inspecting the current Lighting/Weather
65
+ composition. Live scene owners use unique `setSceneOverrideLayer` ids and
66
+ clear only their own id; they must not write composed values back to a preset.
67
+ - In a composed world, let the host game own lighting and pass current light
68
+ state through Water's explicit scene adapters. Lighting is not a stable
69
+ public package or bundle domain.
70
+ - Preserve the host renderer's depth convention. Water supports both standard
71
+ and reversed depth; qualify contact foam and refraction using the host's
72
+ actual `reversedDepthBuffer` setting rather than silently changing it.
73
+ - Choose Water's compile-time quality when constructing `WaterSurface`.
74
+ Changing low/medium/high or custom quality requires replacing/rebuilding the
75
+ surface; `applySettings()` edits authored art/simulation values, not quality.
76
+ - Use documented settings and presets for portable water looks.
77
+ - When using buoyancy, sample or mirror the same wave configuration the visible
78
+ water uses.
79
+ - Treat ToonLab playground scenes as examples, not runtime dependencies.
80
+ - Size finite water surfaces from the union of every approved camera frustum's
81
+ intersection with the water plane, then add margin for orbit, shake, and
82
+ wave displacement. A visible rectangular boundary is a release failure;
83
+ increasing width and depth is the correction.
84
+
85
+ Verify:
86
+ - Run the consumer app's normal build and inspect calm, moving, and interaction
87
+ states relevant to the game.
88
+ - If buoyancy is used, check that objects match the visible water height closely
89
+ enough for the app's camera distance.
90
+ - Inspect the water from the cliff camera, a low shore camera, and a downward
91
+ reveal. Verify the shoreline has no hovering terrain, dry gaps, hard surface
92
+ edge, or water slivers, and record `nearshorePhaseStatus` plus the ship's
93
+ sampled `getHeightAt()` result when a vessel is present. Treat an inactive
94
+ nearshore phase as diagnostic, not automatically as a shader failure: the
95
+ mild-slope path cannot activate on a vertical wall or deep gorge that never
96
+ presents a qualifying bank to the bed sampler.
97
+ - Add two underwater inspections: one looking up through the surface and one
98
+ looking across the floor toward the shore. Verify real above-water
99
+ transmission, readable depth tint/haze, a continuous closed bed, caustic or
100
+ light response, submerged rocks, moving vegetation, and no hollow terrain.
101
+ Assert `water.underwaterAtmosphereState.active` in both submerged views and
102
+ verify that the original host background/fog return above the surface.
103
+ - When the host uses reversed depth, inspect the foam debug view as well:
104
+ open water must remain dark and contact foam must stay localized to shore
105
+ and piercing objects.