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