@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.
- package/NPM-LIBRARY.md +87 -27
- package/README.md +11 -10
- package/agents/PROMPTS.md +17 -3
- package/agents/README.md +13 -3
- package/agents/claude/CLAUDE.md +3 -0
- package/agents/codex/AGENTS.md +112 -159
- package/agents/cursor/toonlab.mdc +7 -3
- package/agents/examples/game-foundation.mjs +104 -0
- package/agents/references/game-lifecycle.md +57 -0
- package/agents/references/runtime-entry-points.md +26 -0
- package/agents/references/style-bundles.md +4 -1
- package/agents/skills/claude/asset-sourcing/SKILL.md +7 -4
- package/agents/skills/claude/environment/SKILL.md +4 -0
- package/agents/skills/claude/game-dev/SKILL.md +63 -87
- package/agents/skills/claude/lighting/SKILL.md +36 -0
- package/agents/skills/claude/post-processing/SKILL.md +8 -3
- package/agents/skills/claude/rock-ground-shaders/SKILL.md +10 -15
- package/agents/skills/claude/rockgen/SKILL.md +52 -21
- package/agents/skills/claude/scene-style-application/SKILL.md +4 -0
- package/agents/skills/claude/style-presets/SKILL.md +11 -8
- package/agents/skills/claude/toon-shading/SKILL.md +4 -0
- package/agents/skills/claude/vegetation-sky/SKILL.md +13 -7
- package/agents/skills/claude/visual-verification/SKILL.md +45 -119
- package/agents/skills/claude/water/SKILL.md +6 -2
- package/agents/skills/codex/asset-sourcing/SKILL.md +7 -4
- package/agents/skills/codex/environment/SKILL.md +4 -0
- package/agents/skills/codex/game-dev/SKILL.md +63 -87
- package/agents/skills/codex/lighting/SKILL.md +36 -0
- package/agents/skills/codex/post-processing/SKILL.md +8 -3
- package/agents/skills/codex/rock-ground-shaders/SKILL.md +10 -15
- package/agents/skills/codex/rockgen/SKILL.md +52 -21
- package/agents/skills/codex/scene-style-application/SKILL.md +4 -0
- package/agents/skills/codex/style-presets/SKILL.md +11 -8
- package/agents/skills/codex/toon-shading/SKILL.md +4 -0
- package/agents/skills/codex/vegetation-sky/SKILL.md +13 -7
- package/agents/skills/codex/visual-verification/SKILL.md +45 -119
- package/agents/skills/codex/water/SKILL.md +6 -2
- package/database/apply-one-catalog-seed.mjs +63 -0
- package/database/providers.mjs +1 -0
- package/database/seeds/catalog/0005_2026-08-c8-first12.sql +1101 -0
- package/database/seeds/catalog/0006_2026-09-c8-first100.sql +14245 -0
- package/database/seeds/catalog/0007_2026-09-c8-first100-primary-model.sql +14845 -0
- package/mcp/lab-management.mjs +11 -8
- package/mcp/public-catalog.mjs +0 -16
- package/mcp/tree-lab-contract.mjs +2381 -0
- package/mcp/vite-plugin.mjs +5 -1
- package/package.json +29 -18
- package/src/catalog/officialCatalog.js +1 -0
- package/src/catalog/officialCatalogAssetRuntime.js +98 -1
- package/src/catalog/officialCatalogLod.js +160 -16
- package/src/catalog/officialCatalogPlacement.js +52 -12
- package/src/catalog/officialCatalogProvider.js +79 -8
- package/src/catalog/officialCatalogRockPackage.js +172 -0
- package/src/cloud/cloudReprojection.js +40 -7
- package/src/cloud/cloudVolume.js +44 -7
- package/src/cloud/noise/baseShapeVolume.js +8 -6
- package/src/cloud/noise/cirrusMap.js +2 -1
- package/src/cloud/noise/curlNoise.js +2 -1
- package/src/cloud/noise/erosionVolume.js +2 -1
- package/src/cloud/noise/textureCache.js +77 -0
- package/src/cloud/noise/weatherMap.js +2 -1
- package/src/core/sha256.js +83 -0
- package/src/ground-shader/groundShaderMaterial.js +12 -3
- package/src/rock-shader/rockMaterial.js +205 -28
- package/src/rock-shader/rockShaderRuntime.js +17 -1
- package/src/rock-shader/rockShaderSettings.js +16 -0
- package/src/rockgen/index.js +9 -0
- package/src/rockgen/lod/index.js +1 -0
- package/src/rockgen/lod/rockDenseFieldPolicy.js +143 -0
- package/src/rockgen/rockDocument.js +899 -35
- package/src/rockgen/surface/c7GeologySurface.js +39 -9
- package/src/rockgen/surface/naturalRockSurface.js +1948 -0
- package/src/shaders-tsl/chunks/projected-water-caustics.js +14 -2
- package/src/shaders-tsl/chunks/water-foam.js +6 -6
- package/src/shaders-tsl/chunks/water-lighting.js +28 -5
- package/src/shaders-tsl/chunks/water-shore-state.js +5 -2
- package/src/shaders-tsl/chunks/water-waves.js +10 -5
- package/src/shaders-tsl/flower.js +7 -4
- package/src/shaders-tsl/grass.js +4 -3
- package/src/shaders-tsl/water-shore-state-simulation.js +3 -2
- package/src/shaders-tsl/water.js +209 -41
- package/src/sky/skySystem.js +30 -7
- package/src/toon/settings/perspectiveRemovalSettings.js +1 -1
- package/src/toon/toonSettings.js +74 -0
- package/src/vegetation/stylizedFlower.js +6 -0
- package/src/version.js +1 -1
- package/src/water/waterDetailSpectrum.js +91 -0
- package/src/water/waterDynamics.js +422 -0
- package/src/water/waterFoamParticles.js +196 -0
- package/src/water/waterFoamTexture.js +57 -0
- package/src/water/waterHydrodynamics.js +209 -0
- package/src/water/waterMaterial.js +1 -0
- package/src/water/waterRenderExtension.js +107 -0
- package/src/water/waterScenePasses.js +14 -6
- package/src/water/waterSettings.js +53 -26
- package/src/water/waterShoreMaterial.js +38 -14
- package/src/water/waterSpectralOcean.js +137 -0
- package/src/water/waterStageSettings.js +19 -1
- package/src/water/waterSurface.js +62 -18
- package/src/water/waterUnderwaterAtmosphere.js +30 -3
- package/types/catalog/officialCatalog.d.ts +1 -0
- package/types/catalog/officialCatalogPlacement.d.ts +4 -0
- package/types/catalog/officialCatalogRockPackage.d.ts +68 -0
- package/types/cloud/noise/baseShapeVolume.d.ts +1 -1
- package/types/cloud/noise/textureCache.d.ts +12 -0
- package/types/core/sha256.d.ts +2 -0
- package/types/index.d.ts +30 -0
- package/types/rock-shader/rockMaterial.d.ts +3 -0
- package/types/rock-shader/rockShaderSettings.d.ts +2 -0
- package/types/rockgen/index.d.ts +1 -0
- package/types/rockgen/lod/index.d.ts +1 -0
- package/types/rockgen/lod/rockDenseFieldPolicy.d.ts +181 -0
- package/types/rockgen/rockDocument.d.ts +654 -71
- package/types/rockgen/surface/naturalRockSurface.d.ts +100 -0
- package/types/shaders-tsl/chunks/projected-water-caustics.d.ts +7 -1
- package/types/shaders-tsl/chunks/water-lighting.d.ts +4 -3
- package/types/shaders-tsl/water.d.ts +2 -1
- package/types/version.d.ts +1 -1
- package/types/water/waterDetailSpectrum.d.ts +13 -0
- package/types/water/waterDynamics.d.ts +89 -0
- package/types/water/waterFoamParticles.d.ts +32 -0
- package/types/water/waterFoamTexture.d.ts +1 -0
- package/types/water/waterHydrodynamics.d.ts +49 -0
- package/types/water/waterRenderExtension.d.ts +16 -0
- package/types/water/waterScenePasses.d.ts +1 -1
- package/types/water/waterSettings.d.ts +1 -0
- package/types/water/waterSpectralOcean.d.ts +17 -0
- package/types/water/waterStageSettings.d.ts +1 -1
- package/types/water/waterUnderwaterAtmosphere.d.ts +19 -4
|
@@ -146,12 +146,18 @@ function c7Field(u, v, profile, seed) {
|
|
|
146
146
|
const mineralPatch = smoothstep(0.48, 0.70, tileFbm(u, v, 5, seed + 67, 2));
|
|
147
147
|
height += smoothstep(0.88, 0.975, fine) * mineralPatch * 0.014;
|
|
148
148
|
} else if (profile.fabric === 3) {
|
|
149
|
-
|
|
149
|
+
const beddingWarp = (Math.sin(u * Math.PI * 2) * 0.16)
|
|
150
|
+
+ (Math.sin(u * Math.PI * 4) * 0.06);
|
|
151
|
+
height += Math.sin((v * 8 + beddingWarp) * Math.PI * 2) * lerp(0.009, 0.024, macro);
|
|
150
152
|
} else if (profile.fabric === 5) {
|
|
151
153
|
height -= (1 - smoothstep(0.08, 0.26, micro)) * 0.085;
|
|
152
154
|
}
|
|
153
155
|
let value = clamp01(0.5 + ((macro - 0.5) * 0.44) + ((micro - 0.5) * 0.34) + ((fine - 0.5) * 0.18));
|
|
154
|
-
if (profile.fabric === 3)
|
|
156
|
+
if (profile.fabric === 3) {
|
|
157
|
+
value = clamp01(value + Math.sin(
|
|
158
|
+
(v * 9 + (Math.sin(u * Math.PI * 2) * 0.18)) * Math.PI * 2,
|
|
159
|
+
) * 0.08);
|
|
160
|
+
}
|
|
155
161
|
return { fine, height, macro, micro, value };
|
|
156
162
|
}
|
|
157
163
|
|
|
@@ -229,11 +235,15 @@ function createFractureSegments(profile, seed) {
|
|
|
229
235
|
function fractureField(u, v, segments, seed) {
|
|
230
236
|
let fracture = 0;
|
|
231
237
|
for (const segment of segments) {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
238
|
+
for (let offsetY = -1; offsetY <= 1; offsetY += 1) {
|
|
239
|
+
for (let offsetX = -1; offsetX <= 1; offsetX += 1) {
|
|
240
|
+
fracture = Math.max(fracture, 1 - smoothstep(
|
|
241
|
+
segment.width,
|
|
242
|
+
segment.width * 2.8,
|
|
243
|
+
pointToSegmentDistance(u + offsetX, v + offsetY, segment),
|
|
244
|
+
));
|
|
245
|
+
}
|
|
246
|
+
}
|
|
237
247
|
}
|
|
238
248
|
return fracture * lerp(0.22, 1, smoothstep(0.28, 0.70, tileFbm(u, v, 11, seed + 241, 2)));
|
|
239
249
|
}
|
|
@@ -286,11 +296,13 @@ export function createC7GeologyMapData({ geology, seed, size = 512 } = {}) {
|
|
|
286
296
|
if (profile.fabric === 3) {
|
|
287
297
|
const u = x / size;
|
|
288
298
|
const v = y / size;
|
|
289
|
-
const warpedBed = (v * 6
|
|
299
|
+
const warpedBed = (v * 6) + ((field.macro - 0.5) * 1.35)
|
|
300
|
+
+ (Math.sin(u * Math.PI * 2) * 0.18)
|
|
290
301
|
+ (Math.sin(u * Math.PI * 4) * 0.12);
|
|
291
302
|
const bed = 0.5 + (0.5 * Math.sin(warpedBed * Math.PI * 2));
|
|
292
303
|
const seamVariation = lerp(0.12, 1, tileNoise(u, v, 5, resolvedSeed + 91));
|
|
293
|
-
const fineBed = 0.5 + (0.5 * Math.sin(((v * 16)
|
|
304
|
+
const fineBed = 0.5 + (0.5 * Math.sin(((v * 16)
|
|
305
|
+
+ (Math.sin(u * Math.PI * 2) * 0.22)
|
|
294
306
|
+ ((field.micro - 0.5) * 0.72)) * Math.PI * 2));
|
|
295
307
|
const creamSeam = Math.max(
|
|
296
308
|
smoothstep(0.90, 0.992, bed) * seamVariation,
|
|
@@ -344,6 +356,20 @@ export function createC7GeologyMapData({ geology, seed, size = 512 } = {}) {
|
|
|
344
356
|
}
|
|
345
357
|
}
|
|
346
358
|
}
|
|
359
|
+
let horizontalEdgeDelta = 0;
|
|
360
|
+
let verticalEdgeDelta = 0;
|
|
361
|
+
for (let index = 0; index < size; index += 1) {
|
|
362
|
+
for (let channel = 0; channel < 3; channel += 1) {
|
|
363
|
+
horizontalEdgeDelta += Math.abs(
|
|
364
|
+
maps.baseColor[((index * size) * 4) + channel]
|
|
365
|
+
- maps.baseColor[((index * size + size - 1) * 4) + channel],
|
|
366
|
+
) / 255;
|
|
367
|
+
verticalEdgeDelta += Math.abs(
|
|
368
|
+
maps.baseColor[(index * 4) + channel]
|
|
369
|
+
- maps.baseColor[((((size - 1) * size) + index) * 4) + channel],
|
|
370
|
+
) / 255;
|
|
371
|
+
}
|
|
372
|
+
}
|
|
347
373
|
return {
|
|
348
374
|
audit: Object.freeze({
|
|
349
375
|
fractureSegments: fractureSegments.length,
|
|
@@ -353,6 +379,10 @@ export function createC7GeologyMapData({ geology, seed, size = 512 } = {}) {
|
|
|
353
379
|
roles: Object.freeze(Object.keys(maps)),
|
|
354
380
|
seed: resolvedSeed,
|
|
355
381
|
size,
|
|
382
|
+
tileEdgeMeanAbsoluteDelta: Object.freeze({
|
|
383
|
+
horizontal: horizontalEdgeDelta / (size * 3),
|
|
384
|
+
vertical: verticalEdgeDelta / (size * 3),
|
|
385
|
+
}),
|
|
356
386
|
}),
|
|
357
387
|
maps,
|
|
358
388
|
};
|