@call-me-sensei/toonlab 0.3.0 → 0.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +549 -184
- package/agents/README.md +59 -0
- package/agents/references/anime-art-direction.md +24 -0
- package/agents/references/asset-sourcing-policy.md +23 -0
- package/agents/references/custom-gap-report.md +16 -0
- package/agents/references/geology-playbook.md +118 -0
- package/agents/references/mcp-asset-discovery.md +104 -0
- package/agents/references/runtime-entry-points.md +174 -0
- package/agents/references/style-bundles.md +71 -0
- package/agents/skills/claude/asset-sourcing/SKILL.md +275 -0
- package/agents/skills/claude/environment/SKILL.md +59 -0
- package/agents/skills/claude/game-dev/SKILL.md +100 -0
- package/agents/skills/claude/karst-cliff-construction/SKILL.md +258 -0
- package/agents/skills/claude/outdoor-world/SKILL.md +492 -0
- package/agents/skills/claude/outdoor-world/references/coastal-landform-formation.md +100 -0
- package/agents/skills/claude/post-processing/SKILL.md +44 -0
- package/agents/skills/claude/rock-ground-shaders/SKILL.md +118 -0
- package/agents/skills/claude/rockgen/SKILL.md +30 -0
- package/agents/skills/claude/scene-style-application/SKILL.md +74 -0
- package/agents/skills/claude/style-presets/SKILL.md +101 -0
- package/agents/skills/claude/toon-shading/SKILL.md +44 -0
- package/agents/skills/claude/vegetation-sky/SKILL.md +167 -0
- package/agents/skills/claude/visual-verification/SKILL.md +136 -0
- package/agents/skills/claude/water/SKILL.md +105 -0
- package/agents/skills/codex/asset-sourcing/SKILL.md +275 -0
- package/agents/skills/codex/environment/SKILL.md +59 -0
- package/agents/skills/codex/game-dev/SKILL.md +100 -0
- package/agents/skills/codex/karst-cliff-construction/SKILL.md +258 -0
- package/agents/skills/codex/outdoor-world/SKILL.md +492 -0
- package/agents/skills/codex/outdoor-world/references/coastal-landform-formation.md +100 -0
- package/agents/skills/codex/post-processing/SKILL.md +44 -0
- package/agents/skills/codex/rock-ground-shaders/SKILL.md +118 -0
- package/agents/skills/codex/rockgen/SKILL.md +30 -0
- package/agents/skills/codex/scene-style-application/SKILL.md +74 -0
- package/agents/skills/codex/style-presets/SKILL.md +101 -0
- package/agents/skills/codex/toon-shading/SKILL.md +44 -0
- package/agents/skills/codex/vegetation-sky/SKILL.md +167 -0
- package/agents/skills/codex/visual-verification/SKILL.md +136 -0
- package/agents/skills/codex/water/SKILL.md +105 -0
- package/cli/toonlab.mjs +52 -0
- package/compose.yaml +20 -0
- package/database/apply-sql.mjs +141 -0
- package/database/client.mjs +39 -0
- package/database/creation-tags.mjs +23 -0
- package/database/env.mjs +16 -0
- package/database/generation-service.mjs +314 -0
- package/database/migrations/0001_local_workspace.sql +120 -0
- package/database/migrations/0002_file_ownership.sql +11 -0
- package/database/migrations/0003_remove_autosaves_from_library.sql +7 -0
- package/database/migrations/0004_catalog_asset_packs.sql +39 -0
- package/database/migrations/0005_creation_tag_discovery.sql +1 -0
- package/database/migrations/0006_normalize_creation_tags.sql +28 -0
- package/database/providers.mjs +465 -0
- package/database/repository.mjs +625 -0
- package/database/seeds/catalog/0001_empty_official_catalog.sql +4 -0
- package/database/seeds/catalog/0002_2026-08.sql +19454 -0
- package/mcp/lab-management.mjs +629 -0
- package/mcp/public-catalog.mjs +168 -0
- package/mcp/server.mjs +1026 -63
- package/mcp/vite-plugin.mjs +443 -26
- package/mcp/workspace.mjs +26 -1
- package/package.json +312 -45
- package/scripts/generate-catalog-seed.mjs +297 -0
- package/scripts/setup-local.mjs +128 -0
- package/src/agents/index.js +7 -0
- package/src/agents/sceneStyleOperations.js +169 -0
- package/src/asset-policy/catalogLicenses.js +44 -0
- package/src/asset-policy/index.js +315 -0
- package/src/assetlib/assetRef.js +1 -1
- package/src/assetlib/galleryMaterialFamily.js +165 -0
- package/src/assetlib/index.js +6 -2
- package/src/assetlib/plateau.js +188 -0
- package/src/assetlib/plateauLandmarks.js +144 -0
- package/src/assetlib/plateauViewer.js +348 -0
- package/src/assetlib/sources.js +16 -2
- package/src/catalog/manifest.js +11 -1
- package/src/catalog/officialCatalog.js +4 -0
- package/src/catalog/officialCatalogAssetRuntime.js +313 -0
- package/src/catalog/officialCatalogLod.js +150 -0
- package/src/catalog/officialCatalogPlacement.js +228 -0
- package/src/catalog/officialCatalogProvider.js +334 -0
- package/src/character/animationRetarget.js +1082 -0
- package/src/character/characterRuntime.js +376 -0
- package/src/character/groundStabilizer.js +137 -0
- package/src/character/index.js +8 -0
- package/src/character/locomotionActions.js +74 -0
- package/src/character/locomotionStateMachine.js +241 -0
- package/src/character/mannequinAsset.js +15 -0
- package/src/character/mannequinAssetUrl.browser.js +4 -0
- package/src/character/mannequinAssetUrl.node.js +3 -0
- package/src/character/modelLoader.js +92 -12
- package/src/character/walkableCharacterRuntime.js +284 -0
- package/src/character/waterInteractionController.js +217 -0
- package/src/cloud/ambientSkyBaker.js +248 -0
- package/src/cloud/cloudLighting.js +1114 -0
- package/src/cloud/cloudParams.js +819 -0
- package/src/cloud/cloudReprojection.js +563 -0
- package/src/cloud/cloudStyle.js +780 -0
- package/src/cloud/cloudStyleSnapshots.js +387 -0
- package/src/cloud/cloudVolume.js +1903 -0
- package/src/cloud/heroCloudRecipe.js +404 -0
- package/src/cloud/index.js +42 -0
- package/src/cloud/noise/baseShapeVolume.js +331 -0
- package/src/cloud/noise/cirrusMap.js +131 -0
- package/src/cloud/noise/curlNoise.js +289 -0
- package/src/cloud/noise/erosionVolume.js +188 -0
- package/src/cloud/noise/noiseVolume.js +202 -0
- package/src/cloud/noise/periodicNoise3.js +295 -0
- package/src/cloud/noise/weatherMap.js +470 -0
- package/src/cloud/paramSchema.js +458 -0
- package/src/collisionMetadata.js +320 -0
- package/src/core/systemStylePolicy.js +32 -0
- package/src/environment/dayCurves.js +146 -0
- package/src/environment/environmentGroundFieldPass.js +354 -0
- package/src/environment/environmentMaterialAdapter.js +114 -6
- package/src/environment/environmentPresets.js +396 -90
- package/src/environment/environmentRigs.js +17 -2
- package/src/environment/environmentSettings.js +37 -1
- package/src/environment/environmentShaderMaterials.js +37 -6
- package/src/environment/environmentState.js +133 -0
- package/src/environment/environmentSunShadowPass.js +357 -6
- package/src/environment/environmentTextureResolver.js +7 -0
- package/src/environment/index.js +51 -0
- package/src/environment/manufacturedMaterialContract.js +837 -0
- package/src/environment/manufacturedReflectionProvider.js +114 -0
- package/src/environment/scanAssetStylize.js +4 -4
- package/src/environment/surfaceMaterialModes.js +71 -0
- package/src/environment/toonLabEnvironmentMaterials.js +353 -0
- package/src/environment/toonLabMaterialPassCoupling.js +347 -0
- package/src/environment/toonLabNormalIntegration.js +171 -0
- package/src/environment/toonLabRockMaterialResolver.js +592 -0
- package/src/environment/toonLabSourceDefaultLit.js +444 -0
- package/src/environment/toonLabSourceLibrary.js +762 -0
- package/src/environment/toonLabSourceMaterials.js +3718 -0
- package/src/environment/toonLabSourceSubsurfaceLighting.js +415 -0
- package/src/environment/toonLabSourceTemporal.js +717 -0
- package/src/environment/toonLabSurfaceLighting.js +364 -0
- package/src/environment/toonLabTextureReadiness.js +105 -0
- package/src/environment/toonLabTreeMaterials.js +450 -0
- package/src/environment/transparentMaterialProfile.js +87 -0
- package/src/environment/urbanPropMaterial.js +2874 -0
- package/src/ground-shader/groundPrintLayer.js +375 -0
- package/src/ground-shader/groundShaderMaterial.js +851 -0
- package/src/ground-shader/groundShaderSettings.js +468 -0
- package/src/ground-shader/index.js +3 -0
- package/src/index.js +52 -22
- package/src/lighting/callMeSenseiLightingContract.js +163 -0
- package/src/lighting/index.js +14 -7
- package/src/lighting/lightingCapabilities.js +2 -2
- package/src/lighting/lightingPresets.js +6 -3
- package/src/lighting/lightingStyle.js +41 -6
- package/src/lighting/lightingSystem.js +140 -1
- package/src/lighting/{unrealExport.js → toonLabExport.js} +40 -41
- package/src/post/postProcessing.js +71 -12
- package/src/react/index.js +66 -0
- package/src/renderer/index.js +9 -0
- package/src/renderer/rendererConfiguration.js +250 -0
- package/src/rock-shader/index.js +3 -0
- package/src/rock-shader/rockMaterial.js +1843 -0
- package/src/rock-shader/rockShaderRuntime.js +494 -0
- package/src/rock-shader/rockShaderSettings.js +869 -0
- package/src/rockgen/export/glbExport.js +104 -14
- package/src/rockgen/index.js +4 -3
- package/src/rockgen/lod/index.js +6 -0
- package/src/rockgen/lod/rockLodMetrics.js +168 -0
- package/src/rockgen/lod/rockLodPlanner.js +372 -0
- package/src/rockgen/lod/rockLodPolicy.js +235 -0
- package/src/rockgen/lod/rockLodRuntime.js +124 -0
- package/src/rockgen/lod/rockLodSimplifier.js +173 -0
- package/src/rockgen/lod/rockLodValidation.js +113 -0
- package/src/rockgen/mesh/meshAttributes.js +17 -0
- package/src/rockgen/mesh/meshDocument.js +6 -0
- package/src/rockgen/rockDocument.js +352 -9
- package/src/rockgen/rockgenPresets.js +114 -13
- package/src/rockgen/rockgenSettings.js +62 -11
- package/src/runtime/index.js +14 -0
- package/src/runtime/sceneCollisionRuntime.js +317 -0
- package/src/runtime/sceneSurfaceRuntime.js +451 -0
- package/src/runtime/sceneUpdateScheduler.js +203 -0
- package/src/shaders-tsl/anime.js +9 -2
- package/src/shaders-tsl/chunks/environment-ground-field.js +174 -0
- package/src/shaders-tsl/chunks/environment-state.js +79 -0
- package/src/shaders-tsl/chunks/environment-sun-shadow.js +99 -32
- package/src/shaders-tsl/chunks/normalized-hue.js +41 -0
- package/src/shaders-tsl/chunks/pass-depth-color.js +4 -2
- package/src/shaders-tsl/chunks/scene-depth-color-pass.js +273 -0
- package/src/shaders-tsl/chunks/vegetation-style.js +116 -8
- package/src/shaders-tsl/chunks/water-color.js +19 -5
- package/src/shaders-tsl/chunks/water-shore-state.js +8 -1
- package/src/shaders-tsl/chunks/world-noise.js +30 -0
- package/src/shaders-tsl/environment.js +123 -17
- package/src/shaders-tsl/flower.js +51 -8
- package/src/shaders-tsl/grass.js +194 -29
- package/src/shaders-tsl/post-composite.js +83 -2
- package/src/shaders-tsl/tree-leaf.js +107 -16
- package/src/shaders-tsl/water-breaker.js +18 -4
- package/src/shaders-tsl/water.js +43 -3
- package/src/shaders-tsl/woody-surface.js +59 -7
- package/src/sky/atmosphereDome.js +193 -0
- package/src/sky/atmosphereParams.js +396 -0
- package/src/sky/atmosphereScattering.js +593 -0
- package/src/sky/atmosphereSky.js +371 -0
- package/src/sky/cloudShadow.js +355 -0
- package/src/sky/godRays.js +257 -0
- package/src/sky/index.js +55 -1
- package/src/sky/nightSky.js +1190 -0
- package/src/sky/renderLayers.js +120 -0
- package/src/sky/skyColor.js +582 -0
- package/src/sky/skyDayCycle.js +244 -0
- package/src/sky/skyParams.js +661 -0
- package/src/sky/skyPresets.js +772 -0
- package/src/sky/skyQualityTiers.js +383 -0
- package/src/sky/skyShaderSettings.js +699 -0
- package/src/sky/skyStyleSnapshots.js +211 -0
- package/src/sky/skySystem.js +1438 -0
- package/src/sky/skyTimeKeyframes.js +361 -0
- package/src/sky/stylizedSky.js +405 -116
- package/src/sky/sunDriver.js +499 -0
- package/src/sky/timeOfDay.js +335 -0
- package/src/styles/animeGameProfile.js +44 -0
- package/src/styles/index.js +134 -0
- package/src/styles/manufacturedStyleLabeling.js +204 -0
- package/src/styles/sceneLayerDocuments.js +185 -0
- package/src/styles/sceneLookComposition.js +156 -0
- package/src/styles/sceneQualityApplication.js +152 -0
- package/src/styles/sceneQualityProfiles.js +268 -0
- package/src/styles/sceneStyleAudit.js +512 -0
- package/src/styles/sceneStyleRuntime.js +876 -0
- package/src/styles/styleAdapters.js +166 -0
- package/src/styles/styleApplication.js +369 -0
- package/src/styles/styleBundle.js +444 -91
- package/src/styles/styleBundleProvider.js +83 -0
- package/src/styles/styleDomains.js +21 -0
- package/src/styles/styleInspector.js +262 -0
- package/src/styles/styleMaterialContract.js +375 -0
- package/src/styles/styleMetadata.js +73 -0
- package/src/styles/styleTargetDiscovery.js +162 -0
- package/src/styles/styleTargetLabels.js +206 -0
- package/src/styles/styleTargetMaterialCoverage.js +137 -0
- package/src/styles/styleTransaction.js +272 -0
- package/src/texgen/textureGenerators.js +21 -5
- package/src/toon/toonSettings.js +4 -0
- package/src/vegetation/branchTree.js +302 -0
- package/src/vegetation/callMeSenseiGrass.js +183 -0
- package/src/vegetation/compiledTree.js +506 -0
- package/src/vegetation/contactShadowField.js +107 -0
- package/src/vegetation/flowerSpecies.js +10 -2
- package/src/vegetation/grass.js +13 -0
- package/src/vegetation/grassClump.js +1179 -0
- package/src/vegetation/importedVegetationMaterial.js +183 -0
- package/src/vegetation/index.js +15 -1
- package/src/vegetation/legacyTreePresets.js +120 -0
- package/src/vegetation/scatter.js +322 -3
- package/src/vegetation/stylizedBush.js +14 -0
- package/src/vegetation/stylizedFlower.js +31 -0
- package/src/vegetation/stylizedFlowers.js +59 -7
- package/src/vegetation/stylizedForest.js +455 -147
- package/src/vegetation/stylizedGrass.js +188 -24
- package/src/vegetation/stylizedTree.js +378 -46
- package/src/vegetation/stylizedTreeFoliage.js +889 -38
- package/src/vegetation/stylizedUnderstory.js +230 -0
- package/src/vegetation/treeExport.js +262 -47
- package/src/vegetation/treeSurfaceTextures.js +337 -0
- package/src/vegetation/vegetationShaders.js +617 -28
- package/src/version.js +3 -0
- package/src/water/water.js +2 -0
- package/src/water/waterBreakerSystem.js +2 -0
- package/src/water/waterCurrentField.js +1 -0
- package/src/water/waterMaterial.js +3 -0
- package/src/water/waterRain.js +2 -0
- package/src/water/waterScenePasses.js +170 -7
- package/src/water/waterSettings.js +235 -43
- package/src/water/waterShoreMaterial.js +16 -2
- package/src/water/waterShoreStateField.js +1 -1
- package/src/water/waterSplashSystem.js +2 -0
- package/src/water/waterStageSettings.js +60 -0
- package/src/water/waterSurface.js +144 -4
- package/src/water/waterUnderwaterAtmosphere.js +288 -0
- package/src/water/waterVegetation.js +20 -4
- package/src/worldCollision.js +64 -9
- package/types/agents/index.d.ts +1 -0
- package/types/agents/sceneStyleOperations.d.ts +484 -0
- package/types/asset-policy/catalogLicenses.d.ts +5 -0
- package/types/asset-policy/index.d.ts +18 -0
- package/types/assetlib/ambientcg.d.ts +81 -0
- package/types/assetlib/assetRef.d.ts +26 -0
- package/types/assetlib/galleryMaterialFamily.d.ts +13 -0
- package/types/assetlib/importedEntry.d.ts +18 -0
- package/types/assetlib/index.d.ts +16 -0
- package/types/assetlib/kaykit.d.ts +112 -0
- package/types/assetlib/kaykitStaticIndex.d.ts +38 -0
- package/types/assetlib/loadImported.d.ts +54 -0
- package/types/assetlib/opensource3d.d.ts +55 -0
- package/types/assetlib/plateau.d.ts +67 -0
- package/types/assetlib/plateauLandmarks.d.ts +238 -0
- package/types/assetlib/plateauViewer.d.ts +3 -0
- package/types/assetlib/polyhaven.d.ts +90 -0
- package/types/assetlib/polypizza.d.ts +10 -0
- package/types/assetlib/smithsonian.d.ts +9 -0
- package/types/assetlib/sources.d.ts +22 -0
- package/types/assetlib/zip.d.ts +8 -0
- package/types/catalog/manifest.d.ts +26 -0
- package/types/catalog/officialCatalog.d.ts +4 -0
- package/types/catalog/officialCatalogAssetRuntime.d.ts +2 -0
- package/types/catalog/officialCatalogLod.d.ts +5 -0
- package/types/catalog/officialCatalogPlacement.d.ts +49 -0
- package/types/catalog/officialCatalogProvider.d.ts +7 -0
- package/types/character/animationRetarget.d.ts +20 -0
- package/types/character/characterRig.d.ts +28 -0
- package/types/character/characterRuntime.d.ts +4 -0
- package/types/character/freestyleSwimClip.d.ts +5 -0
- package/types/character/groundStabilizer.d.ts +55 -0
- package/types/character/index.d.ts +10 -0
- package/types/character/locomotionActions.d.ts +4 -0
- package/types/character/locomotionStateMachine.d.ts +62 -0
- package/types/character/mannequinAsset.d.ts +12 -0
- package/types/character/mannequinAssetUrl.node.d.ts +1 -0
- package/types/character/modelLoader.d.ts +7 -0
- package/types/character/walkableCharacterRuntime.d.ts +343 -0
- package/types/character/waterInteractionController.d.ts +114 -0
- package/types/cloud/ambientSkyBaker.d.ts +18 -0
- package/types/cloud/cloudLighting.d.ts +38 -0
- package/types/cloud/cloudParams.d.ts +18 -0
- package/types/cloud/cloudReprojection.d.ts +15 -0
- package/types/cloud/cloudStyle.d.ts +1380 -0
- package/types/cloud/cloudStyleSnapshots.d.ts +10 -0
- package/types/cloud/cloudVolume.d.ts +43 -0
- package/types/cloud/heroCloudRecipe.d.ts +167 -0
- package/types/cloud/index.d.ts +12 -0
- package/types/cloud/noise/baseShapeVolume.d.ts +86 -0
- package/types/cloud/noise/cirrusMap.d.ts +24 -0
- package/types/cloud/noise/curlNoise.d.ts +106 -0
- package/types/cloud/noise/erosionVolume.d.ts +58 -0
- package/types/cloud/noise/noiseVolume.d.ts +63 -0
- package/types/cloud/noise/periodicNoise3.d.ts +75 -0
- package/types/cloud/noise/weatherMap.d.ts +227 -0
- package/types/cloud/paramSchema.d.ts +142 -0
- package/types/collisionMetadata.d.ts +11 -0
- package/types/core/generation.d.ts +95 -0
- package/types/core/materialRoles.d.ts +102 -0
- package/types/core/presetDocuments.d.ts +25 -0
- package/types/core/systemStylePolicy.d.ts +4 -0
- package/types/environment/dayCurves.d.ts +47 -0
- package/types/environment/environmentAmbientProbe.d.ts +2 -0
- package/types/environment/environmentGroundFieldPass.d.ts +2 -0
- package/types/environment/environmentMaterialAdapter.d.ts +42 -0
- package/types/environment/environmentMaterialClassifier.d.ts +26 -0
- package/types/environment/environmentPlanarReflection.d.ts +3 -0
- package/types/environment/environmentPresets.d.ts +171 -0
- package/types/environment/environmentRigs.d.ts +13 -0
- package/types/environment/environmentSettings.d.ts +161 -0
- package/types/environment/environmentShaderMaterials.d.ts +14 -0
- package/types/environment/environmentState.d.ts +6 -0
- package/types/environment/environmentSunShadowPass.d.ts +2 -0
- package/types/environment/environmentTextureResolver.d.ts +30 -0
- package/types/environment/environmentTimeOfDay.d.ts +25 -0
- package/types/environment/environmentVertexAo.d.ts +18 -0
- package/types/environment/index.d.ts +27 -0
- package/types/environment/manufacturedMaterialContract.d.ts +129 -0
- package/types/environment/manufacturedReflectionProvider.d.ts +3 -0
- package/types/environment/scanAssetStylize.d.ts +43 -0
- package/types/environment/surfaceMaterialModes.d.ts +14 -0
- package/types/environment/toonLabEnvironmentMaterials.d.ts +139 -0
- package/types/environment/toonLabMaterialPassCoupling.d.ts +7 -0
- package/types/environment/toonLabNormalIntegration.d.ts +29 -0
- package/types/environment/toonLabRockMaterialResolver.d.ts +270 -0
- package/types/environment/toonLabSourceDefaultLit.d.ts +136 -0
- package/types/environment/toonLabSourceLibrary.d.ts +19 -0
- package/types/environment/toonLabSourceMaterials.d.ts +14 -0
- package/types/environment/toonLabSourceSubsurfaceLighting.d.ts +85 -0
- package/types/environment/toonLabSourceTemporal.d.ts +20 -0
- package/types/environment/toonLabSurfaceLighting.d.ts +136 -0
- package/types/environment/toonLabTextureReadiness.d.ts +8 -0
- package/types/environment/toonLabTreeMaterials.d.ts +7 -0
- package/types/environment/transparentMaterialProfile.d.ts +76 -0
- package/types/environment/urbanPropMaterial.d.ts +25 -0
- package/types/ground-shader/groundPrintLayer.d.ts +4 -0
- package/types/ground-shader/groundShaderMaterial.d.ts +11 -0
- package/types/ground-shader/groundShaderSettings.d.ts +90 -0
- package/types/ground-shader/index.d.ts +3 -0
- package/types/index.d.ts +1502 -0
- package/types/lighting/callMeSenseiLightingContract.d.ts +14 -0
- package/types/lighting/colorIntensity.d.ts +44 -0
- package/types/lighting/index.d.ts +12 -0
- package/types/lighting/lightDescriptors.d.ts +803 -0
- package/types/lighting/lightingCapabilities.d.ts +85 -0
- package/types/lighting/lightingDocuments.d.ts +140 -0
- package/types/lighting/lightingFixtures.d.ts +171 -0
- package/types/lighting/lightingGenerator.d.ts +403 -0
- package/types/lighting/lightingPresets.d.ts +264 -0
- package/types/lighting/lightingRuntime.d.ts +401 -0
- package/types/lighting/lightingStyle.d.ts +156 -0
- package/types/lighting/lightingSystem.d.ts +433 -0
- package/types/lighting/toonLabExport.d.ts +46 -0
- package/types/lighting/utils.d.ts +18 -0
- package/types/loaders/index.d.ts +1 -0
- package/types/post/index.d.ts +2 -0
- package/types/post/postGenerator.d.ts +282 -0
- package/types/post/postProcessing.d.ts +16 -0
- package/types/react/index.d.ts +1765 -0
- package/types/renderer/index.d.ts +1 -0
- package/types/renderer/rendererConfiguration.d.ts +8 -0
- package/types/rock-shader/index.d.ts +3 -0
- package/types/rock-shader/rockMaterial.d.ts +18 -0
- package/types/rock-shader/rockShaderRuntime.d.ts +8 -0
- package/types/rock-shader/rockShaderSettings.d.ts +170 -0
- package/types/rockgen/export/glbExport.d.ts +58 -0
- package/types/rockgen/heightfield/heightfieldErosion.d.ts +10 -0
- package/types/rockgen/heightfield/heightfieldPatch.d.ts +15 -0
- package/types/rockgen/heightfield/stylizedErosionSim.d.ts +41 -0
- package/types/rockgen/index.d.ts +11 -0
- package/types/rockgen/lod/index.d.ts +6 -0
- package/types/rockgen/lod/rockLodMetrics.d.ts +62 -0
- package/types/rockgen/lod/rockLodPlanner.d.ts +86 -0
- package/types/rockgen/lod/rockLodPolicy.d.ts +76 -0
- package/types/rockgen/lod/rockLodRuntime.d.ts +95 -0
- package/types/rockgen/lod/rockLodSimplifier.d.ts +15 -0
- package/types/rockgen/lod/rockLodValidation.d.ts +16 -0
- package/types/rockgen/mesh/meshAttributes.d.ts +32 -0
- package/types/rockgen/mesh/meshDocument.d.ts +40 -0
- package/types/rockgen/mesh/surfaceNets.d.ts +42 -0
- package/types/rockgen/noise/cellularNoise3.d.ts +24 -0
- package/types/rockgen/noise/prng.d.ts +16 -0
- package/types/rockgen/noise/simplexNoise3.d.ts +2 -0
- package/types/rockgen/noise/valueNoise3.d.ts +12 -0
- package/types/rockgen/rockDocument.d.ts +215 -0
- package/types/rockgen/rockHelpers.d.ts +2 -0
- package/types/rockgen/rockgenPresets.d.ts +10 -0
- package/types/rockgen/rockgenSettings.d.ts +531 -0
- package/types/rockgen/sdf/fieldCompiler.d.ts +20 -0
- package/types/rockgen/sdf/sculptEdits.d.ts +30 -0
- package/types/rockgen/sdf/sdfModifiers.d.ts +19 -0
- package/types/rockgen/sdf/sdfOps.d.ts +8 -0
- package/types/rockgen/sdf/sdfPrimitives.d.ts +22 -0
- package/types/runtime/index.d.ts +3 -0
- package/types/runtime/sceneCollisionRuntime.d.ts +94 -0
- package/types/runtime/sceneSurfaceRuntime.d.ts +90 -0
- package/types/runtime/sceneUpdateScheduler.d.ts +28 -0
- package/types/shaders-tsl/anime.d.ts +9 -0
- package/types/shaders-tsl/chunks/character-color.d.ts +6 -0
- package/types/shaders-tsl/chunks/character-highlights.d.ts +12 -0
- package/types/shaders-tsl/chunks/character-lighting.d.ts +20 -0
- package/types/shaders-tsl/chunks/character-material-maps.d.ts +18 -0
- package/types/shaders-tsl/chunks/character-roles.d.ts +21 -0
- package/types/shaders-tsl/chunks/character-scene-lights.d.ts +48 -0
- package/types/shaders-tsl/chunks/character-shadow-color.d.ts +5 -0
- package/types/shaders-tsl/chunks/character-skinning.d.ts +23 -0
- package/types/shaders-tsl/chunks/environment-color.d.ts +9 -0
- package/types/shaders-tsl/chunks/environment-debug.d.ts +24 -0
- package/types/shaders-tsl/chunks/environment-ground-field.d.ts +40 -0
- package/types/shaders-tsl/chunks/environment-lighting.d.ts +22 -0
- package/types/shaders-tsl/chunks/environment-state.d.ts +42 -0
- package/types/shaders-tsl/chunks/environment-sun-shadow.d.ts +19 -0
- package/types/shaders-tsl/chunks/foliage-fog.d.ts +21 -0
- package/types/shaders-tsl/chunks/normalized-hue.d.ts +1 -0
- package/types/shaders-tsl/chunks/pass-depth-color.d.ts +20 -0
- package/types/shaders-tsl/chunks/projected-water-caustics.d.ts +24 -0
- package/types/shaders-tsl/chunks/scene-depth-color-pass.d.ts +39 -0
- package/types/shaders-tsl/chunks/stylized-cloud-shadow.d.ts +9 -0
- package/types/shaders-tsl/chunks/vegetation-style.d.ts +60 -0
- package/types/shaders-tsl/chunks/water-color.d.ts +15 -0
- package/types/shaders-tsl/chunks/water-common.d.ts +9 -0
- package/types/shaders-tsl/chunks/water-foam.d.ts +8 -0
- package/types/shaders-tsl/chunks/water-lighting.d.ts +9 -0
- package/types/shaders-tsl/chunks/water-ripple.d.ts +8 -0
- package/types/shaders-tsl/chunks/water-shore-state.d.ts +7 -0
- package/types/shaders-tsl/chunks/water-waves.d.ts +18 -0
- package/types/shaders-tsl/chunks/world-noise.d.ts +4 -0
- package/types/shaders-tsl/environment-ao-overlay.d.ts +5 -0
- package/types/shaders-tsl/environment.d.ts +34 -0
- package/types/shaders-tsl/flower.d.ts +6 -0
- package/types/shaders-tsl/grass.d.ts +4 -0
- package/types/shaders-tsl/post-composite.d.ts +25 -0
- package/types/shaders-tsl/sky.d.ts +4 -0
- package/types/shaders-tsl/tree-leaf.d.ts +2 -0
- package/types/shaders-tsl/water-breaker.d.ts +15 -0
- package/types/shaders-tsl/water-kelp.d.ts +5 -0
- package/types/shaders-tsl/water-rain.d.ts +10 -0
- package/types/shaders-tsl/water-shore-state-simulation.d.ts +12 -0
- package/types/shaders-tsl/water-simulation.d.ts +5 -0
- package/types/shaders-tsl/water-splash.d.ts +12 -0
- package/types/shaders-tsl/water.d.ts +22 -0
- package/types/shaders-tsl/woody-surface.d.ts +3 -0
- package/types/sky/atmosphereDome.d.ts +2 -0
- package/types/sky/atmosphereParams.d.ts +185 -0
- package/types/sky/atmosphereScattering.d.ts +11 -0
- package/types/sky/atmosphereSky.d.ts +2 -0
- package/types/sky/cloudShadow.d.ts +68 -0
- package/types/sky/godRays.d.ts +5 -0
- package/types/sky/index.d.ts +18 -0
- package/types/sky/nightSky.d.ts +22 -0
- package/types/sky/renderLayers.d.ts +59 -0
- package/types/sky/sceneOverrideLayers.d.ts +10 -0
- package/types/sky/skyColor.d.ts +704 -0
- package/types/sky/skyDayCycle.d.ts +86 -0
- package/types/sky/skyParams.d.ts +3407 -0
- package/types/sky/skyPresets.d.ts +160 -0
- package/types/sky/skyQuality.d.ts +21 -0
- package/types/sky/skyQualityTiers.d.ts +223 -0
- package/types/sky/skyShaderSettings.d.ts +152 -0
- package/types/sky/skyStyleSnapshots.d.ts +11 -0
- package/types/sky/skySystem.d.ts +3 -0
- package/types/sky/skyTimeKeyframes.d.ts +230 -0
- package/types/sky/stylizedSky.d.ts +341 -0
- package/types/sky/sunDriver.d.ts +15 -0
- package/types/sky/timeOfDay.d.ts +145 -0
- package/types/styles/animeGameProfile.d.ts +27 -0
- package/types/styles/index.d.ts +17 -0
- package/types/styles/manufacturedStyleLabeling.d.ts +119 -0
- package/types/styles/sceneLayerDocuments.d.ts +145 -0
- package/types/styles/sceneLookComposition.d.ts +53 -0
- package/types/styles/sceneQualityApplication.d.ts +34 -0
- package/types/styles/sceneQualityProfiles.d.ts +13 -0
- package/types/styles/sceneStyleAudit.d.ts +80 -0
- package/types/styles/sceneStyleRuntime.d.ts +1782 -0
- package/types/styles/styleAdapters.d.ts +14 -0
- package/types/styles/styleApplication.d.ts +47 -0
- package/types/styles/styleBundle.d.ts +19 -0
- package/types/styles/styleBundleProvider.d.ts +44 -0
- package/types/styles/styleDomains.d.ts +18 -0
- package/types/styles/styleInspector.d.ts +59 -0
- package/types/styles/styleMaterialContract.d.ts +46 -0
- package/types/styles/styleMetadata.d.ts +11 -0
- package/types/styles/styleTargetDiscovery.d.ts +48 -0
- package/types/styles/styleTargetLabels.d.ts +32 -0
- package/types/styles/styleTargetMaterialCoverage.d.ts +20 -0
- package/types/styles/styleTransaction.d.ts +10 -0
- package/types/styles/styleTypes.d.ts +66 -0
- package/types/texgen/evaluateTexture.d.ts +40 -0
- package/types/texgen/index.d.ts +7 -0
- package/types/texgen/noise2.d.ts +46 -0
- package/types/texgen/textureAi.d.ts +6 -0
- package/types/texgen/textureGenerators.d.ts +261 -0
- package/types/texgen/texturePresets.d.ts +45 -0
- package/types/texgen/textureSettings.d.ts +121 -0
- package/types/texgen/textureThree.d.ts +13 -0
- package/types/toon/characterRenderPasses.d.ts +3 -0
- package/types/toon/index.d.ts +3 -0
- package/types/toon/settings/alphaSettings.d.ts +125 -0
- package/types/toon/settings/averageShadowSettings.d.ts +39 -0
- package/types/toon/settings/baseTextureSettings.d.ts +39 -0
- package/types/toon/settings/celShadeSettings.d.ts +37 -0
- package/types/toon/settings/contactShadowSettings.d.ts +30 -0
- package/types/toon/settings/eyeHighlightSettings.d.ts +55 -0
- package/types/toon/settings/faceLightingSettings.d.ts +32 -0
- package/types/toon/settings/furSettings.d.ts +23 -0
- package/types/toon/settings/glitterSettings.d.ts +43 -0
- package/types/toon/settings/hairHighlightSettings.d.ts +89 -0
- package/types/toon/settings/indirectLightSettings.d.ts +43 -0
- package/types/toon/settings/localLightSettings.d.ts +46 -0
- package/types/toon/settings/materialMapSettings.d.ts +86 -0
- package/types/toon/settings/outlineSettings.d.ts +125 -0
- package/types/toon/settings/perspectiveRemovalSettings.d.ts +14 -0
- package/types/toon/settings/rimLightSettings.d.ts +79 -0
- package/types/toon/settings/sceneShadowSettings.d.ts +32 -0
- package/types/toon/settings/selfShadowSettings.d.ts +44 -0
- package/types/toon/settings/shadowColorSettings.d.ts +77 -0
- package/types/toon/settings/skinToneSettings.d.ts +30 -0
- package/types/toon/settings/specularSettings.d.ts +96 -0
- package/types/toon/settings/stickerSettings.d.ts +40 -0
- package/types/toon/toonMaterialAdapter.d.ts +883 -0
- package/types/toon/toonSettings.d.ts +1182 -0
- package/types/vegetation/branchTree.d.ts +10 -0
- package/types/vegetation/callMeSenseiGrass.d.ts +8 -0
- package/types/vegetation/compiledTree.d.ts +75 -0
- package/types/vegetation/contactShadowField.d.ts +26 -0
- package/types/vegetation/flowerSpecies.d.ts +107 -0
- package/types/vegetation/grass.d.ts +4 -0
- package/types/vegetation/grassClump.d.ts +7 -0
- package/types/vegetation/grassPalettes.d.ts +29 -0
- package/types/vegetation/importedVegetationMaterial.d.ts +13 -0
- package/types/vegetation/index.d.ts +216 -0
- package/types/vegetation/legacyTreePresets.d.ts +22 -0
- package/types/vegetation/scatter.d.ts +12 -0
- package/types/vegetation/stylizedBush.d.ts +2 -0
- package/types/vegetation/stylizedFlower.d.ts +2 -0
- package/types/vegetation/stylizedFlowers.d.ts +8 -0
- package/types/vegetation/stylizedForest.d.ts +3 -0
- package/types/vegetation/stylizedGrass.d.ts +21 -0
- package/types/vegetation/stylizedTree.d.ts +19 -0
- package/types/vegetation/stylizedTreeFoliage.d.ts +18 -0
- package/types/vegetation/stylizedUnderstory.d.ts +50 -0
- package/types/vegetation/treeExport.d.ts +6 -0
- package/types/vegetation/treeSurfaceTextures.d.ts +72 -0
- package/types/vegetation/vegetationShaders.d.ts +74 -0
- package/types/version.d.ts +1 -0
- package/types/water/index.d.ts +1 -0
- package/types/water/sceneOverrideLayers.d.ts +16 -0
- package/types/water/water.d.ts +17 -0
- package/types/water/waterBreakerSystem.d.ts +46 -0
- package/types/water/waterCurrentField.d.ts +115 -0
- package/types/water/waterInteraction.d.ts +21 -0
- package/types/water/waterMaterial.d.ts +60 -0
- package/types/water/waterNearshorePhase.d.ts +5 -0
- package/types/water/waterRain.d.ts +17 -0
- package/types/water/waterRippleSimulation.d.ts +52 -0
- package/types/water/waterScenePasses.d.ts +70 -0
- package/types/water/waterSettings.d.ts +648 -0
- package/types/water/waterShoreMaterial.d.ts +3 -0
- package/types/water/waterShoreStateField.d.ts +2 -0
- package/types/water/waterSplashSystem.d.ts +2 -0
- package/types/water/waterStageSettings.d.ts +9 -0
- package/types/water/waterSurface.d.ts +2 -0
- package/types/water/waterUnderwaterAtmosphere.d.ts +103 -0
- package/types/water/waterVegetation.d.ts +16 -0
- package/types/worldCollision.d.ts +22 -0
- package/AGENTS.md +0 -254
- package/ATTRIBUTION.md +0 -78
- package/docs/characters.md +0 -144
- package/docs/debug-panel.md +0 -126
- package/docs/docs.css +0 -589
- package/docs/environment.md +0 -186
- package/docs/getting-started.md +0 -180
- package/docs/index.html +0 -14
- package/docs/lab-architecture.md +0 -100
- package/docs/lighting.md +0 -825
- package/docs/main.jsx +0 -739
- package/docs/mcp.md +0 -97
- package/docs/post-processing.md +0 -98
- package/docs/settings-reference.md +0 -1878
- package/docs/shader-constants.md +0 -77
- package/docs/sky.md +0 -182
- package/docs/style-labs.md +0 -309
- package/docs/texture-lab.md +0 -135
- package/docs/toon-shading.md +0 -183
- package/docs/tsl-conventions.md +0 -167
- package/docs/vegetation-sky.md +0 -275
- package/docs/water.md +0 -430
- package/docs/weather.md +0 -200
- package/docs/world-scale.md +0 -111
- package/mcp/style-lab-tools.mjs +0 -371
- package/src/ambientfx/INTEGRATION.md +0 -164
- package/src/ambientfx/ambientFxPresets.js +0 -83
- package/src/ambientfx/ambientFxSettings.js +0 -368
- package/src/ambientfx/emitters.js +0 -169
- package/src/ambientfx/index.js +0 -5
- package/src/ambientfx/particleBackbone.js +0 -493
- package/src/ambientfx/stylizedAmbientFx.js +0 -450
- package/src/biome/biomeGenerator.js +0 -385
- package/src/biome/biomeRuntime.js +0 -299
- package/src/biome/index.js +0 -2
- package/src/buildinggen/buildingAsset.js +0 -44
- package/src/buildinggen/buildingGrammar.js +0 -311
- package/src/buildinggen/buildingMesh.js +0 -451
- package/src/buildinggen/buildingPresets.js +0 -46
- package/src/buildinggen/buildingRecipe.js +0 -100
- package/src/buildinggen/buildingSettings.js +0 -238
- package/src/buildinggen/index.js +0 -6
- package/src/camera/cameraDirector.js +0 -157
- package/src/camera/cameraGenerator.js +0 -367
- package/src/camera/cameraRig.js +0 -570
- package/src/camera/cameraSettings.js +0 -236
- package/src/camera/index.js +0 -7
- package/src/catalog/builtinEntries.js +0 -245
- package/src/catalog/catalog.js +0 -210
- package/src/catalog/index.js +0 -3
- package/src/core/shaderBackend.js +0 -24
- package/src/debrisgen/debrisFields.js +0 -544
- package/src/debrisgen/debrisGenerator.js +0 -1929
- package/src/debrisgen/debrisPalettes.js +0 -71
- package/src/debrisgen/debrisPhysics.js +0 -198
- package/src/debrisgen/debrisPresets.js +0 -162
- package/src/debrisgen/debrisSettings.js +0 -333
- package/src/debrisgen/debrisTextures.js +0 -380
- package/src/debrisgen/index.js +0 -5
- package/src/debug/fieldValues.js +0 -95
- package/src/debug/index.js +0 -7
- package/src/debug/settingsPanel.js +0 -170
- package/src/fauna/INTEGRATION.md +0 -174
- package/src/fauna/boids.js +0 -861
- package/src/fauna/faunaBodies.js +0 -492
- package/src/fauna/faunaPresets.js +0 -52
- package/src/fauna/faunaSettings.js +0 -525
- package/src/fauna/index.js +0 -5
- package/src/fauna/stylizedFauna.js +0 -395
- package/src/game-feel/gameFeelGenerator.js +0 -402
- package/src/game-feel/gameFeelRuntime.js +0 -549
- package/src/game-feel/index.js +0 -2
- package/src/motion/index.js +0 -5
- package/src/motion/motionClip.js +0 -441
- package/src/motion/motionController.js +0 -628
- package/src/motion/motionDocuments.js +0 -225
- package/src/motion/motionGraph.js +0 -307
- package/src/motion/motionSettings.js +0 -222
- package/src/pathgen/index.js +0 -7
- package/src/pathgen/pathBridge.js +0 -232
- package/src/pathgen/pathPresets.js +0 -35
- package/src/pathgen/pathRibbon.js +0 -410
- package/src/pathgen/pathRouter.js +0 -380
- package/src/pathgen/pathSettings.js +0 -335
- package/src/pathgen/pathTextures.js +0 -123
- package/src/pathgen/stylizedPaths.js +0 -453
- package/src/propgen/generatorsWave1.js +0 -379
- package/src/propgen/generatorsWave2.js +0 -462
- package/src/propgen/index.js +0 -5
- package/src/propgen/propAsset.js +0 -323
- package/src/propgen/propParts.js +0 -170
- package/src/propgen/propPlacement.js +0 -459
- package/src/propgen/propPresets.js +0 -82
- package/src/propgen/propSettings.js +0 -395
- package/src/soundscape/index.js +0 -4
- package/src/soundscape/soundscapeGenerator.js +0 -179
- package/src/soundscape/soundscapeRuntime.js +0 -806
- package/src/soundscape/soundscapeSettings.js +0 -292
- package/src/stylizedTerrain.js +0 -631
- package/src/stylizedWorld.js +0 -903
- package/src/vegetation/treeRecipe.js +0 -647
- package/src/vfxgen/INTEGRATION.md +0 -145
- package/src/vfxgen/core/burstBackbone.js +0 -380
- package/src/vfxgen/core/projectileCore.js +0 -92
- package/src/vfxgen/core/spriteShapes.js +0 -98
- package/src/vfxgen/core/trailRibbon.js +0 -272
- package/src/vfxgen/core/vfxRandom.js +0 -29
- package/src/vfxgen/effects/emitHelpers.js +0 -37
- package/src/vfxgen/effects/magicEffects.js +0 -162
- package/src/vfxgen/effects/movementEffects.js +0 -87
- package/src/vfxgen/effects/weaponEffects.js +0 -118
- package/src/vfxgen/index.js +0 -18
- package/src/vfxgen/moves/moveController.js +0 -146
- package/src/vfxgen/moves/moveLibrary.js +0 -335
- package/src/vfxgen/vfxPresets.js +0 -98
- package/src/vfxgen/vfxSettings.js +0 -384
- package/src/vfxgen/vfxSystem.js +0 -449
- package/src/vfxgen/weapons/stylizedWeapons.js +0 -137
- package/src/villagegen/index.js +0 -4
- package/src/villagegen/stylizedVillage.js +0 -490
- package/src/villagegen/villageArchetypes.js +0 -160
- package/src/villagegen/villageNames.js +0 -40
- package/src/villagegen/villageSites.js +0 -105
- package/src/weather/index.js +0 -6
- package/src/weather/weatherPrecipitation.js +0 -221
- package/src/weather/weatherPresets.js +0 -258
- package/src/weather/weatherSettings.js +0 -269
- package/src/weather/weatherSystem.js +0 -871
- package/src/worldMinimap.js +0 -214
- package/src/worldPresets.js +0 -125
package/agents/README.md
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# ToonLab Agent Resources
|
|
2
|
+
|
|
3
|
+
These are downloadable AI coding agent resources for developers using ToonLab
|
|
4
|
+
runtime features in their own apps. They are not maintenance instructions for
|
|
5
|
+
this repository.
|
|
6
|
+
|
|
7
|
+
The recommended agent workflow starts from an existing scene: apply focused
|
|
8
|
+
shaders/vegetation/water/post, find assets through Gallery or MCP, and author
|
|
9
|
+
bounded portable outputs. `outdoor-world`, `karst-cliff-construction`, and
|
|
10
|
+
current Sky/Cloud guidance are experimental research/qualification resources,
|
|
11
|
+
not a promise of reliable one-shot scene construction.
|
|
12
|
+
|
|
13
|
+
Layout:
|
|
14
|
+
|
|
15
|
+
- `codex/AGENTS.md` — shared Codex-style runtime usage guide.
|
|
16
|
+
- `claude/CLAUDE.md` — Claude Code wrapper for the shared guide.
|
|
17
|
+
- `cursor/toonlab.mdc` — Cursor rule file; copy it to `.cursor/rules/` in a
|
|
18
|
+
project if desired.
|
|
19
|
+
- `skills/codex/` — Codex-oriented feature skills.
|
|
20
|
+
- `skills/claude/` — Claude-oriented feature skills.
|
|
21
|
+
- `references/` — public anime art direction, style routing, MCP discovery,
|
|
22
|
+
runtime-boundary, sourcing-policy, and custom-gap contracts used by every
|
|
23
|
+
agent integration.
|
|
24
|
+
|
|
25
|
+
Recommended feature skills (start with `game-dev` for existing-scene
|
|
26
|
+
integration and `asset-sourcing` for Gallery/MCP work):
|
|
27
|
+
|
|
28
|
+
- `asset-sourcing`
|
|
29
|
+
- `environment`
|
|
30
|
+
- `game-dev`
|
|
31
|
+
- `post-processing`
|
|
32
|
+
- `rock-ground-shaders`
|
|
33
|
+
- `rockgen`
|
|
34
|
+
- `style-presets`
|
|
35
|
+
- `toon-shading`
|
|
36
|
+
- `vegetation-sky` (vegetation path; its Sky/Cloud path is experimental)
|
|
37
|
+
- `visual-verification`
|
|
38
|
+
- `water`
|
|
39
|
+
|
|
40
|
+
Experimental or host-owned boundary skills:
|
|
41
|
+
|
|
42
|
+
- `camera`
|
|
43
|
+
- `game-feel`
|
|
44
|
+
- `karst-cliff-construction`
|
|
45
|
+
- `lighting`
|
|
46
|
+
- `outdoor-world`
|
|
47
|
+
- `weather`
|
|
48
|
+
|
|
49
|
+
These text-only resources ship with the npm package beside the runtime source.
|
|
50
|
+
The package does not include ToonLab lab applications, examples, review
|
|
51
|
+
fixtures, models, textures, or other redistributed visual/media assets.
|
|
52
|
+
First-party grass geometry and materials are generated by runtime code; the
|
|
53
|
+
optional CC0 mannequin resolves from immutable public R2 rather than npm.
|
|
54
|
+
|
|
55
|
+
All integrations share one non-optional authored-asset rule: every renderable
|
|
56
|
+
root needs a stable target ID/domain, and every material slot needs a stable
|
|
57
|
+
material ID plus semantic role in the versioned ToonLab material contract.
|
|
58
|
+
Root-only labels do not make multi-material assets bundle-ready. Strict mode
|
|
59
|
+
blocks incomplete assets; advisory mode must report them as incomplete.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# ToonLab Anime-Game Art Direction
|
|
2
|
+
|
|
3
|
+
ToonLab is for anime-style games, characters, and environments. Do not treat
|
|
4
|
+
"stylized" as permission to drift toward generic low-poly, western cartoon,
|
|
5
|
+
pixel-art, or untreated photoreal rendering.
|
|
6
|
+
|
|
7
|
+
The selected style bundle is the visual authority. Its `artDirection` must
|
|
8
|
+
declare `family: "anime-game"`, `rendering: "cel-shaded"`, and both character
|
|
9
|
+
and environment subjects.
|
|
10
|
+
|
|
11
|
+
Evaluate every scene at gameplay camera distance:
|
|
12
|
+
|
|
13
|
+
- Group values into intentional light and shadow shapes.
|
|
14
|
+
- Preserve readable silhouettes and important material boundaries.
|
|
15
|
+
- Reduce high-frequency texture detail deliberately; do not merely blur it.
|
|
16
|
+
- Coordinate shadow color, atmosphere, sky, water, and post-processing.
|
|
17
|
+
- Use material-aware graphic highlights for skin, hair, cloth, metal, leaves,
|
|
18
|
+
rock, ground, and water rather than one universal specular response.
|
|
19
|
+
- Keep imported PBR maps as useful source information, then route the asset
|
|
20
|
+
through its owning ToonLab shader.
|
|
21
|
+
|
|
22
|
+
If an asset or renderer cannot meet this direction with a supported shader,
|
|
23
|
+
record a custom integration note instead of silently accepting a visually inconsistent
|
|
24
|
+
fallback.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Asset-Sourcing Policy
|
|
2
|
+
|
|
3
|
+
Import from `@call-me-sensei/toonlab/asset-policy`.
|
|
4
|
+
|
|
5
|
+
Policies use one of three modes:
|
|
6
|
+
|
|
7
|
+
- `strict`: a candidate is usable only when its domain rule explicitly lists
|
|
8
|
+
the candidate's source class.
|
|
9
|
+
- `advisory`: preferred sources are ranked first; other registered sources
|
|
10
|
+
remain usable with a warning.
|
|
11
|
+
- `open`: every registered source class is allowed, with provenance retained.
|
|
12
|
+
|
|
13
|
+
Registered source classes are `project-library`, `toonlab-library`,
|
|
14
|
+
`toonlab-gallery`, `external-cc0`, `procedural`, and `custom`.
|
|
15
|
+
|
|
16
|
+
No policy means “ask, then advisory.” It never means strict and it never gives
|
|
17
|
+
an agent permission to claim that a sourcing requirement was satisfied.
|
|
18
|
+
|
|
19
|
+
The strict Call Me Sensei acceptance fixture allows rocks only from the
|
|
20
|
+
project library, ToonLab library, or ToonLab gallery. Trees may also use the
|
|
21
|
+
package's supported procedural legacy set or `BranchTree`. Other custom trees must be
|
|
22
|
+
reviewed and admitted to one of the approved libraries before that fixture can
|
|
23
|
+
use them.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Custom integration records
|
|
2
|
+
|
|
3
|
+
Custom work should be traceable instead of becoming an invisible fallback. Before adding it, use
|
|
4
|
+
`record_asset_gap` or `createAssetGapRecord()` and record:
|
|
5
|
+
|
|
6
|
+
- Target and rendering domain.
|
|
7
|
+
- Relevant style-bundle slot.
|
|
8
|
+
- MCP searches, queries, candidate IDs, and rejection reasons.
|
|
9
|
+
- Why permitted library, gallery, external, or procedural routes failed.
|
|
10
|
+
- What custom model, texture, shader, or adapter was introduced.
|
|
11
|
+
- Provenance, license, generator/recipe/seed where relevant, and the decision owner.
|
|
12
|
+
- Why the customization exists and what your team may want to revisit later.
|
|
13
|
+
|
|
14
|
+
The MCP server maintains `.toonlab/reports/style-asset-gaps.json` and the
|
|
15
|
+
project-level `TOONLAB_ASSET_GAPS.md`. Keep both with your project whenever it
|
|
16
|
+
uses custom rendering or content outside the supported library.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Geology assembly playbook
|
|
2
|
+
|
|
3
|
+
Use this reference with `karst-cliff-construction` and `outdoor-world`. It
|
|
4
|
+
describes reusable landform craft without depending on project-specific
|
|
5
|
+
helpers, asset IDs, or a frozen catalog count.
|
|
6
|
+
|
|
7
|
+
## 1. Establish the parent mass
|
|
8
|
+
|
|
9
|
+
Approve an untextured continuous terrain/heightfield silhouette first:
|
|
10
|
+
headlands, bays, terraces, tower envelopes, channel, beach, and submerged bed.
|
|
11
|
+
Catalog rocks dress and articulate that parent mass; they must not be the only
|
|
12
|
+
thing preventing the world from reading as hollow.
|
|
13
|
+
|
|
14
|
+
Reject before dressing when:
|
|
15
|
+
|
|
16
|
+
- the hero silhouette is wrong;
|
|
17
|
+
- the channel or beach footprint is clogged;
|
|
18
|
+
- the cliff is a thin wall with no top/underwater continuation;
|
|
19
|
+
- separate towers overlap into one clump from an approved camera.
|
|
20
|
+
|
|
21
|
+
## 2. Select donors by visible role
|
|
22
|
+
|
|
23
|
+
Query the connected ToonLab OSS or Pro catalog and shortlist with positive
|
|
24
|
+
`dimensionsMeters`, taxonomy, scale class, and immutable preview/asset URLs.
|
|
25
|
+
Family names and tags are search hints, not visual proof. Review contact sheets
|
|
26
|
+
or finalists under one neutral material and camera azimuth.
|
|
27
|
+
|
|
28
|
+
Useful morphology:
|
|
29
|
+
|
|
30
|
+
| Role | Visible requirement |
|
|
31
|
+
|---|---|
|
|
32
|
+
| Primary face | Broad load-bearing plane, gravity-aligned relief, no prop-like outline |
|
|
33
|
+
| Corner/termination | A turn or return face that buries cleanly into the parent mass |
|
|
34
|
+
| Bedding ledge | A real horizontal lip with enough depth to cast a recess shadow |
|
|
35
|
+
| Buttress/wedge | A seam bridge whose rear and toe can be buried |
|
|
36
|
+
| Waterline notch | Rounded or undercut lip that continues below the surface |
|
|
37
|
+
| Talus | Small jointed collapse block; free rotation is appropriate only here |
|
|
38
|
+
|
|
39
|
+
Choose target dimensions in metres from the published native dimensions.
|
|
40
|
+
Reject missing or invalid dimensions before download. Avoid solving an entire
|
|
41
|
+
wall by stretching one small donor; report mean/max scale and worst axis ratio
|
|
42
|
+
per structural role.
|
|
43
|
+
|
|
44
|
+
## 3. Build courses, not rubble
|
|
45
|
+
|
|
46
|
+
Primary faces share a near-common up axis and facing. Vary crop, burial,
|
|
47
|
+
neighbour overlap, tier, yaw silhouette, and moderate scale; do not tumble
|
|
48
|
+
load-bearing panels. Free three-axis tumbling belongs to collapse products.
|
|
49
|
+
|
|
50
|
+
Starting burial ranges, to be verified in silhouette:
|
|
51
|
+
|
|
52
|
+
- primary faces: bury roughly 30–60% of module depth;
|
|
53
|
+
- bedding ledges: bury the rear majority so only the lip projects;
|
|
54
|
+
- tower cores: seat the footing/course overlap, not most of the tower;
|
|
55
|
+
- talus: rest in contact and bury enough to remove floating toes.
|
|
56
|
+
|
|
57
|
+
Build in this order:
|
|
58
|
+
|
|
59
|
+
1. primary faces at noses, re-entrants, terminations, and terrace breaks;
|
|
60
|
+
2. bridging ledges, buttresses, crevice wedges, and recessed corbels;
|
|
61
|
+
3. waterline/submerged continuation and restrained talus;
|
|
62
|
+
4. vegetation caps and story dressing.
|
|
63
|
+
|
|
64
|
+
If a placement helper automatically splits an oversized request into a stack,
|
|
65
|
+
make that result explicit and refusable. Subdivision must not introduce yaw,
|
|
66
|
+
pitch, or roll jitter unless the caller deliberately requests a tumbled role.
|
|
67
|
+
|
|
68
|
+
## 4. Publish shared formation contracts
|
|
69
|
+
|
|
70
|
+
Sibling modules must consume the same world-space values rather than derive
|
|
71
|
+
private approximations:
|
|
72
|
+
|
|
73
|
+
- parent height/envelope;
|
|
74
|
+
- water level and submerged bed;
|
|
75
|
+
- bedding elevation ladder;
|
|
76
|
+
- visible face plane/standoff;
|
|
77
|
+
- cliff-top and vegetation-cap polygons;
|
|
78
|
+
- fall lips, landing pools, and exclusion zones.
|
|
79
|
+
|
|
80
|
+
One useful bedding ladder is `base + courseIndex * spacing`; derive `base` and
|
|
81
|
+
`spacing` from the terrain terracing/style rather than copying the qualifying
|
|
82
|
+
scene's numbers. Align visible beds across neighbouring formations.
|
|
83
|
+
|
|
84
|
+
## 5. Unify the material treatment
|
|
85
|
+
|
|
86
|
+
Use one intentional parent lithology. The rock shader can replace source
|
|
87
|
+
albedo and apply one projected treatment across morphologically compatible
|
|
88
|
+
donors, but it cannot change incompatible geometry into the same geology.
|
|
89
|
+
Record any cross-taxonomy donor override and judge the result from silhouette,
|
|
90
|
+
bedding, and surface response.
|
|
91
|
+
|
|
92
|
+
Prefer one `applyRockShader(formationRoot, settings)` call. Verify the report's
|
|
93
|
+
texture source and shadow defaults. Use `setRockShaderSceneState` for the
|
|
94
|
+
current water level so the wet band follows the shoreline.
|
|
95
|
+
|
|
96
|
+
## 6. Prevent recognizable repetition
|
|
97
|
+
|
|
98
|
+
Repeated asset ids are normal modular modelling. Repeated camera-facing
|
|
99
|
+
silhouettes are the defect. For nearby copies vary at least three of: visible
|
|
100
|
+
crop/burial, tier, neighbour overlap, meaningful scale, and camera-facing yaw.
|
|
101
|
+
Never use regular spacing or a visible kit row.
|
|
102
|
+
|
|
103
|
+
Placement metrics are rejection floors. They cannot prove that the rendered
|
|
104
|
+
formation reads as one mass.
|
|
105
|
+
|
|
106
|
+
## 7. Verify before approval
|
|
107
|
+
|
|
108
|
+
- Wait for application readiness and a stable rendered scene graph.
|
|
109
|
+
- Capture hero, wide, close, flyover, and top-down views.
|
|
110
|
+
- Isolate terrain, rock formation, water, and lighting when assigning a defect.
|
|
111
|
+
- Scan world-space extents for accidental slabs, dams, or oversized caps.
|
|
112
|
+
- Report module counts, donor dimensions, transformed dimensions, burial,
|
|
113
|
+
per-role scale statistics, and active LODs.
|
|
114
|
+
- Squint at the silhouette: if individual boulders or a sawtooth crest remain
|
|
115
|
+
legible, the cliff is still a pile.
|
|
116
|
+
|
|
117
|
+
Automated checks may reject gaps, invalid scale, and repeated transforms. Only
|
|
118
|
+
rendered multi-view evidence can approve the formation.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# MCP Asset Discovery
|
|
2
|
+
|
|
3
|
+
Use MCP for discovery, provenance, shared workspace state, and policy-aware
|
|
4
|
+
imports. Use runtime package APIs for shader application and deterministic
|
|
5
|
+
runtime construction.
|
|
6
|
+
|
|
7
|
+
## Detect the available ToonLab surface
|
|
8
|
+
|
|
9
|
+
Inspect the connected server's tool names before calling anything. Do not
|
|
10
|
+
assume the developer has ToonLab Pro, and do not assume a local OSS checkout.
|
|
11
|
+
|
|
12
|
+
- **ToonLab OSS local MCP** exposes `get_workspace_info`,
|
|
13
|
+
`search_cc0_assets`, `get_cc0_asset`, and `import_cc0_asset`. Its
|
|
14
|
+
`search_assets` searches built-in procedural entries, the complete official
|
|
15
|
+
R2-backed Gallery catalog, and the disk-backed project/library/workspace.
|
|
16
|
+
Use `source: 'official'` for released assets and follow `nextOffset` until
|
|
17
|
+
null.
|
|
18
|
+
- **ToonLab Pro remote MCP** exposes `get_runtime_guide`,
|
|
19
|
+
`search_public_gallery`, and `get_toonlab_asset`. Its `search_assets`
|
|
20
|
+
searches indexed external open assets; first-party rocks/trees and community
|
|
21
|
+
work are searched through `search_public_gallery`.
|
|
22
|
+
- **Both connected** is valid. Qualify calls by MCP server name because common
|
|
23
|
+
names such as `search_assets`, `get_asset`, `list_my_creations`, and
|
|
24
|
+
`validate_asset_candidate` have surface-specific schemas. Search the local
|
|
25
|
+
project/library first, then the Pro gallery and cloud library.
|
|
26
|
+
|
|
27
|
+
The absence of a surface-specific tool is not an asset failure. Continue with
|
|
28
|
+
the surface the developer actually has and report which surface was used.
|
|
29
|
+
|
|
30
|
+
## Shared start
|
|
31
|
+
|
|
32
|
+
1. Call the available server's `get_anime_game_profile` and load the selected
|
|
33
|
+
style bundle.
|
|
34
|
+
2. Locate the project's asset-sourcing policy. If it is absent, ask the
|
|
35
|
+
developer. Until answered, continue library-first in advisory mode and
|
|
36
|
+
record that the decision is unresolved.
|
|
37
|
+
3. Reuse accepted project/library content before public or generated content.
|
|
38
|
+
|
|
39
|
+
## ToonLab OSS local sequence
|
|
40
|
+
|
|
41
|
+
1. Call `list_my_creations` with the task's text and exact tag filters, then
|
|
42
|
+
`search_assets` with `source: 'library'`,
|
|
43
|
+
`'workspace'`, `'workspace-storage'`, or `'builtin'` as appropriate. If no
|
|
44
|
+
accepted local entry closes the role, call it with `source: 'official'` to
|
|
45
|
+
search the released Gallery through the local database. Follow
|
|
46
|
+
`nextOffset` until null so all matching official assets remain reachable.
|
|
47
|
+
2. Call local `get_asset` for the complete recipe/file descriptor.
|
|
48
|
+
3. When policy permits external CC0, call `search_cc0_assets`, then
|
|
49
|
+
`get_cc0_asset`; call `import_cc0_asset` only after selection to download
|
|
50
|
+
bytes plus their provenance manifest into `.toonlab/imports/`.
|
|
51
|
+
4. Validate with local schema:
|
|
52
|
+
`validate_asset_candidate({ policy, candidate: { domain, sourceClass } })`.
|
|
53
|
+
5. Local `generate_asset` creates deterministic procedural recipes. With local
|
|
54
|
+
provider keys configured, `generate_ai_asset` exposes image generation,
|
|
55
|
+
Meshy 7 image/multiview-to-3D, and Text → selected image model → Meshy 7.
|
|
56
|
+
Call `get_generation_capabilities` first, then poll with
|
|
57
|
+
`get_generation_job(s)` and persist a succeeded model with
|
|
58
|
+
`save_generated_asset`. This uses the developer's keys and no ToonLab credits.
|
|
59
|
+
|
|
60
|
+
## ToonLab Pro remote sequence
|
|
61
|
+
|
|
62
|
+
1. Call Pro `list_my_creations` with `query`, `tags`, and/or `types` for the
|
|
63
|
+
signed-in cloud library, following `nextOffset` until null.
|
|
64
|
+
2. Call `search_public_gallery` with its unified default. For first-party
|
|
65
|
+
rocks/trees, use `source: 'toonlab'`, `catalog: 'rock' | 'tree'`, and keep
|
|
66
|
+
following `nextOffset`.
|
|
67
|
+
3. Use Pro `search_assets` only for indexed external open assets, followed by
|
|
68
|
+
Pro `get_asset`. Pro has no `search_cc0_assets` or `import_cc0_asset`; the
|
|
69
|
+
selected download URL and provenance are returned by `get_asset`.
|
|
70
|
+
4. Validate with Pro schema:
|
|
71
|
+
`validate_asset_candidate({ stable_id, source_class, asset_kind, domain,
|
|
72
|
+
license, provenance, policy })`.
|
|
73
|
+
5. Managed generation requires an approved policy, exhausted discovery,
|
|
74
|
+
`record_asset_gap`, and `get_generation_capabilities` before any
|
|
75
|
+
consequential credit-spending call.
|
|
76
|
+
|
|
77
|
+
Follow `nextOffset` until null on both OSS and Pro catalog searches; never
|
|
78
|
+
interpret one response page as the complete candidate set.
|
|
79
|
+
|
|
80
|
+
## Common completion rules
|
|
81
|
+
|
|
82
|
+
- Treat a saved Library object as a reusable asset, not an invisible draft.
|
|
83
|
+
When saving, assign up to ten stable lowercase slug tags covering semantic
|
|
84
|
+
role, material/asset family, location or biome, project, and lifecycle state.
|
|
85
|
+
Do not stuff prose into tags, and do not rely on a filename as the only
|
|
86
|
+
discovery key.
|
|
87
|
+
|
|
88
|
+
- For first-party rocks on either surface, shortlist from search metadata
|
|
89
|
+
before loading binaries. Require positive `dimensionsMeters.width`,
|
|
90
|
+
`.height`, and `.depth`, then compare family/profile, scale class, category,
|
|
91
|
+
subcategory, geology, and surface. Call `get_asset` (OSS) or
|
|
92
|
+
`get_toonlab_asset` (Pro) only for finalists that need the full recipe,
|
|
93
|
+
lineage, and immutable file list. Never render a GLB merely to discover its
|
|
94
|
+
catalog size.
|
|
95
|
+
- Inspect provenance, license, semantic suitability, `animeStyleSupport`, and
|
|
96
|
+
the policy decision before selection. A strict denial means the candidate
|
|
97
|
+
must not be selected, imported, or generated.
|
|
98
|
+
- Search results may show denied candidates so the user can see what was
|
|
99
|
+
considered; visibility is not approval.
|
|
100
|
+
- Use generation only when the policy permits it and discovery did not close
|
|
101
|
+
the named gap.
|
|
102
|
+
- Record a custom integration note before introducing custom models, textures, shaders, or
|
|
103
|
+
adapters. The OSS and Pro `record_asset_gap` argument names differ, so use
|
|
104
|
+
the schema advertised by the connected server.
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# ToonLab Runtime Boundary
|
|
2
|
+
|
|
3
|
+
ToonLab is recommended for stylizing and populating supplied anime-game
|
|
4
|
+
scene content. Prefer focused imports from these production-oriented areas:
|
|
5
|
+
|
|
6
|
+
- `toon`, `toon-settings`, `character`
|
|
7
|
+
- `environment`, `ground-shader`, `rock-shader`
|
|
8
|
+
- `vegetation`, `vegetation-shaders`, `grass`, `grass-palettes`
|
|
9
|
+
- `water`, `water-settings`
|
|
10
|
+
- `lighting`
|
|
11
|
+
- `post`, `post-processing`
|
|
12
|
+
- `rockgen`, `texgen`, `assetlib`
|
|
13
|
+
- `styles`, `asset-policy`, `loaders`
|
|
14
|
+
|
|
15
|
+
`sky` and `cloud` are public because they are owned by the live Sky, Cloud, and
|
|
16
|
+
Sky & Cloud Labs. Weather, climate, debris, ambient-effects, fauna, debug, and
|
|
17
|
+
root terrain/world helpers are not package entry points in this release.
|
|
18
|
+
Repository examples may exercise them locally, but package users must not
|
|
19
|
+
import them.
|
|
20
|
+
|
|
21
|
+
For characters, prefer `createCharacterRuntime()` from `./character`. It owns
|
|
22
|
+
format loading, texture readiness, foot-origin fitting, toon conversion,
|
|
23
|
+
humanoid rig resolution, native clips or packaged locomotion fallback, mixer
|
|
24
|
+
updates, VRM updates, and disposal. The host still owns movement intent,
|
|
25
|
+
dynamic physics, ground contact, and camera behavior. The walkable runtime
|
|
26
|
+
automatically consumes the static collision service bound by
|
|
27
|
+
`createSceneStyleRuntime()`. Do not recreate this pipeline inside individual
|
|
28
|
+
scenes or Labs.
|
|
29
|
+
|
|
30
|
+
The selected style bundle coordinates visual settings and supported scene-look
|
|
31
|
+
systems; it does not construct or classify a scene. Lighting is a supported
|
|
32
|
+
bundle domain through `createSceneStyleRuntime()`. VFX, camera behavior,
|
|
33
|
+
game-feel behavior, and renderer configuration remain unsupported bundle
|
|
34
|
+
domains owned by the host game.
|
|
35
|
+
When a project-local implementation changes the selected anime treatment,
|
|
36
|
+
treat it as a custom adapter and record it in the custom-gap report.
|
|
37
|
+
|
|
38
|
+
The `grass` entry owns two deterministic first-party Call Me Sensei clump
|
|
39
|
+
recipes, three generated LODs per variant, the procedural material, and the
|
|
40
|
+
async-compatible `createCallMeSenseiGrassField()` default factory. It ships no
|
|
41
|
+
mesh or texture files. `RetainedGrassClumpField` remains the generic container
|
|
42
|
+
for caller-supplied, properly licensed geometry and materials.
|
|
43
|
+
|
|
44
|
+
The default factory resolves the `call_me_sensei_clump` meadow preset: 40
|
|
45
|
+
upright overlapping primary blades, full ground-field adoption, watercolor
|
|
46
|
+
lift and translucent stroke layering, and a final LOD without an implicit hard
|
|
47
|
+
cull. Sparse generic blades and repository comparison media are not equivalent
|
|
48
|
+
fallbacks.
|
|
49
|
+
|
|
50
|
+
Applying the Call Me Sensei bundle resolves the same grass field response. The
|
|
51
|
+
scene style runtime creates and updates the ground-field pass automatically, so
|
|
52
|
+
grass roots sample the actual labeled Ground Shader output without host-side
|
|
53
|
+
color duplication.
|
|
54
|
+
|
|
55
|
+
The `environment` entry accepts the same explicit style/scenario routing used
|
|
56
|
+
by the preset registry:
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
await applyEnvironmentShader(root, {
|
|
60
|
+
preset: 'call_me_sensei',
|
|
61
|
+
scenario: 'exteriorDay',
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
This is equivalent to spreading
|
|
66
|
+
`resolveEnvironmentPreset('call_me_sensei', 'exteriorDay')` into the adapter.
|
|
67
|
+
Named preset values establish the baseline; explicit `settings`, `features`,
|
|
68
|
+
`parameters`, and `materialLook` overrides take precedence. Select the preset
|
|
69
|
+
before authoring overrides instead of retyping its numeric fields.
|
|
70
|
+
|
|
71
|
+
The `vegetation` entry's scatter helpers place across the ground heightfield —
|
|
72
|
+
`scatterInRect`, `scatterGrassAround`, `scatterForest` — taking `(x, z)` and
|
|
73
|
+
sampling `y` from a host `heightAt`. That contract cannot express a surface
|
|
74
|
+
which is not single-valued in `y`, such as a cliff cap or a ledge with terrain
|
|
75
|
+
both above and below it.
|
|
76
|
+
|
|
77
|
+
For those, use `scatterOnSurface({ surfaces, density | count, minSpacing,
|
|
78
|
+
mask, weightAt, normalBlend })`. Each surface is a disc in world space —
|
|
79
|
+
`{ center, radius, normal?, seed? }`, the shape a rock or cliff module already
|
|
80
|
+
publishes for its caps and ledges. Spacing is measured in 3D, so stacked caps
|
|
81
|
+
do not reject each other's points. Each surface draws from its own
|
|
82
|
+
deterministic stream, so adding or removing one does not reshuffle the others.
|
|
83
|
+
Returned placements carry `normal`, `forward` and `yaw` alongside `x/y/z`, so
|
|
84
|
+
an aligned field no longer has to derive orientation per placement. The
|
|
85
|
+
existing `(x, z)` mask factories and `combineMasks` compose unchanged.
|
|
86
|
+
|
|
87
|
+
The `ground-shader` entry also owns bounded transient print fields for sand,
|
|
88
|
+
dirt, and sufficiently deep snow. Create a `GroundPrintLayer`, pass it as the
|
|
89
|
+
material's `printLayer`, and emit contact events with `stamp()`. The portable
|
|
90
|
+
Ground Shader document saves only `printResponse`; stamp history, snow depth,
|
|
91
|
+
visibility, and recovery remain runtime state:
|
|
92
|
+
|
|
93
|
+
```js
|
|
94
|
+
const prints = createGroundPrintLayer({
|
|
95
|
+
bounds: geometry.boundingBox,
|
|
96
|
+
resolution: 1024,
|
|
97
|
+
recoverySeconds: 30,
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
const ground = createGroundShaderMesh({ geometry, field, layers, printLayer: prints });
|
|
101
|
+
prints.stamp({
|
|
102
|
+
shape: 'boot-left',
|
|
103
|
+
position: footWorldPosition,
|
|
104
|
+
forward: characterForward,
|
|
105
|
+
size: [0.12, 0.28],
|
|
106
|
+
});
|
|
107
|
+
setGroundShaderSceneState(ground, { snowCover: 1, snowDepth: 0.12 });
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
This is a visual albedo, roughness, and normal response. Terrain geometry,
|
|
111
|
+
precise/dynamic collision, navigation, character contact detection, and large-world print
|
|
112
|
+
streaming remain host-owned.
|
|
113
|
+
|
|
114
|
+
Pair it with `createCapEdgeWeight({ rimBias: 0.05, falloff, break })` for a
|
|
115
|
+
radial weight that thins coverage toward a broken rim. `falloff` and `break`
|
|
116
|
+
create the thinning; `rimBias` deliberately pushes coverage outward, so keep
|
|
117
|
+
it near zero for a soil cap. A cap that stays dense to its edge reads as a flat
|
|
118
|
+
disc stuck onto the rock rather than as soil.
|
|
119
|
+
|
|
120
|
+
## Shared scene surface runtime
|
|
121
|
+
|
|
122
|
+
Use `createSceneSurfaceRuntime()` from `@call-me-sensei/toonlab/runtime` when a
|
|
123
|
+
scene combines an authored terrain heightfield with grounded props, meadow
|
|
124
|
+
grass, characters, or shoreline water. The host supplies world bounds,
|
|
125
|
+
`heightAt(x, z)`, and a water level once. The runtime then owns derived Y
|
|
126
|
+
placements, bounds grounding, water masking, the shoaling/nearshore/shore-state
|
|
127
|
+
connection, source-texture continuity checks, and fail-closed composition
|
|
128
|
+
readiness.
|
|
129
|
+
|
|
130
|
+
```js
|
|
131
|
+
const surface = createSceneSurfaceRuntime({ bounds, heightAt, waterLevel: 0 });
|
|
132
|
+
const grass = await surface.createGrassField({ count: 12000, min, max });
|
|
133
|
+
const water = surface.createWaterSurface({ width: 80, depth: 50, position: { z: -25 } });
|
|
134
|
+
surface.place(tree, { x: 4, z: 8 });
|
|
135
|
+
surface.place(bench, { anchor: 'bounds', x: 2, z: 5 });
|
|
136
|
+
|
|
137
|
+
// After the package shadow pass has updated:
|
|
138
|
+
surface.assertReady({
|
|
139
|
+
camera,
|
|
140
|
+
styleRuntime,
|
|
141
|
+
requireShadowDomains: ['character', 'manufactured.surface', 'vegetation.tree'],
|
|
142
|
+
});
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Do not hand-author grass Y values, independently offset a shoreline water
|
|
146
|
+
plane, or infer readiness from `castShadow` flags when this contract applies.
|
|
147
|
+
|
|
148
|
+
For an explicitly requested Cloud experiment, the `cloud` entry is now a
|
|
149
|
+
raymarched volumetric deck, not painted sources placed by a composition. The
|
|
150
|
+
painted pipeline (`createCloudSourceDocument`, `createCloudCompositionDocument`,
|
|
151
|
+
`createCloudField`, `createCloudShaderSettings`) was replaced outright and no
|
|
152
|
+
longer exists. Parameters are six groups on a `toonlab/sky-params` document, and
|
|
153
|
+
the whole sky is one system:
|
|
154
|
+
|
|
155
|
+
```js
|
|
156
|
+
const sky = await SkySystem.create({ renderer, scene, camera, quality: 'high' });
|
|
157
|
+
await sky.applyPreset({
|
|
158
|
+
cloud: {
|
|
159
|
+
shape: { altitude: 1400, coverage: 0.55, thickness: 2800 },
|
|
160
|
+
lighting: { powderStrength: 0.7, scatteringAlbedo: 0.82 },
|
|
161
|
+
wind: { heading: 135, speed: 8 },
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
sky.update(delta); // once per frame, before the scene pass
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
`applyPreset` fully replaces sky state: anything the object omits falls back to
|
|
168
|
+
the schema default rather than to what is on screen. `sky.toParams()` is its
|
|
169
|
+
inverse and round-trips. This callable contract does not imply that the current
|
|
170
|
+
Cloud workflow has passed the polished-scene gate.
|
|
171
|
+
|
|
172
|
+
Use the package README and exported functions/settings as the runtime source
|
|
173
|
+
of truth. Labs, internal comparison fixtures, local asset paths, and repository
|
|
174
|
+
documentation outside `agents/references/` are not installed public APIs.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# Style Bundles and Shader Routing
|
|
2
|
+
|
|
3
|
+
A style bundle selects coordinated visual treatments and supported system
|
|
4
|
+
behavior. It never selects model identity, species, placements, current
|
|
5
|
+
weather, or current time.
|
|
6
|
+
|
|
7
|
+
Use `CALL_ME_SENSEI_STYLE_BUNDLE` as the first-party anime-game reference.
|
|
8
|
+
Use `auditStyleBundleApplication()` before `applyStyleBundle()`. Production
|
|
9
|
+
targets need a stable `id` and an explicit `domain`. Supported domains use
|
|
10
|
+
package adapters automatically; custom renderers need an explicit adapter. Do
|
|
11
|
+
not classify from object names, texture colors, or scene parenting.
|
|
12
|
+
|
|
13
|
+
| Target domain | Bundle slot |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `character`, `equipment`, `prop` | `toon` |
|
|
16
|
+
| `manufactured.environment` | `environment` |
|
|
17
|
+
| `vegetation.tree` | `treeShader` |
|
|
18
|
+
| `vegetation.grass` | `grassShader` + `grass` field response |
|
|
19
|
+
| `vegetation.flower` | `flowerShader` |
|
|
20
|
+
| `terrain.ground` | `groundShader` |
|
|
21
|
+
| `natural.rock` | `rock` |
|
|
22
|
+
| `natural.debris` | `debris` |
|
|
23
|
+
| `water` | `water` |
|
|
24
|
+
| `sky` | `sky` |
|
|
25
|
+
| `cloud` | `cloud` |
|
|
26
|
+
| `lighting` | `lighting` |
|
|
27
|
+
| `post` | `post` |
|
|
28
|
+
|
|
29
|
+
Prefer `createSceneStyleRuntime({ renderer, scene, sky, water })` for a complete
|
|
30
|
+
bundle application. It owns one stable lighting rig and automatically enables
|
|
31
|
+
the environment ground-field pass when the grass slot requests ground-color
|
|
32
|
+
adoption. Call `runtime.update(delta, camera)` before the scene render. Never
|
|
33
|
+
recreate those passes in each playground or scene.
|
|
34
|
+
|
|
35
|
+
Strict application preflights every target before the first mutation. Missing
|
|
36
|
+
slots, unknown domains, mixed material roles without an ID mask, unsupported
|
|
37
|
+
renderers, and undocumented custom adapters are failures. Advisory mode may
|
|
38
|
+
apply valid targets, but it must return every skipped target and gap.
|
|
39
|
+
|
|
40
|
+
## Mandatory authored-asset labeling
|
|
41
|
+
|
|
42
|
+
Agents that model, generate, convert, or import a 3D object must finish its
|
|
43
|
+
style metadata before handoff. Every renderable root needs a stable target ID
|
|
44
|
+
and explicit domain. Every material slot beneath it needs a stable material ID
|
|
45
|
+
and at least one semantic role in the versioned `materials` contract. A root
|
|
46
|
+
domain label does not substitute for per-material classification.
|
|
47
|
+
|
|
48
|
+
If one atlas crosses incompatible physical or shader roles, split the draw
|
|
49
|
+
materials or author a material-ID mask. Strict mode must fail incomplete
|
|
50
|
+
material coverage. Advisory mode may continue only while recording the gap;
|
|
51
|
+
the agent must not call the asset style-bundle-ready.
|
|
52
|
+
|
|
53
|
+
The minimum public-API shape is:
|
|
54
|
+
|
|
55
|
+
```js
|
|
56
|
+
material.userData.toonlabMaterialId = 'BenchWood';
|
|
57
|
+
labelStyleTarget(root, createStyleTargetLabel('manufactured.surface', {
|
|
58
|
+
targetId: 'scene/bench-1',
|
|
59
|
+
materials: createStyleMaterialContract('manufactured.surface', {
|
|
60
|
+
assignments: { BenchWood: { roles: ['primaryMass'] } },
|
|
61
|
+
}),
|
|
62
|
+
}));
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Repeat the assignment for every distinct render material. The IDs belong in
|
|
66
|
+
the asset/export manifest as well as the runtime object so reimport does not
|
|
67
|
+
silently erase routing.
|
|
68
|
+
|
|
69
|
+
Style bundle v2 is visual-only and includes anime art-direction metadata.
|
|
70
|
+
Parsing a v1 document returns migration warnings for old asset selections;
|
|
71
|
+
move those decisions to scene configuration or an asset-sourcing policy.
|