@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,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.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: scene-style-application
|
|
3
|
+
description: Inspect, plan, apply, and verify ToonLab style bundles on labeled scenes without copying Lab or showcase code.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Scene style application
|
|
7
|
+
|
|
8
|
+
Ask the developer whether application should be **strict** or **advisory** before
|
|
9
|
+
changing the scene. Strict mode stops on unlabeled, invalid, or unsupported
|
|
10
|
+
targets. Advisory mode applies valid labeled targets and reports every gap.
|
|
11
|
+
|
|
12
|
+
Use the package contract in this order:
|
|
13
|
+
|
|
14
|
+
1. Label host-owned objects with `createStyleTargetLabel()` and
|
|
15
|
+
`labelStyleTarget()` from `@call-me-sensei/toonlab/styles`.
|
|
16
|
+
For every newly modeled, generated, or imported renderable, assign a stable
|
|
17
|
+
material ID and at least one valid semantic material role to **every material
|
|
18
|
+
slot** in the label's versioned `materials` contract. A root domain label by
|
|
19
|
+
itself is incomplete for a multi-material object. Split incompatible surface
|
|
20
|
+
regions or provide an explicit material-ID mask; never guess a production
|
|
21
|
+
role from names or RGB values.
|
|
22
|
+
For an imported manufactured asset, call
|
|
23
|
+
`proposeManufacturedStyleTargetLabel()` first. Review every generic,
|
|
24
|
+
conflicting, or low-confidence entry, supply explicit `materialOverrides`,
|
|
25
|
+
then call `applyManufacturedStyleTargetLabelProposal()`. Never lower the
|
|
26
|
+
confidence threshold merely to make strict application pass.
|
|
27
|
+
2. Run `toonlab inspect`, `toonlab audit`, then `toonlab plan` against a portable
|
|
28
|
+
`toonlab/scene-style-manifest` document. The OSS MCP tools with the same names
|
|
29
|
+
are equivalent when MCP is available.
|
|
30
|
+
3. Show the plan, including unsupported domains and custom-material exemptions.
|
|
31
|
+
4. Run `toonlab apply` only after the strict/advisory choice is known.
|
|
32
|
+
5. Run `toonlab verify`, the consumer build, and visual checks for every camera,
|
|
33
|
+
renderer, quality profile, and scenario affected.
|
|
34
|
+
|
|
35
|
+
When the scene combines ground-bound content with shoreline water, use one
|
|
36
|
+
`createSceneSurfaceRuntime()` from `@call-me-sensei/toonlab/runtime` before
|
|
37
|
+
creating grass, water, or derived object Y positions. Its `createGrassField()`,
|
|
38
|
+
`createWaterSurface()`, and `place()` methods are the default integration path.
|
|
39
|
+
After rendering the shared shadow pass, its strict readiness audit must pass;
|
|
40
|
+
do not hand off a page that merely built or set shadow flags.
|
|
41
|
+
|
|
42
|
+
For a package-generated `StylizedTree`, preserve an authored `trunkMap`; when
|
|
43
|
+
it is absent, let Call Me Sensei select `call-me-sensei-bark-v1` or choose an
|
|
44
|
+
explicit registered ID from `getTreeSurfaceProfileOptions()`. Never leave bark
|
|
45
|
+
flat because no one chose a texture. Verify every trunk is both a shared-pass
|
|
46
|
+
caster and receiver. `trunkSurfaceProfile: 'none'` is a deliberate opt-out,
|
|
47
|
+
not a fallback.
|
|
48
|
+
|
|
49
|
+
Do not hand off an authored 3D object while any render material is absent from
|
|
50
|
+
the contract. In strict mode, missing material IDs/roles or a mixed atlas
|
|
51
|
+
without a split/mask is a blocking failure; fix the asset metadata before
|
|
52
|
+
applying the bundle. In advisory mode, report the same gap explicitly and do
|
|
53
|
+
not describe the object as style-bundle-ready.
|
|
54
|
+
|
|
55
|
+
`applyStyleBundle({ mode: 'strict' })` reconciles the declared material
|
|
56
|
+
contract against the live material slots before mutation. Keep the broader
|
|
57
|
+
scene audit as the reporting gate, but do not bypass a direct strict rejection
|
|
58
|
+
by calling a lower-level shader adapter.
|
|
59
|
+
|
|
60
|
+
Never import from a ToonLab `labs/` directory, copy a showcase scene, or depend
|
|
61
|
+
on a retained reference-scene implementation. Labs are authoring/test clients;
|
|
62
|
+
public package exports are the runtime authority. If a needed behavior is not a
|
|
63
|
+
public export, record the package gap rather than copying private code.
|
|
64
|
+
|
|
65
|
+
The host owns authored XZ layout, terrain shape/sampler, gameplay, dynamic
|
|
66
|
+
physics, navigation, and content identity. The shared surface runtime owns
|
|
67
|
+
derived ground heights and terrain/water coordination. The scene style runtime
|
|
68
|
+
owns conservative static collision for labeled manufactured, rock, prop, and
|
|
69
|
+
tree targets unless the label declares another policy. Call
|
|
70
|
+
`styleRuntime.collision.assertReady()` before handoff and report its per-target
|
|
71
|
+
plan. Do not add scene-local tree/rock/bench blocker lists. Use explicit
|
|
72
|
+
`none`, `blockers`, `convex`, or `trimesh` metadata when bounds are wrong; use
|
|
73
|
+
`createRapierCollisionAdapter()` for an existing Rapier world. A style bundle
|
|
74
|
+
owns visual treatment and package-managed systems.
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: style-presets
|
|
3
|
+
description: Explicitly select and record the intended ToonLab style or preset at every style-aware call site, distinguish neutral-default factories from Call Me Sensei-default factories, and audit overrides before reporting a custom integration note. Use before authoring environment, vegetation, grass, water, rock, ground, sky, cloud, or post settings, and whenever a subsystem looks unexpectedly unstyled.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Name the preset
|
|
7
|
+
|
|
8
|
+
This skill makes an individual call site explicit; it does not imply that every
|
|
9
|
+
listed subsystem is part of a live Lab. Sky and Cloud focused authoring is live.
|
|
10
|
+
Weather, Climate, and automatic full-world composition remain lower-level APIs
|
|
11
|
+
for users who want to assemble those systems in their own application.
|
|
12
|
+
|
|
13
|
+
Style-aware ToonLab factories take a `preset`, a `style`, or both. Some
|
|
14
|
+
factories intentionally resolve a neutral/default treatment when the selector
|
|
15
|
+
is omitted; Rock and Ground already default to Call Me Sensei, while
|
|
16
|
+
Cloud has no named style at all since the volumetric rebuild retired them.
|
|
17
|
+
Always pass the intended selector anyway so the call site and capture manifest
|
|
18
|
+
are auditable. Never claim that every omitted selector falls back to neutral.
|
|
19
|
+
|
|
20
|
+
Omitting a selector on the neutral-default factories is one of the most
|
|
21
|
+
expensive mistakes a ToonLab agent can make. In one capability test it hit
|
|
22
|
+
three independent subsystems, each investigated as a custom integration note when the
|
|
23
|
+
actual cause was a missing selector or an overridden preset field.
|
|
24
|
+
|
|
25
|
+
## The rule
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
// WRONG for a Call Me Sensei scene — resolves the vegetation baseline.
|
|
29
|
+
createVegetationShaderScopeSettings('tree', { foliage: { ... } });
|
|
30
|
+
|
|
31
|
+
// RIGHT
|
|
32
|
+
createVegetationShaderScopeSettings('tree', {
|
|
33
|
+
preset: 'call_me_sensei',
|
|
34
|
+
foliage: { ... },
|
|
35
|
+
});
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Do this for every domain, on the **first** call, not as a later refinement.
|
|
39
|
+
|
|
40
|
+
## Where it bites
|
|
41
|
+
|
|
42
|
+
| Factory | Name this | Actual default behavior |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| `applyEnvironmentShader` | `preset: 'call_me_sensei'`, plus the intended `scenario` | The adapter accepts the selectors directly and composes preset, `settings`, then explicit overrides. `resolveEnvironmentPreset` remains available when plain settings data is needed elsewhere. |
|
|
45
|
+
| `createVegetationShaderScopeSettings` | `preset: 'call_me_sensei'` | Omitting it resolves the neutral vegetation baseline. |
|
|
46
|
+
| `createGrassSettings` / grass fields | `preset: 'call_me_sensei_clump'` for the first-party meadow, or `'anime_clump'` for the short narrow tuft recipe | Omitting it resolves neutral grass settings. These presets differ in geometry/coverage, not only colour. `createCallMeSenseiGrassField` defaults to the meadow and honors an explicit alternate preset. |
|
|
47
|
+
| `createWaterSettings` | `preset: <water body>` **and** `style: 'call_me_sensei'` | Omitting selectors resolves Lake with the default rendition. The Call Me Sensei style owns `colorTone: 'anime'`; any non-`classic` tone intentionally owns its palette/fade/reflection block, while `classic` leaves those per-key values authorable. |
|
|
48
|
+
| `createRockShaderSettings` / `applyRockShader` | `preset: 'call_me_sensei'` | Already defaults to Call Me Sensei. Textures are optional: the fallback is first-party generated 256 px data and the application report identifies its source. |
|
|
49
|
+
| `createGroundShaderSettings` | `preset: 'call_me_sensei'` | Already defaults to Call Me Sensei. |
|
|
50
|
+
| `createSkySettings` | `style: 'call_me_sensei'`, plus the intended `scenario` | Omitting style resolves the default sky rendition. |
|
|
51
|
+
| `createCloudParams` / `SkySystem.applyPreset` | no preset id | The volumetric rebuild retired the named cloud styles; the eight replacement looks are whole-sky presets. Omitting parameters resolves the published schema defaults. |
|
|
52
|
+
| `createPostProcessingSettings` | `preset: 'call_me_sensei'` | Omitting it resolves `off`. |
|
|
53
|
+
|
|
54
|
+
## Overriding a preset field is a deliberate act
|
|
55
|
+
|
|
56
|
+
Changing one key of a first-party preset is indistinguishable, at the call site,
|
|
57
|
+
from configuring an unstyled system. Real examples, all of which produced a bug
|
|
58
|
+
report against ToonLab before the cause was found:
|
|
59
|
+
|
|
60
|
+
- `groundAdoptStrength: 0.04` over the shipped meadow's `1` — grass then never adopted
|
|
61
|
+
the ground colour, and the *mechanism* was reported as broken.
|
|
62
|
+
- `colorTone: 'classic'` over the studio `'anime'` — the lagoon deliberately
|
|
63
|
+
left the studio tone, after which its palette/fade/reflection values needed
|
|
64
|
+
explicit authorship.
|
|
65
|
+
- A bare `createVegetationShaderScopeSettings()` plus ~25 hand-authored fields —
|
|
66
|
+
three revisions of look development on the wrong base.
|
|
67
|
+
|
|
68
|
+
So: **before overriding a preset field, state why the shipped value is wrong for
|
|
69
|
+
this scene**, in a comment, naming the scene fact the shared IP treatment cannot
|
|
70
|
+
know — plane extent, bed depth, camera distance, a specific art-direction target
|
|
71
|
+
with a measured value. If you cannot name one, do not override it.
|
|
72
|
+
|
|
73
|
+
## When a subsystem looks wrong
|
|
74
|
+
|
|
75
|
+
Before concluding that ToonLab lacks a capability, check, in this order:
|
|
76
|
+
|
|
77
|
+
1. **Was a preset named?** Not "is a preset applied somewhere" — was one passed
|
|
78
|
+
to *this* factory, at *this* call site.
|
|
79
|
+
2. **Was a preset field overridden?** Diff your options against the shipped
|
|
80
|
+
preset's settings in the package source.
|
|
81
|
+
3. **Does the package or repository lab do it differently?** Inspect the
|
|
82
|
+
installed preset registry/source first. If working in a ToonLab repository
|
|
83
|
+
checkout, open the matching lab and compare the public API call and values it
|
|
84
|
+
boots. Labs are not present in the npm tarball and are never runtime imports.
|
|
85
|
+
4. **Only then** record a custom integration note.
|
|
86
|
+
|
|
87
|
+
Steps 1–3 take minutes. Skipping them cost, in one run, several days of agent
|
|
88
|
+
time and produced register entries claiming gaps that did not exist.
|
|
89
|
+
|
|
90
|
+
## Introspection is limited, so be explicit
|
|
91
|
+
|
|
92
|
+
Not every resolved settings object records which preset produced it. Water and
|
|
93
|
+
Rock retain selector identity, while scoped vegetation, Grass, Ground, and
|
|
94
|
+
Cloud settings are normalized value objects. A few options are
|
|
95
|
+
**compile flags** rather than settings and never appear on the resolved object
|
|
96
|
+
at all — `groundField` on grass is one, so `'groundField' in settings` reports
|
|
97
|
+
`false` in a fully working scene.
|
|
98
|
+
|
|
99
|
+
Therefore: log the preset id you passed, at construction, next to the subsystem
|
|
100
|
+
name. It is the only durable record, and it makes a wrong base obvious in the
|
|
101
|
+
console instead of three revisions later in a render.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: toon-shading
|
|
3
|
+
description: Help developers use ToonLab character toon shading, toon settings, presets, material roles, outlines, shadows, highlights, fur, or stickers.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Toon Shading
|
|
7
|
+
|
|
8
|
+
Use this skill when a developer wants ToonLab character toon materials, toon
|
|
9
|
+
settings, preset documents, material-role handling, outlines, hair highlights,
|
|
10
|
+
rim light, shadows, stickers, glitter, fur, or debug views in their app.
|
|
11
|
+
|
|
12
|
+
Public imports:
|
|
13
|
+
- `@call-me-sensei/toonlab/toon`
|
|
14
|
+
- `@call-me-sensei/toonlab/toon-settings`
|
|
15
|
+
|
|
16
|
+
Read first:
|
|
17
|
+
- `agents/references/anime-art-direction.md`
|
|
18
|
+
- `agents/references/style-bundles.md`
|
|
19
|
+
- `agents/references/runtime-entry-points.md`
|
|
20
|
+
|
|
21
|
+
Developer guidance:
|
|
22
|
+
- Apply toon shading to app-owned Three.js character roots and meshes.
|
|
23
|
+
- The host app owns character loading, animation, input, camera, persistence,
|
|
24
|
+
and asset URLs.
|
|
25
|
+
- The optional CC0 qualification mannequin is not bundled in npm. Load the
|
|
26
|
+
immutable public-R2 URL and provenance from `TOONLAB_MANNEQUIN_ASSET` in
|
|
27
|
+
`@call-me-sensei/toonlab/character`, or use the host project's own mannequin.
|
|
28
|
+
Never substitute a repository `public/characters/mannequin.glb` path when
|
|
29
|
+
testing an installed package. After downloading, verify its byte count,
|
|
30
|
+
SHA-256, and 46 clips before applying the toon shader.
|
|
31
|
+
- Use settings and preset documents for portable looks instead of lab HUD
|
|
32
|
+
state.
|
|
33
|
+
- Use ToonLab's TSL/NodeMaterial path; do not advise raw GLSL or
|
|
34
|
+
`ShaderMaterial` forks for ToonLab toon features.
|
|
35
|
+
- Do not rely on `assets-local/` or lab-only model discovery.
|
|
36
|
+
|
|
37
|
+
Verify:
|
|
38
|
+
- Run the consumer app's normal build and inspect the character under at least
|
|
39
|
+
one lit and one shadowed view.
|
|
40
|
+
- Record `applyToonShader()`'s converted mesh count, material-role summary,
|
|
41
|
+
shader mode, and selected preset. A loaded GLB is not proof that cel shading
|
|
42
|
+
was applied.
|
|
43
|
+
- Toggle the relevant setting or preset to confirm the app is not hard-coded to
|
|
44
|
+
lab defaults.
|