@call-me-sensei/toonlab 0.4.21 → 0.4.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/NPM-LIBRARY.md +87 -27
  2. package/README.md +11 -10
  3. package/agents/PROMPTS.md +17 -3
  4. package/agents/README.md +13 -3
  5. package/agents/claude/CLAUDE.md +3 -0
  6. package/agents/codex/AGENTS.md +112 -159
  7. package/agents/cursor/toonlab.mdc +7 -3
  8. package/agents/examples/game-foundation.mjs +104 -0
  9. package/agents/references/game-lifecycle.md +57 -0
  10. package/agents/references/runtime-entry-points.md +26 -0
  11. package/agents/references/style-bundles.md +4 -1
  12. package/agents/skills/claude/asset-sourcing/SKILL.md +7 -4
  13. package/agents/skills/claude/environment/SKILL.md +4 -0
  14. package/agents/skills/claude/game-dev/SKILL.md +63 -87
  15. package/agents/skills/claude/lighting/SKILL.md +36 -0
  16. package/agents/skills/claude/post-processing/SKILL.md +8 -3
  17. package/agents/skills/claude/rock-ground-shaders/SKILL.md +10 -15
  18. package/agents/skills/claude/rockgen/SKILL.md +52 -21
  19. package/agents/skills/claude/scene-style-application/SKILL.md +4 -0
  20. package/agents/skills/claude/style-presets/SKILL.md +11 -8
  21. package/agents/skills/claude/toon-shading/SKILL.md +4 -0
  22. package/agents/skills/claude/vegetation-sky/SKILL.md +13 -7
  23. package/agents/skills/claude/visual-verification/SKILL.md +45 -119
  24. package/agents/skills/claude/water/SKILL.md +6 -2
  25. package/agents/skills/codex/asset-sourcing/SKILL.md +7 -4
  26. package/agents/skills/codex/environment/SKILL.md +4 -0
  27. package/agents/skills/codex/game-dev/SKILL.md +63 -87
  28. package/agents/skills/codex/lighting/SKILL.md +36 -0
  29. package/agents/skills/codex/post-processing/SKILL.md +8 -3
  30. package/agents/skills/codex/rock-ground-shaders/SKILL.md +10 -15
  31. package/agents/skills/codex/rockgen/SKILL.md +52 -21
  32. package/agents/skills/codex/scene-style-application/SKILL.md +4 -0
  33. package/agents/skills/codex/style-presets/SKILL.md +11 -8
  34. package/agents/skills/codex/toon-shading/SKILL.md +4 -0
  35. package/agents/skills/codex/vegetation-sky/SKILL.md +13 -7
  36. package/agents/skills/codex/visual-verification/SKILL.md +45 -119
  37. package/agents/skills/codex/water/SKILL.md +6 -2
  38. package/database/apply-one-catalog-seed.mjs +63 -0
  39. package/database/providers.mjs +1 -0
  40. package/database/seeds/catalog/0005_2026-08-c8-first12.sql +1101 -0
  41. package/database/seeds/catalog/0006_2026-09-c8-first100.sql +14245 -0
  42. package/database/seeds/catalog/0007_2026-09-c8-first100-primary-model.sql +14845 -0
  43. package/mcp/lab-management.mjs +11 -8
  44. package/mcp/public-catalog.mjs +0 -16
  45. package/mcp/tree-lab-contract.mjs +2381 -0
  46. package/mcp/vite-plugin.mjs +5 -1
  47. package/package.json +29 -18
  48. package/src/catalog/officialCatalog.js +1 -0
  49. package/src/catalog/officialCatalogAssetRuntime.js +98 -1
  50. package/src/catalog/officialCatalogLod.js +160 -16
  51. package/src/catalog/officialCatalogPlacement.js +52 -12
  52. package/src/catalog/officialCatalogProvider.js +79 -8
  53. package/src/catalog/officialCatalogRockPackage.js +172 -0
  54. package/src/cloud/cloudReprojection.js +40 -7
  55. package/src/cloud/cloudVolume.js +44 -7
  56. package/src/cloud/noise/baseShapeVolume.js +8 -6
  57. package/src/cloud/noise/cirrusMap.js +2 -1
  58. package/src/cloud/noise/curlNoise.js +2 -1
  59. package/src/cloud/noise/erosionVolume.js +2 -1
  60. package/src/cloud/noise/textureCache.js +77 -0
  61. package/src/cloud/noise/weatherMap.js +2 -1
  62. package/src/core/sha256.js +83 -0
  63. package/src/ground-shader/groundShaderMaterial.js +12 -3
  64. package/src/rock-shader/rockMaterial.js +205 -28
  65. package/src/rock-shader/rockShaderRuntime.js +17 -1
  66. package/src/rock-shader/rockShaderSettings.js +16 -0
  67. package/src/rockgen/index.js +9 -0
  68. package/src/rockgen/lod/index.js +1 -0
  69. package/src/rockgen/lod/rockDenseFieldPolicy.js +143 -0
  70. package/src/rockgen/rockDocument.js +899 -35
  71. package/src/rockgen/surface/c7GeologySurface.js +39 -9
  72. package/src/rockgen/surface/naturalRockSurface.js +1948 -0
  73. package/src/shaders-tsl/chunks/projected-water-caustics.js +14 -2
  74. package/src/shaders-tsl/chunks/water-foam.js +6 -6
  75. package/src/shaders-tsl/chunks/water-lighting.js +28 -5
  76. package/src/shaders-tsl/chunks/water-shore-state.js +5 -2
  77. package/src/shaders-tsl/chunks/water-waves.js +10 -5
  78. package/src/shaders-tsl/flower.js +7 -4
  79. package/src/shaders-tsl/grass.js +4 -3
  80. package/src/shaders-tsl/water-shore-state-simulation.js +3 -2
  81. package/src/shaders-tsl/water.js +209 -41
  82. package/src/sky/skySystem.js +30 -7
  83. package/src/toon/settings/perspectiveRemovalSettings.js +1 -1
  84. package/src/toon/toonSettings.js +74 -0
  85. package/src/vegetation/stylizedFlower.js +6 -0
  86. package/src/version.js +1 -1
  87. package/src/water/waterDetailSpectrum.js +91 -0
  88. package/src/water/waterDynamics.js +422 -0
  89. package/src/water/waterFoamParticles.js +196 -0
  90. package/src/water/waterFoamTexture.js +57 -0
  91. package/src/water/waterHydrodynamics.js +209 -0
  92. package/src/water/waterMaterial.js +1 -0
  93. package/src/water/waterRenderExtension.js +107 -0
  94. package/src/water/waterScenePasses.js +14 -6
  95. package/src/water/waterSettings.js +53 -26
  96. package/src/water/waterShoreMaterial.js +38 -14
  97. package/src/water/waterSpectralOcean.js +137 -0
  98. package/src/water/waterStageSettings.js +19 -1
  99. package/src/water/waterSurface.js +62 -18
  100. package/src/water/waterUnderwaterAtmosphere.js +30 -3
  101. package/types/catalog/officialCatalog.d.ts +1 -0
  102. package/types/catalog/officialCatalogPlacement.d.ts +4 -0
  103. package/types/catalog/officialCatalogRockPackage.d.ts +68 -0
  104. package/types/cloud/noise/baseShapeVolume.d.ts +1 -1
  105. package/types/cloud/noise/textureCache.d.ts +12 -0
  106. package/types/core/sha256.d.ts +2 -0
  107. package/types/index.d.ts +30 -0
  108. package/types/rock-shader/rockMaterial.d.ts +3 -0
  109. package/types/rock-shader/rockShaderSettings.d.ts +2 -0
  110. package/types/rockgen/index.d.ts +1 -0
  111. package/types/rockgen/lod/index.d.ts +1 -0
  112. package/types/rockgen/lod/rockDenseFieldPolicy.d.ts +181 -0
  113. package/types/rockgen/rockDocument.d.ts +654 -71
  114. package/types/rockgen/surface/naturalRockSurface.d.ts +100 -0
  115. package/types/shaders-tsl/chunks/projected-water-caustics.d.ts +7 -1
  116. package/types/shaders-tsl/chunks/water-lighting.d.ts +4 -3
  117. package/types/shaders-tsl/water.d.ts +2 -1
  118. package/types/version.d.ts +1 -1
  119. package/types/water/waterDetailSpectrum.d.ts +13 -0
  120. package/types/water/waterDynamics.d.ts +89 -0
  121. package/types/water/waterFoamParticles.d.ts +32 -0
  122. package/types/water/waterFoamTexture.d.ts +1 -0
  123. package/types/water/waterHydrodynamics.d.ts +49 -0
  124. package/types/water/waterRenderExtension.d.ts +16 -0
  125. package/types/water/waterScenePasses.d.ts +1 -1
  126. package/types/water/waterSettings.d.ts +1 -0
  127. package/types/water/waterSpectralOcean.d.ts +17 -0
  128. package/types/water/waterStageSettings.d.ts +1 -1
  129. package/types/water/waterUnderwaterAtmosphere.d.ts +19 -4
@@ -0,0 +1,181 @@
1
+ export function inferDenseFieldRockClass({ scaleClass, targetHeightMetres }?: {
2
+ scaleClass?: any;
3
+ targetHeightMetres?: any;
4
+ }): "landmark" | "formation" | "ordinary";
5
+ export function validateDenseFieldRockLodTargets(targets: any, { assetClass, }?: {
6
+ assetClass?: string;
7
+ }): Readonly<{
8
+ assetClass: string;
9
+ ceilings: any;
10
+ errors: readonly string[];
11
+ valid: boolean;
12
+ values: readonly number[];
13
+ }>;
14
+ /**
15
+ * Install the mandatory dense-field rock behavior on an authored LOD0-LOD4
16
+ * root. The final tier is geometry-only silhouette support; it never casts a
17
+ * shadow and the root is culled once its projected diameter drops below the
18
+ * production pixel threshold.
19
+ */
20
+ export function createDenseFieldRockLodRuntime(root: any, { cullBelowPixels, hysteresis, maxLevel, pixelThresholds, referenceDiameter, requireComplete, }?: {
21
+ cullBelowPixels?: number;
22
+ hysteresis?: number;
23
+ maxLevel?: number;
24
+ pixelThresholds?: readonly number[];
25
+ referenceDiameter?: any;
26
+ requireComplete?: boolean;
27
+ }): Readonly<{
28
+ policy: Readonly<{
29
+ cullBelowPixels: 5;
30
+ farShadowLastLevel: 2;
31
+ levelCount: 5;
32
+ levels: readonly (Readonly<{
33
+ id: "LOD0";
34
+ level: 0;
35
+ purpose: "hero-close";
36
+ }> | Readonly<{
37
+ id: "LOD1";
38
+ level: 1;
39
+ purpose: "near-gameplay";
40
+ }> | Readonly<{
41
+ id: "LOD2";
42
+ level: 2;
43
+ purpose: "mid-gameplay";
44
+ }> | Readonly<{
45
+ id: "LOD3";
46
+ level: 3;
47
+ purpose: "far-simplified";
48
+ }> | Readonly<{
49
+ id: "LOD4";
50
+ level: 4;
51
+ purpose: "very-far-silhouette";
52
+ }>)[];
53
+ pixelThresholds: readonly number[];
54
+ selectionBasis: "projected-object-diameter-pixels";
55
+ triangleCeilings: Readonly<{
56
+ ordinary: Readonly<{
57
+ LOD3: 1200;
58
+ LOD4: 350;
59
+ }>;
60
+ formation: Readonly<{
61
+ LOD3: 1800;
62
+ LOD4: 600;
63
+ }>;
64
+ landmark: Readonly<{
65
+ LOD3: 2500;
66
+ LOD4: 800;
67
+ }>;
68
+ }>;
69
+ veryFar: Readonly<{
70
+ allowedSurfaceChannels: readonly string[];
71
+ castShadow: false;
72
+ preserve: readonly string[];
73
+ remove: readonly string[];
74
+ silhouetteOnly: true;
75
+ }>;
76
+ }>;
77
+ dispose(): void;
78
+ availableLevels: readonly any[];
79
+ bindings: readonly any[];
80
+ disposed: boolean;
81
+ level: any;
82
+ setLevel: (level: any) => boolean;
83
+ cullBelowPixels: number;
84
+ pixelThresholds: readonly any[];
85
+ referenceDiameter: number;
86
+ thresholds: readonly any[];
87
+ hysteresis: number;
88
+ update: (options?: {}) => Readonly<{
89
+ changed: boolean;
90
+ culled: boolean;
91
+ distance: number;
92
+ level: any;
93
+ projectedPixels: number;
94
+ }>;
95
+ }>;
96
+ export const DENSE_FIELD_ROCK_LOD_LEVELS: readonly (Readonly<{
97
+ id: "LOD0";
98
+ level: 0;
99
+ purpose: "hero-close";
100
+ }> | Readonly<{
101
+ id: "LOD1";
102
+ level: 1;
103
+ purpose: "near-gameplay";
104
+ }> | Readonly<{
105
+ id: "LOD2";
106
+ level: 2;
107
+ purpose: "mid-gameplay";
108
+ }> | Readonly<{
109
+ id: "LOD3";
110
+ level: 3;
111
+ purpose: "far-simplified";
112
+ }> | Readonly<{
113
+ id: "LOD4";
114
+ level: 4;
115
+ purpose: "very-far-silhouette";
116
+ }>)[];
117
+ export const DENSE_FIELD_ROCK_PIXEL_THRESHOLDS: readonly number[];
118
+ export const DENSE_FIELD_ROCK_CULL_BELOW_PIXELS: 5;
119
+ export const DENSE_FIELD_ROCK_TRIANGLE_CEILINGS: Readonly<{
120
+ ordinary: Readonly<{
121
+ LOD3: 1200;
122
+ LOD4: 350;
123
+ }>;
124
+ formation: Readonly<{
125
+ LOD3: 1800;
126
+ LOD4: 600;
127
+ }>;
128
+ landmark: Readonly<{
129
+ LOD3: 2500;
130
+ LOD4: 800;
131
+ }>;
132
+ }>;
133
+ export const DENSE_FIELD_ROCK_PRODUCTION_RULE: Readonly<{
134
+ cullBelowPixels: 5;
135
+ farShadowLastLevel: 2;
136
+ levelCount: 5;
137
+ levels: readonly (Readonly<{
138
+ id: "LOD0";
139
+ level: 0;
140
+ purpose: "hero-close";
141
+ }> | Readonly<{
142
+ id: "LOD1";
143
+ level: 1;
144
+ purpose: "near-gameplay";
145
+ }> | Readonly<{
146
+ id: "LOD2";
147
+ level: 2;
148
+ purpose: "mid-gameplay";
149
+ }> | Readonly<{
150
+ id: "LOD3";
151
+ level: 3;
152
+ purpose: "far-simplified";
153
+ }> | Readonly<{
154
+ id: "LOD4";
155
+ level: 4;
156
+ purpose: "very-far-silhouette";
157
+ }>)[];
158
+ pixelThresholds: readonly number[];
159
+ selectionBasis: "projected-object-diameter-pixels";
160
+ triangleCeilings: Readonly<{
161
+ ordinary: Readonly<{
162
+ LOD3: 1200;
163
+ LOD4: 350;
164
+ }>;
165
+ formation: Readonly<{
166
+ LOD3: 1800;
167
+ LOD4: 600;
168
+ }>;
169
+ landmark: Readonly<{
170
+ LOD3: 2500;
171
+ LOD4: 800;
172
+ }>;
173
+ }>;
174
+ veryFar: Readonly<{
175
+ allowedSurfaceChannels: readonly string[];
176
+ castShadow: false;
177
+ preserve: readonly string[];
178
+ remove: readonly string[];
179
+ silhouetteOnly: true;
180
+ }>;
181
+ }>;