@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.
- package/NPM-LIBRARY.md +225 -0
- package/README.md +588 -184
- package/agents/PROMPTS.md +87 -0
- package/agents/README.md +54 -0
- package/agents/claude/CLAUDE.md +8 -0
- package/agents/codex/AGENTS.md +159 -0
- package/agents/cursor/toonlab.mdc +37 -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/mcp-asset-discovery.md +104 -0
- package/agents/references/runtime-entry-points.md +175 -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/post-processing/SKILL.md +44 -0
- package/agents/skills/claude/rock-ground-shaders/SKILL.md +134 -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/post-processing/SKILL.md +44 -0
- package/agents/skills/codex/rock-ground-shaders/SKILL.md +134 -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 +53 -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/fal-patina.mjs +131 -0
- package/database/generation-service.mjs +415 -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/migrations/0007_creation_revisions.sql +80 -0
- package/database/migrations/0008_creation_revision_hardening.sql +98 -0
- package/database/migrations/0009_creation_revision_delete_integrity.sql +11 -0
- package/database/migrations/0010_external_catalog_assets.sql +28 -0
- package/database/providers.mjs +644 -0
- package/database/repository.mjs +1073 -0
- package/database/seeds/catalog/0001_empty_official_catalog.sql +4 -0
- package/database/seeds/catalog/0002_2026-08.sql +19454 -0
- package/database/seeds/catalog/0003_2026-08-open-assets.sql +159086 -0
- package/database/seeds/catalog/0004_2026-08-c7-rocks.sql +39405 -0
- package/mcp/lab-management.mjs +629 -0
- package/mcp/public-catalog.mjs +168 -0
- package/mcp/server.mjs +1044 -63
- package/mcp/vite-plugin.mjs +519 -26
- package/mcp/workspace.mjs +26 -1
- package/package.json +334 -46
- package/scripts/generate-catalog-seed.mjs +324 -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 +102 -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/loadImported.js +15 -1
- 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 +324 -0
- package/src/catalog/officialCatalogLod.js +183 -0
- package/src/catalog/officialCatalogPlacement.js +243 -0
- package/src/catalog/officialCatalogProvider.js +334 -0
- package/src/character/animationRetarget.js +1084 -0
- package/src/character/characterRig.js +6 -1
- package/src/character/characterRuntime.js +544 -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 +144 -6
- package/src/environment/environmentPresets.js +486 -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 +399 -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 +462 -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 +2976 -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 +200 -6
- 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 +16 -0
- package/src/renderer/rendererConfiguration.js +250 -0
- package/src/renderer/styleComparison.js +985 -0
- package/src/rock-shader/index.js +8 -0
- package/src/rock-shader/rockGeometryDetail.js +701 -0
- package/src/rock-shader/rockMaterial.js +2586 -0
- package/src/rock-shader/rockRegionRuntime.js +185 -0
- package/src/rock-shader/rockSemanticMaterialRuntime.js +337 -0
- package/src/rock-shader/rockShaderRuntime.js +781 -0
- package/src/rock-shader/rockShaderSettings.js +1099 -0
- package/src/rock-shader/rockTangentIntegrity.js +136 -0
- package/src/rock-shader/rockTextureIntegrity.js +115 -0
- package/src/rockgen/export/glbExport.js +104 -14
- package/src/rockgen/index.js +5 -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 +376 -9
- package/src/rockgen/rockgenPresets.js +114 -13
- package/src/rockgen/rockgenSettings.js +62 -11
- package/src/rockgen/surface/c7GeologySurface.js +372 -0
- 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 +51 -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 +379 -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 +1447 -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 +157 -0
- package/src/styles/manufacturedStyleLabeling.js +204 -0
- package/src/styles/neutralStylePresets.js +712 -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 +923 -0
- package/src/styles/styleAdapters.js +177 -0
- package/src/styles/styleApplication.js +369 -0
- package/src/styles/styleBundle.js +445 -92
- 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/evaluateTexture.js +30 -3
- package/src/texgen/textureGenerators.js +83 -35
- package/src/texgen/textureSettings.js +25 -8
- package/src/toon/toonSettings.js +100 -2
- package/src/vegetation/branchTree.js +587 -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 +17 -1
- package/src/vegetation/legacyTreePresets.js +120 -0
- package/src/vegetation/scatter.js +688 -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 +676 -54
- package/src/vegetation/stylizedTreeFoliage.js +1111 -38
- package/src/vegetation/stylizedUnderstory.js +230 -0
- package/src/vegetation/treeExport.js +262 -47
- package/src/vegetation/treeSurfaceTextures.js +665 -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 +250 -50
- 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 +7 -0
- package/types/asset-policy/index.d.ts +20 -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 +56 -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 +63 -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 +87 -0
- package/types/character/characterRuntime.d.ts +5 -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 +44 -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 +153 -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 +1591 -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 +440 -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 +1785 -0
- package/types/renderer/index.d.ts +2 -0
- package/types/renderer/rendererConfiguration.d.ts +8 -0
- package/types/renderer/styleComparison.d.ts +409 -0
- package/types/rock-shader/index.d.ts +8 -0
- package/types/rock-shader/rockGeometryDetail.d.ts +300 -0
- package/types/rock-shader/rockMaterial.d.ts +21 -0
- package/types/rock-shader/rockRegionRuntime.d.ts +86 -0
- package/types/rock-shader/rockSemanticMaterialRuntime.d.ts +29 -0
- package/types/rock-shader/rockShaderRuntime.d.ts +10 -0
- package/types/rock-shader/rockShaderSettings.d.ts +184 -0
- package/types/rock-shader/rockTangentIntegrity.d.ts +51 -0
- package/types/rock-shader/rockTextureIntegrity.d.ts +61 -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 +12 -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 +243 -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/rockgen/surface/c7GeologySurface.d.ts +8 -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 +69 -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 +18 -0
- package/types/styles/manufacturedStyleLabeling.d.ts +119 -0
- package/types/styles/neutralStylePresets.d.ts +944 -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 +1802 -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 +14 -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 +225 -0
- package/types/vegetation/legacyTreePresets.d.ts +22 -0
- package/types/vegetation/scatter.d.ts +13 -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 +20 -0
- package/types/vegetation/stylizedTreeFoliage.d.ts +19 -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 -752
- 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
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: asset-sourcing
|
|
3
|
+
description: Help agents source anime-game-ready models, textures, and presets through policy-aware ToonLab MCP discovery, provenance, supported shaders, and explicit custom-gap reporting.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Asset Sourcing
|
|
7
|
+
|
|
8
|
+
Use this skill when a developer needs an asset — a model, texture, HDRI,
|
|
9
|
+
prop, tree, rock, building, material, or a saved look/behavior preset.
|
|
10
|
+
|
|
11
|
+
Read first:
|
|
12
|
+
- `agents/references/anime-art-direction.md`
|
|
13
|
+
- `agents/references/style-bundles.md`
|
|
14
|
+
- `agents/references/mcp-asset-discovery.md`
|
|
15
|
+
- `agents/references/asset-sourcing-policy.md`
|
|
16
|
+
- `agents/references/custom-gap-report.md`
|
|
17
|
+
|
|
18
|
+
**The boundary:** ToonLab targets anime-style games and environments. The npm package is the worker for approved procedural
|
|
19
|
+
families, style presets, and texture baking. The gallery is optional. Route
|
|
20
|
+
through MCP only where it adds something beyond the package: external
|
|
21
|
+
discovery, curation/moderation policy, download provenance, shared workspace
|
|
22
|
+
state, or explicitly requested managed generation. Do not use MCP tools as a
|
|
23
|
+
proxy for package functions. ToonLab Pro may author and review stylized base
|
|
24
|
+
sets; their approved documents, recipes, labels, seeds, and provenance must
|
|
25
|
+
remain portable so OSS runtimes can use them without a database.
|
|
26
|
+
|
|
27
|
+
## Select the connected MCP surface
|
|
28
|
+
|
|
29
|
+
Feature-detect tools before making a call. ToonLab OSS local MCP is identified
|
|
30
|
+
by `get_workspace_info`, `search_cc0_assets`, `get_cc0_asset`, and
|
|
31
|
+
`import_cc0_asset`. ToonLab Pro remote MCP is identified by
|
|
32
|
+
`get_runtime_guide`, `search_public_gallery`, and `get_toonlab_asset`. Either
|
|
33
|
+
surface is sufficient and both may be connected. Shared names such as
|
|
34
|
+
`search_assets`, `get_asset`, `list_my_creations`,
|
|
35
|
+
`validate_asset_candidate`, and `record_asset_gap` have surface-specific
|
|
36
|
+
schemas; qualify them by MCP server when both are present and use the schema
|
|
37
|
+
advertised by that server. Read `agents/references/mcp-asset-discovery.md` for
|
|
38
|
+
the exact OSS and Pro sequences.
|
|
39
|
+
|
|
40
|
+
## Decision order
|
|
41
|
+
|
|
42
|
+
Choose the first route that is both available and accepted for the requested
|
|
43
|
+
scene-kit role.
|
|
44
|
+
|
|
45
|
+
1. **Load policy and ask when missing.** Call the available server's
|
|
46
|
+
`get_anime_game_profile`, load
|
|
47
|
+
the selected bundle, and locate the project's sourcing policy. If no policy
|
|
48
|
+
exists, ask the developer; until answered, use library-first advisory mode
|
|
49
|
+
and report the unresolved decision. Validate every candidate before use.
|
|
50
|
+
2. **Reuse what exists.** In OSS, earlier imports, saved presets, and exports
|
|
51
|
+
live in `.toonlab/`; call local `list_my_creations` and `search_assets` with
|
|
52
|
+
`source: 'workspace'`, `'workspace-storage'`, `'library'`, or `'builtin'`.
|
|
53
|
+
If those do not close the role, use local `search_assets` with
|
|
54
|
+
`source: 'official'` for the complete released Gallery catalog and follow
|
|
55
|
+
`nextOffset` until null.
|
|
56
|
+
In Pro, call cloud `list_my_creations`, then `search_public_gallery`; use
|
|
57
|
+
`source: 'toonlab'` plus the appropriate catalog for first-party assets and
|
|
58
|
+
follow `nextOffset`. For rocks on either surface, shortlist from positive
|
|
59
|
+
`dimensionsMeters` width/height/depth plus family/profile, scale class,
|
|
60
|
+
category/subcategory, geology, and surface; never render a GLB merely to
|
|
61
|
+
discover its size. Call `get_asset` (OSS) or `get_toonlab_asset` (Pro) only
|
|
62
|
+
for finalists that need full recipe, lineage, and file metadata. When both are connected,
|
|
63
|
+
search the local project/library before the Pro cloud library and gallery.
|
|
64
|
+
Never regenerate or re-download something already available.
|
|
65
|
+
3. **Use an approved procedural family only when policy permits it.** Discover
|
|
66
|
+
approved families through MCP, then use their focused runtime such as
|
|
67
|
+
`@call-me-sensei/toonlab/vegetation`, `rockgen`, `debrisgen`, or `texgen`.
|
|
68
|
+
This is the direct route only when the requested family has an approved,
|
|
69
|
+
versioned stylized base set and passes the policy/review gate described in
|
|
70
|
+
`agents/references/asset-sourcing-policy.md`. Preserve base-set version, generator version,
|
|
71
|
+
recipe, seed, domain/material labels, and golden-seed verification. Do not
|
|
72
|
+
treat every legacy catalog entry as approved merely because it can spawn.
|
|
73
|
+
4. **Search curated open sources when policy permits and generation is not
|
|
74
|
+
approved or is not the best fit.** In OSS, use
|
|
75
|
+
`search_cc0_assets({ query, kind, provider })`, `get_cc0_asset`, then
|
|
76
|
+
`import_cc0_asset` to download selected files into `.toonlab/imports/` with
|
|
77
|
+
a provenance manifest. In Pro, use Pro `search_assets` and `get_asset`;
|
|
78
|
+
Pro does not expose `search_cc0_assets` or `import_cc0_asset`. This route
|
|
79
|
+
stays on MCP because it carries the network fetch, the owner curation
|
|
80
|
+
policy, and licensing provenance —
|
|
81
|
+
selection is by name/tags only, so always preview imports in-scene before
|
|
82
|
+
committing to them. Prefer CC0. Accept CC-BY only through a source path that
|
|
83
|
+
exposes the exact creator, asset URL, license/version/URL, provider credit,
|
|
84
|
+
and modification notice; do not assume a tool named `search_cc0_assets`
|
|
85
|
+
returns CC-BY.
|
|
86
|
+
5. **Use managed generation for a named remaining gap through the connected surface.**
|
|
87
|
+
First record why accepted
|
|
88
|
+
assets, approved procedural families, and curated open candidates were
|
|
89
|
+
inadequate. Check generation capabilities and rights for the input image.
|
|
90
|
+
Treat output as a candidate that still needs topology, UV, texture, scale,
|
|
91
|
+
collision, LOD, semantic-label, and Call Me Sensei review. OSS keeps
|
|
92
|
+
`generate_asset` for deterministic recipes and exposes provider-backed work
|
|
93
|
+
separately as `generate_ai_asset` when local keys are configured. Pro uses
|
|
94
|
+
credit-spending `generate_asset` with hosted workers. Both surfaces expose
|
|
95
|
+
generation capability, polling, and save tools; follow the advertised schema.
|
|
96
|
+
6. **Author stable visual profiles in code.** Post profiles can be generated
|
|
97
|
+
deterministically through `@call-me-sensei/toonlab/post`; other stable
|
|
98
|
+
shader profiles resolve through the selected style bundle. Lighting, VFX,
|
|
99
|
+
camera, and game-feel generation are host-owned or pre-beta in the public package and
|
|
100
|
+
are not advertised by the packaged MCP server.
|
|
101
|
+
|
|
102
|
+
Persist anything worth keeping with `save_creation` (or write the JSON into
|
|
103
|
+
the repo); `.toonlab/creations/` is the shared surface labs and later
|
|
104
|
+
sessions read. Every reusable saved object must include up to ten concise
|
|
105
|
+
lowercase slug tags. Cover its semantic role, material or asset family,
|
|
106
|
+
location or biome when relevant, project, and lifecycle state; never save an
|
|
107
|
+
object with only a filename or generic `asset` tag. Follow `nextOffset` until
|
|
108
|
+
null when checking for an existing saved object before creating a duplicate.
|
|
109
|
+
|
|
110
|
+
For every completed asset request, update or report the scene family, kit
|
|
111
|
+
role, selected route, license/provenance, rendering domain, material roles,
|
|
112
|
+
support level, collision/LOD status, Call Me Sensei verification, and coverage
|
|
113
|
+
gap that was closed. State explicitly when gallery search was skipped because
|
|
114
|
+
an approved generator owned the role.
|
|
115
|
+
|
|
116
|
+
## Manufactured environment material contract
|
|
117
|
+
|
|
118
|
+
For generated or imported props, vehicles, buildings, furniture, and interior
|
|
119
|
+
assets, classify each material once with glTF extras / Three.js
|
|
120
|
+
`userData.urbanMaterial`. Author the versioned object with these axes:
|
|
121
|
+
|
|
122
|
+
- `baseMaterial`: `metal`, `mineral`, `wood`, `polymer`, `rubber`, `glass`,
|
|
123
|
+
`ceramic`, `textile`, `leather`, `paper`, `composite`, `fluid`, or
|
|
124
|
+
`genericDielectric`.
|
|
125
|
+
- `finish`: `raw`, `painted`, `varnished`, `clearCoated`, `polished`,
|
|
126
|
+
`brushed`, `glazed`, `anodized`, `mirror`, or `matte`.
|
|
127
|
+
- `renderMode`: `opaque`, `alphaCutout`, `translucent`, `transmissive`, or
|
|
128
|
+
`unlit`.
|
|
129
|
+
- `structuralRole`: `primaryMass`, `secondaryStructure`, `trim`, `fastener`,
|
|
130
|
+
`cavity`, `window`, `graphic`, or `lightEmitter`.
|
|
131
|
+
- `contentFlags`: any of `graphic`, `display`, and `emissive`.
|
|
132
|
+
|
|
133
|
+
Preserve source color and every available PBR map. Classification supplies
|
|
134
|
+
stable meaning and fallback priors; it never replaces albedo, roughness,
|
|
135
|
+
metalness, normal, AO, emissive, clearcoat, transmission, opacity, or UV data.
|
|
136
|
+
|
|
137
|
+
- Put classification on the material when a mesh has multiple materials. A
|
|
138
|
+
node classification is a default for every material below it.
|
|
139
|
+
- Split materials or provide a material-ID mask when one atlas spans
|
|
140
|
+
incompatible classes such as masonry, wood, metal, and window glass.
|
|
141
|
+
- Keep wear, dirt, rust, chipped coating, wetness, burn, snow, and similar
|
|
142
|
+
conditions in continuous masks rather than inventing material classes.
|
|
143
|
+
- Never encode pastel amount, palette overrides, cel thresholds, reflection
|
|
144
|
+
strength, or time-of-day values in the model.
|
|
145
|
+
- Never reclassify a model to suit a shader. Custom shaders consume the stable
|
|
146
|
+
axes and define global settings plus sparse per-axis profiles.
|
|
147
|
+
- Accept the old `urbanSurface` IDs only through the documented compatibility
|
|
148
|
+
map; do not author `lid`, `roof`, or `trim` as physical material classes.
|
|
149
|
+
- Reload the exported GLB and inspect classifications, fallback warnings, and
|
|
150
|
+
mixed-atlas boundaries before judging only a beauty render.
|
|
151
|
+
- Run `analyzeManufacturedAsset(root)` as the code-first audit. Names, PBR
|
|
152
|
+
slots, alpha/transmission, emission, and metalness can cover clean assets;
|
|
153
|
+
never guess material identity from RGB alone. Use visual analysis only as
|
|
154
|
+
offline assistance for mixed/anonymous atlases and approve its proposal into
|
|
155
|
+
a material split, ID mask, or explicit assignment.
|
|
156
|
+
- Use `proposeManufacturedStyleTargetLabel(root)` to turn safe classifications
|
|
157
|
+
into stable material IDs and a versioned `manufactured.surface` label.
|
|
158
|
+
Generic fallback, low-confidence, and shared-role-conflict issues block the
|
|
159
|
+
proposal. Supply reviewed `materialOverrides`, then call
|
|
160
|
+
`applyManufacturedStyleTargetLabelProposal(root, proposal)`. Report automatic
|
|
161
|
+
and assisted results separately; an explicit repair is not an automatic hit.
|
|
162
|
+
- For FBX, OBJ/MTL, USDZ, VRM, PMX/PMD, third-party GLB, and other sources
|
|
163
|
+
that cannot safely carry custom properties, write a versioned
|
|
164
|
+
`*.toonlab-materials.json` sidecar and apply it after loading. The runtime
|
|
165
|
+
classification layer never edits geometry, UVs, or texture pixels.
|
|
166
|
+
- Review and temporarily switch tags in the Manufactured Material Lab; export
|
|
167
|
+
its sidecar to make the result durable.
|
|
168
|
+
|
|
169
|
+
## Sample and compare (vision-capable agents)
|
|
170
|
+
|
|
171
|
+
For surfaces that dominate the look (terrain, floors, walls, hero props),
|
|
172
|
+
don't take the first hit — produce 2–3 candidates across routes and look at
|
|
173
|
+
them before choosing:
|
|
174
|
+
|
|
175
|
+
- **Generated**: texgen is part of the npm package, not an MCP tool — bake
|
|
176
|
+
candidates headlessly with a short node script:
|
|
177
|
+
`evaluateTextureMaps(createTextureSettings(findTexturePreset(id).settings),
|
|
178
|
+
{ size: 256 })` (async, ~50 ms) returns raw RGBA maps; encode the albedo
|
|
179
|
+
to PNG and write it next to the imports.
|
|
180
|
+
- **Discovered in OSS**: when the connected surface exposes
|
|
181
|
+
`import_cc0_asset`, it leaves real image files in `.toonlab/imports/`.
|
|
182
|
+
ToonLab Pro instead returns approved immutable download URLs and provenance;
|
|
183
|
+
do not prescribe the OSS import tool on that surface.
|
|
184
|
+
|
|
185
|
+
View the swatches side by side, judge fit against the game's stylized look,
|
|
186
|
+
then confirm the winner in-scene (toon shading changes how a texture reads).
|
|
187
|
+
If you cannot view images, fall back to the routing heuristics and rely on
|
|
188
|
+
the in-scene verify step. This costs extra tokens — reserve it for hero
|
|
189
|
+
surfaces and take the first good match for incidental materials.
|
|
190
|
+
|
|
191
|
+
## Which source for which asset
|
|
192
|
+
|
|
193
|
+
Stable routing (the source list itself grows — treat the registry, not this
|
|
194
|
+
table, as the source of truth):
|
|
195
|
+
|
|
196
|
+
- Seamless PBR material sets (brick, wood, ground …) → ambientCG.
|
|
197
|
+
- Photoscanned props, HDRIs, high-end texture sets → Poly Haven.
|
|
198
|
+
- Stylized/toon-ready models, vegetation, buildings → the built-in
|
|
199
|
+
procedural catalog first only for families that passed the base-set
|
|
200
|
+
reliability gate; otherwise compare curated external candidates.
|
|
201
|
+
- Stylized *seamless textures* → `@call-me-sensei/toonlab/texgen` in code
|
|
202
|
+
(60+ presets); the catalog has no texture entries, so this route is a
|
|
203
|
+
package import, not an MCP call.
|
|
204
|
+
- Audio, fonts, adjacent media → not automated; link the developer to the
|
|
205
|
+
source and import the downloaded file.
|
|
206
|
+
|
|
207
|
+
Sources carry their own metadata (`kinds`, `goodFor`, `qualityTier`,
|
|
208
|
+
`enabled`) in the registry (`src/assetlib/sources.js`, surfaced through the
|
|
209
|
+
asset tools). New sources appear over time; query rather than assume.
|
|
210
|
+
|
|
211
|
+
## Loading first-party catalog models
|
|
212
|
+
|
|
213
|
+
Some first-party catalog GLBs declare `KHR_texture_basisu` in
|
|
214
|
+
**`extensionsRequired`**, so a KTX2 transcoder is mandatory for those assets.
|
|
215
|
+
Supply `decoderBasePath` and `renderer`, and stage the Basis and Draco decoder
|
|
216
|
+
files where that path resolves.
|
|
217
|
+
|
|
218
|
+
**Share one transcoder set across the whole catalog.** A transcoder is expensive
|
|
219
|
+
and is not automatically pooled. Use the public loader contract:
|
|
220
|
+
|
|
221
|
+
```js
|
|
222
|
+
import {
|
|
223
|
+
createModelAssetTranscoders,
|
|
224
|
+
loadModelAsset,
|
|
225
|
+
} from '@call-me-sensei/toonlab/loaders';
|
|
226
|
+
|
|
227
|
+
const transcoders = createModelAssetTranscoders({ decoderBasePath, renderer });
|
|
228
|
+
const asset = await loadModelAsset(url, { transcoders });
|
|
229
|
+
// Reuse transcoders for every model, then dispose once after loading finishes.
|
|
230
|
+
transcoders.dispose();
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Constructing decoder resources per asset can spin up a WASM instance per asset,
|
|
234
|
+
and a catalog-scale scene can fail with
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
RuntimeError: Aborted(RangeError: WebAssembly.instantiate():
|
|
238
|
+
Out of memory: Cannot allocate Wasm memory for new instance)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
long before it finishes loading. Cache each parsed asset/geometry by immutable
|
|
242
|
+
asset URL as well, so a repeated id is one decode and upload rather than two.
|
|
243
|
+
|
|
244
|
+
Note also that a catalog rock's `material-config.json` may name textures with
|
|
245
|
+
paths that do not resolve from the delivery origin. Do not block on them: the
|
|
246
|
+
rock shader's own projection is the safe fallback. Call Me Sensei normally
|
|
247
|
+
blends clean UV-authored albedo/normal/ORM detail and reports retained texture
|
|
248
|
+
lineage; use `assetIntegration.sourceAlbedoMode: 'replace'` only when an import
|
|
249
|
+
audit proves those source maps unusable.
|
|
250
|
+
|
|
251
|
+
## Licensing and curation rules
|
|
252
|
+
|
|
253
|
+
- Enabled sources are owner-curated to the project quality bar; disabled
|
|
254
|
+
ones are pending review. Do not bypass the tools with ad-hoc downloads
|
|
255
|
+
from other sites — moderation and provenance exist for a reason.
|
|
256
|
+
- CC0 clears copyright, not trademarks, logos, or personality rights
|
|
257
|
+
visible in scans. If an asset shows a brand or a person, flag it instead
|
|
258
|
+
of importing.
|
|
259
|
+
- Every imported ref keeps `source` + attribution provenance. Preserve it;
|
|
260
|
+
some sources (e.g. Poly Haven's API terms) want credit even though the
|
|
261
|
+
assets are CC0. Surface attribution in the app's credits.
|
|
262
|
+
- CC-BY additionally requires appropriate creator credit, the license link,
|
|
263
|
+
the source link when supplied, and an indication of modifications. Preserve
|
|
264
|
+
those fields through conversions, bundles, scenes, and exports.
|
|
265
|
+
|
|
266
|
+
## Verify
|
|
267
|
+
|
|
268
|
+
- For every selected first-party rock, record the catalog ID and original
|
|
269
|
+
`dimensionsMeters`; after authored scaling, record the resulting scene size.
|
|
270
|
+
Reject missing, zero, negative, or axis-ambiguous dimensions before download.
|
|
271
|
+
- Preview imported GLBs/textures in the consumer app's actual scene and
|
|
272
|
+
toon/environment shading — reference-realistic assets can clash with a
|
|
273
|
+
stylized look.
|
|
274
|
+
- For procedural assets, pin the `seed` and confirm the app regenerates the
|
|
275
|
+
identical asset.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: environment
|
|
3
|
+
description: Help developers use ToonLab environment shading, lighting rigs, ambient probes, reflections, fog, cloud shadows, or vertex AO in an app.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Environment
|
|
7
|
+
|
|
8
|
+
Use this skill when a developer wants stylized scene materials, material-role
|
|
9
|
+
classification, sun/lamp rigs, time-of-day, ambient probes, planar reflections,
|
|
10
|
+
BVH vertex AO, fog, cloud shadows, or environment presets.
|
|
11
|
+
|
|
12
|
+
Public imports:
|
|
13
|
+
- `@call-me-sensei/toonlab/environment`
|
|
14
|
+
|
|
15
|
+
Read first:
|
|
16
|
+
- `agents/references/anime-art-direction.md`
|
|
17
|
+
- `agents/references/style-bundles.md`
|
|
18
|
+
- `agents/references/runtime-entry-points.md`
|
|
19
|
+
- the exported `environment` material-role schema and guidance below.
|
|
20
|
+
|
|
21
|
+
Developer guidance:
|
|
22
|
+
- Apply environment materials to app-owned meshes and scenes.
|
|
23
|
+
- Keep asset loading, texture hosting, renderer setup, and scene routing in the
|
|
24
|
+
host app.
|
|
25
|
+
- Use documented settings and presets for material roles, lighting, fog, cloud
|
|
26
|
+
shadows, probes, and reflections.
|
|
27
|
+
- Consume the versioned `urbanMaterial` classification: base material,
|
|
28
|
+
finish, render mode, structural role, and content flags. Put style choices
|
|
29
|
+
in global shader settings and sparse per-axis profiles; do not relabel assets
|
|
30
|
+
when the shader changes. Accept legacy `urbanSurface` only through the
|
|
31
|
+
documented migration map.
|
|
32
|
+
- Use `analyzeManufacturedAsset` for the automatic code-first import audit.
|
|
33
|
+
Apply durable corrections with `applyManufacturedMaterialManifest`; do not
|
|
34
|
+
infer semantic material from base-color pixels alone. A visual model is an
|
|
35
|
+
optional offline assistant for mixed atlases, never a runtime dependency.
|
|
36
|
+
- For an imported hero vehicle or ship, preserve the complete pre-conversion
|
|
37
|
+
audit and the `applyEnvironmentShader()` classification report. Report every
|
|
38
|
+
generic fallback, low-confidence assignment, transparent surface, and mixed
|
|
39
|
+
atlas; do not call the result contract-ready until a reviewed sidecar or
|
|
40
|
+
embedded material contract removes those warnings.
|
|
41
|
+
- Treat global environment settings as the catch-all, then resolve sparse
|
|
42
|
+
`materialLook` profiles by base material, finish, render mode, structural
|
|
43
|
+
role, content flags, object class, and stable asset id. Do not implement a
|
|
44
|
+
shader fork per base material; only incompatible render modes need distinct
|
|
45
|
+
shader families.
|
|
46
|
+
- Use the same post-load classification for GLB, FBX, OBJ/MTL, USDZ, VRM,
|
|
47
|
+
PMX/PMD, and procedural `Object3D`s. Prefer glTF extras for owned GLBs and a
|
|
48
|
+
`*.toonlab-materials.json` sidecar for formats that do not preserve custom
|
|
49
|
+
metadata reliably.
|
|
50
|
+
- Treat BVH vertex AO as optional; apps that do not use it should not need
|
|
51
|
+
`three-mesh-bvh`.
|
|
52
|
+
- Do not rely on ToonLab sample app URLs, sample asset paths, or generated local
|
|
53
|
+
manifests.
|
|
54
|
+
|
|
55
|
+
Verify:
|
|
56
|
+
- Run the consumer app's normal build and visual smoke check.
|
|
57
|
+
- For a vessel, inspect above-water, shoreline, and reflected/refracted views;
|
|
58
|
+
verify sails/windows keep their intended render mode and the hull crosses the
|
|
59
|
+
waterline without being excluded from required water scene passes.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: game-dev
|
|
3
|
+
description: Starting point for integrating ToonLab into an existing anime-style game or scene, including focused runtime routing, Gallery/MCP sourcing policy, and experimental/host-owned boundaries.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Integrating ToonLab into an Anime-Style Game
|
|
7
|
+
|
|
8
|
+
Use this skill when an existing game, level, character, or scene spans more
|
|
9
|
+
than one ToonLab system. Do not use it to promise a complete polished world
|
|
10
|
+
from one prompt.
|
|
11
|
+
|
|
12
|
+
Read first:
|
|
13
|
+
- `agents/references/anime-art-direction.md`
|
|
14
|
+
- `agents/references/style-bundles.md`
|
|
15
|
+
- `agents/references/mcp-asset-discovery.md`
|
|
16
|
+
- `agents/references/asset-sourcing-policy.md`
|
|
17
|
+
- `agents/references/runtime-entry-points.md`
|
|
18
|
+
|
|
19
|
+
## Assembly order
|
|
20
|
+
|
|
21
|
+
1. Inventory the supplied scene, approved cameras, existing asset/library
|
|
22
|
+
content, and the exact targets the developer wants ToonLab to change. Treat
|
|
23
|
+
layout, terrain, coastline, biome, lighting, camera, and gameplay
|
|
24
|
+
as protected host work unless the developer requests an experiment.
|
|
25
|
+
2. Load the selected v2 bundle and its `artDirection`; use
|
|
26
|
+
`CALL_ME_SENSEI_STYLE_BUNDLE` when no other approved bundle is selected.
|
|
27
|
+
3. Locate the asset-sourcing policy. Ask the developer when it is missing;
|
|
28
|
+
continue library-first in advisory mode only while reporting that decision.
|
|
29
|
+
4. Feature-detect ToonLab OSS local and/or ToonLab Pro remote MCP. Reuse the
|
|
30
|
+
project/library first, search the released Gallery for named gaps, validate
|
|
31
|
+
finalists, then download only selected assets with provenance.
|
|
32
|
+
5. Let the host game retain its renderer, scene layout, cameras, controls,
|
|
33
|
+
animation, physics, storage, and loading pipeline. When the same scene has
|
|
34
|
+
terrain-bound objects, grass, or shoreline water, create one
|
|
35
|
+
`createSceneSurfaceRuntime({ bounds, heightAt, waterLevel })`. The host owns
|
|
36
|
+
authored XZ layout and the terrain sampler; the surface runtime owns every
|
|
37
|
+
derived Y placement, bounds-grounding, water bed/shore wiring, and its
|
|
38
|
+
readiness audit. Never independently assign those values.
|
|
39
|
+
Label only the requested character, manufactured, tree, grass, flower,
|
|
40
|
+
ground, rock, water, and post targets.
|
|
41
|
+
When creating or modifying 3D content, also inventory every render material:
|
|
42
|
+
each slot needs a stable material ID and valid semantic role in the target's
|
|
43
|
+
versioned material contract. A root label alone never makes a multi-material
|
|
44
|
+
model bundle-ready.
|
|
45
|
+
Imported manufactured models should go through
|
|
46
|
+
`proposeManufacturedStyleTargetLabel()` and a reviewed proposal; every
|
|
47
|
+
low-confidence or generic entry needs an explicit override before
|
|
48
|
+
`applyManufacturedStyleTargetLabelProposal()` writes durable metadata.
|
|
49
|
+
Create one `createSceneStyleRuntime()` for the scene. Its default collision
|
|
50
|
+
runtime makes labeled manufactured, rock, prop, and tree targets solid;
|
|
51
|
+
generated trees use trunk geometry. Do not write parallel blocker arrays.
|
|
52
|
+
6. Run `auditStyleBundleApplication()` and resolve every missing label, mixed
|
|
53
|
+
material, unsupported renderer, missing slot, or custom adapter before the
|
|
54
|
+
first mutation. Then call atomic `applyStyleBundle()`.
|
|
55
|
+
7. Add focused procedural grass with `surface.createGrassField()`, ground
|
|
56
|
+
objects with `surface.place()`, and create shoreline Water with
|
|
57
|
+
`surface.createWaterSurface()`. This makes terrain sampling, water masking,
|
|
58
|
+
shoaling, nearshore phase, and persistent shore state the default. Do not
|
|
59
|
+
silently redesign the level to make a subsystem fit.
|
|
60
|
+
8. Run `styleRuntime.collision.assertReady()`, report every target plan, and
|
|
61
|
+
probe representative tree, rock, and manufactured objects. Use explicit
|
|
62
|
+
collision metadata when bounds are inappropriate and the public Rapier
|
|
63
|
+
adapter when the host already owns a Rapier world. Then run
|
|
64
|
+
`surface.assertReady({ camera, styleRuntime, requireShadowDomains })`
|
|
65
|
+
after the shared shadow pass has rendered. A build, `castShadow` flag, or
|
|
66
|
+
target count is not proof of grounding, texture preservation, shoreline
|
|
67
|
+
wiring, or actual caster coverage. Then inspect the developer-supplied cameras plus relevant
|
|
68
|
+
close/far and lit/shadowed views. Iterate one material or asset family at a
|
|
69
|
+
time and report every remaining host or experimental gap.
|
|
70
|
+
|
|
71
|
+
## Runtime boundary
|
|
72
|
+
|
|
73
|
+
The host render loop advances gameplay and explicitly installed scene systems,
|
|
74
|
+
then renders once. Do not invent undocumented ToonLab imports. One-shot world
|
|
75
|
+
generation; terrain/biome/coast/cliff formation; automatic set dressing;
|
|
76
|
+
current Sky/Cloud composition; and full Lighting, Weather, Climate, VFX,
|
|
77
|
+
camera, game-feel, navigation, physics, and streaming composition are
|
|
78
|
+
experimental or host-owned.
|
|
79
|
+
|
|
80
|
+
Asset identity never belongs in a v2 style bundle. Strict tree and rock tests
|
|
81
|
+
accept only project/ToonLab libraries or the ToonLab gallery. A similar-looking
|
|
82
|
+
external or generated replacement is still denied under that policy.
|
|
83
|
+
|
|
84
|
+
## Definition of done
|
|
85
|
+
|
|
86
|
+
- Every requested supported treatment routes to an explicit labeled target;
|
|
87
|
+
unused or experimental bundle slots are not a completion requirement.
|
|
88
|
+
- Every render material on every created/imported target has a stable ID and
|
|
89
|
+
semantic role; incompatible atlas regions are split or carry an ID mask.
|
|
90
|
+
- No raw PBR material escapes without the selected anime treatment.
|
|
91
|
+
- Every used asset has stable ID, source class, provenance, license, anime-fit
|
|
92
|
+
review status, and a policy decision.
|
|
93
|
+
- Supplied verification cameras pass the requested material, asset, vegetation,
|
|
94
|
+
water, shadow, and LOD checks without changing protected host composition.
|
|
95
|
+
- `.toonlab/reports/style-asset-gaps.json` and `TOONLAB_ASSET_GAPS.md` exist
|
|
96
|
+
when custom work was required, and state what feedback is requested.
|
|
97
|
+
- The consumer build and a real gameplay smoke test pass.
|
|
98
|
+
- The shared scene-surface audit passes with no off-surface grass/objects,
|
|
99
|
+
disconnected water bed, missing shore state, lost source texture inputs,
|
|
100
|
+
invalid review camera, or incomplete required shadow domain.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: post-processing
|
|
3
|
+
description: Help developers use ToonLab post-processing, bloom, color grade, LUT, vignette, outlines, depth cue, or motion blur.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Post Processing
|
|
7
|
+
|
|
8
|
+
Use this skill when a developer wants ToonLab's optional post-processing
|
|
9
|
+
pipeline, settings, preset documents, bloom, color grading, LUTs, vignette,
|
|
10
|
+
screen outlines, depth cue, motion blur, or character-aware bloom.
|
|
11
|
+
|
|
12
|
+
Public imports:
|
|
13
|
+
- `@call-me-sensei/toonlab/post`
|
|
14
|
+
- `@call-me-sensei/toonlab/post-processing`
|
|
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
|
+
Generating looks (no lab UI required):
|
|
22
|
+
- `createPostGeneratorRecipe(id, { seed, locks, configuration })` defines an
|
|
23
|
+
editable domain; `createGeneratedPostPresetDocument(recipe, { quality })`
|
|
24
|
+
resolves it into a flat, portable preset deterministically per seed.
|
|
25
|
+
- The packaged MCP server is reserved for asset discovery, provenance,
|
|
26
|
+
sourcing-policy decisions, and custom-gap records. Generate post profiles
|
|
27
|
+
in code and commit any resolved document that the project needs to retain.
|
|
28
|
+
- Ship the resolved preset in the app; keep the recipe only if runtime
|
|
29
|
+
re-rolling is a feature.
|
|
30
|
+
|
|
31
|
+
Developer guidance:
|
|
32
|
+
- Keep the post stack optional and controlled by the host app.
|
|
33
|
+
- Wire ToonLab outputs into the app's render loop deliberately; the app owns
|
|
34
|
+
renderer lifecycle, resize handling, and scene/camera management.
|
|
35
|
+
- Use documented settings and preset documents for portable looks.
|
|
36
|
+
- Provide depth, masks, or character pass textures only when using features
|
|
37
|
+
that need them.
|
|
38
|
+
- Do not assume ToonLab lab UI state or sample routing exists in the consumer
|
|
39
|
+
app.
|
|
40
|
+
|
|
41
|
+
Verify:
|
|
42
|
+
- Run the consumer app's normal build and a before/after visual smoke check.
|
|
43
|
+
- Confirm disabling the post stack returns control to the app's normal render
|
|
44
|
+
path.
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rock-ground-shaders
|
|
3
|
+
description: Apply, configure, and verify ToonLab rock and ground shaders in outdoor scenes, including textures, close detail, HDR sun response, cast/receive shadows, ground-field adoption, shoreline wet bands, and Call Me Sensei defaults.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Rock and ground shaders
|
|
7
|
+
|
|
8
|
+
Use this skill when terrain, cliffs, catalog rocks, beaches, or grass-ground
|
|
9
|
+
blending are being built or reviewed. These two systems are separate public
|
|
10
|
+
APIs and must share scene state deliberately.
|
|
11
|
+
|
|
12
|
+
## Rock assets and material application
|
|
13
|
+
|
|
14
|
+
Find rock geometry through ToonLab asset discovery. Feature-detect the surface:
|
|
15
|
+
ToonLab OSS provides local catalog tools such as `search_assets({ source:
|
|
16
|
+
'official' })`; ToonLab Pro provides the public gallery equivalent. Inspect
|
|
17
|
+
`dimensionsMeters`, taxonomy, geology, structural role, and delivery metadata
|
|
18
|
+
before download. Never render an asset merely to discover its size.
|
|
19
|
+
|
|
20
|
+
Apply the package shader to compatible rock meshes:
|
|
21
|
+
|
|
22
|
+
```js
|
|
23
|
+
import {
|
|
24
|
+
applyRockShader,
|
|
25
|
+
setRockShaderSceneState,
|
|
26
|
+
} from '@call-me-sensei/toonlab/rock-shader';
|
|
27
|
+
|
|
28
|
+
const report = applyRockShader(rockRoot, { preset: 'call_me_sensei' }, {
|
|
29
|
+
textures: authoredRockMaps, // omit deliberately to use first-party generated maps
|
|
30
|
+
});
|
|
31
|
+
if (report.applied === 0) throw new Error('No rock mesh received the shader');
|
|
32
|
+
if (report.usedGeneratedTextures) {
|
|
33
|
+
console.info('Using ToonLab first-party generated rock maps');
|
|
34
|
+
}
|
|
35
|
+
setRockShaderSceneState(rockRoot, { waterLevel });
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
For the representative semantic hoodoo, validate before styling:
|
|
39
|
+
|
|
40
|
+
```js
|
|
41
|
+
import { inspectRockRegionBindings } from '@call-me-sensei/toonlab/rock-shader';
|
|
42
|
+
|
|
43
|
+
const regions = inspectRockRegionBindings(hoodooRoot);
|
|
44
|
+
if (regions.totalVertices !== 134981) throw new Error('Unexpected hoodoo binding');
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The v1 binding is fixed to profile `hoodoo-caprock-normalized-height-v1` and
|
|
48
|
+
channels `base/shaft/neck/cap`. Do not apply it to another family. Use only
|
|
49
|
+
material styling (`detail: null`) on the annotated mesh; any position/topology
|
|
50
|
+
edit requires semantic regeneration and rebaking. Prove repeated
|
|
51
|
+
`applyRockShader()` / `restoreRockShader()` cycles restore exact material,
|
|
52
|
+
texture, geometry, index, attribute, shadow, and user-data identities.
|
|
53
|
+
|
|
54
|
+
`applyRockShader` sets `castShadow` and `receiveShadow` true by default.
|
|
55
|
+
Override them only for an explicit rendering reason. It reports whether
|
|
56
|
+
provided textures or first-party generated maps were used; never call the
|
|
57
|
+
fallback an authored catalog texture.
|
|
58
|
+
|
|
59
|
+
The Call Me Sensei preset includes a macro projection plus a metre-scale near
|
|
60
|
+
detail octave, HDR exposure, an indirect floor for down-facing overhangs, and
|
|
61
|
+
a water-level wet band. Tune `projection.nearDetailScale`,
|
|
62
|
+
`projection.nearDetailStrength`, `lighting.exposure`,
|
|
63
|
+
`lighting.ambientFloor`, `lighting.skyFillStrength`,
|
|
64
|
+
`lighting.skyFillTint`, and `shoreline.*` through the portable preset
|
|
65
|
+
instead of adding example-local material overrides. Camera-visible rock must
|
|
66
|
+
retain readable detail at close range, a lit/shade split, non-black overhangs,
|
|
67
|
+
and wet response where it meets water.
|
|
68
|
+
|
|
69
|
+
Call Me Sensei uses a controlled imported-map blend by default. Preserve clean
|
|
70
|
+
UV-authored rock albedo, normal, and ORM inputs; verify
|
|
71
|
+
`report.retainedSourceTextures` and the material's texture-lineage metadata.
|
|
72
|
+
Do not set `preserveTextures: false` or switch to Replace merely to silence a
|
|
73
|
+
surface audit. Use Replace only when an import audit proves the source maps are
|
|
74
|
+
unusable.
|
|
75
|
+
|
|
76
|
+
## Ground creation and shared scene state
|
|
77
|
+
|
|
78
|
+
Prefer the safety wrapper:
|
|
79
|
+
|
|
80
|
+
```js
|
|
81
|
+
import {
|
|
82
|
+
createGroundShaderMesh,
|
|
83
|
+
setGroundShaderSceneState,
|
|
84
|
+
} from '@call-me-sensei/toonlab/ground-shader';
|
|
85
|
+
|
|
86
|
+
const ground = createGroundShaderMesh({
|
|
87
|
+
geometry,
|
|
88
|
+
field,
|
|
89
|
+
layers,
|
|
90
|
+
settings: { preset: 'call_me_sensei' },
|
|
91
|
+
});
|
|
92
|
+
scene.add(ground);
|
|
93
|
+
setGroundShaderSceneState(ground, {
|
|
94
|
+
sunColor,
|
|
95
|
+
sunDirection,
|
|
96
|
+
skyColor,
|
|
97
|
+
waterLevel,
|
|
98
|
+
wetness,
|
|
99
|
+
snowCover,
|
|
100
|
+
});
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The wrapper defaults `castShadow`, `receiveShadow`, and
|
|
104
|
+
`userData.groundFieldWrite` to true and disables unsafe frustum culling for
|
|
105
|
+
custom/displaced bounds. The Call Me Sensei ground preset exposes
|
|
106
|
+
`lighting.sunIntensity` for HDR sun-facing headroom and retains triplanar
|
|
107
|
+
rock detail when optional maps are absent. Optional authored albedo, normal,
|
|
108
|
+
and packed surface maps are still preferred for hero terrain and beaches.
|
|
109
|
+
|
|
110
|
+
When grass adopts ground color, prefer `createSceneStyleRuntime()` with labeled
|
|
111
|
+
`terrain.ground` and `vegetation.grass` targets. The bundle marks writers and
|
|
112
|
+
owns the environment ground-field pass. In a manual subsystem integration,
|
|
113
|
+
create and update the pass after writers exist, assert `pass.writerCount > 0`
|
|
114
|
+
and `pass.ready`, and call `pass.invalidate()` whenever a writer repaints without changing
|
|
115
|
+
transform. The field publishes unlit surface albedo; consumers apply their own
|
|
116
|
+
lighting. Do not publish camera-lit ground color into the field.
|
|
117
|
+
|
|
118
|
+
## Lighting and shadow verification
|
|
119
|
+
|
|
120
|
+
A material flag is not visual proof. Enable the renderer shadow path, use a
|
|
121
|
+
directional light that casts shadows, fit its camera to the visible world, and
|
|
122
|
+
run the ToonLab environment sun-shadow pass on the node backend. Inspect:
|
|
123
|
+
|
|
124
|
+
- sun-facing and away-facing ground and rock;
|
|
125
|
+
- cast shadows from trees, rocks, characters, and the cliff mass;
|
|
126
|
+
- self-shadow acne and detached/peter-panning shadows;
|
|
127
|
+
- close rock detail and distant macro continuity;
|
|
128
|
+
- ground-field color adoption without double lighting;
|
|
129
|
+
- wet rock, beach, and shoreline continuity at the current water level.
|
|
130
|
+
|
|
131
|
+
Reject flat untextured walls, black overhangs, missing trunk/cliff shadows,
|
|
132
|
+
silent generated-map use, or a grass/ground color jump. Record the package
|
|
133
|
+
version, preset, texture source, scene-state wiring, shadow backend, and
|
|
134
|
+
inspection cameras in release evidence.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rockgen
|
|
3
|
+
description: Help developers use ToonLab procedural rock, cliff, heightfield, erosion, SDF, mesh, preset, sculpt, or GLB export tools.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Rockgen
|
|
7
|
+
|
|
8
|
+
Use this skill when a developer wants procedural rock, cliff, or heightfield
|
|
9
|
+
generation; stylized erosion; SDF composition; surface-nets meshing; rock
|
|
10
|
+
presets; sculpt edits; or GLB export.
|
|
11
|
+
|
|
12
|
+
Public imports:
|
|
13
|
+
- `@call-me-sensei/toonlab/rockgen`
|
|
14
|
+
|
|
15
|
+
Read first:
|
|
16
|
+
- `README.md` feature table for the exported rockgen surface.
|
|
17
|
+
|
|
18
|
+
Developer guidance:
|
|
19
|
+
- Use fixed seeds when an app needs repeatable generated assets.
|
|
20
|
+
- Store app-specific presets or generated outputs in the host app's asset
|
|
21
|
+
pipeline, not in ToonLab sample folders.
|
|
22
|
+
- Treat Rock Lab as an optional local authoring example, not a runtime
|
|
23
|
+
dependency.
|
|
24
|
+
- Heightfield erosion is provided by ToonLab's first-party stylized erosion
|
|
25
|
+
path; do not advise developers to depend on the old terrain-editor fork or
|
|
26
|
+
third-party simulator.
|
|
27
|
+
|
|
28
|
+
Verify:
|
|
29
|
+
- In consumer apps, regenerate with the same preset/seed and compare the asset
|
|
30
|
+
shape or exported file the app expects.
|