@call-me-sensei/toonlab 0.1.1
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/ATTRIBUTION.md +40 -0
- package/LICENSE +21 -0
- package/README.md +125 -0
- package/package.json +97 -0
- package/src/character/characterRig.js +353 -0
- package/src/character/freestyleSwimClip.js +541 -0
- package/src/character/index.js +4 -0
- package/src/character/modelLoader.js +433 -0
- package/src/core/materialRoles.js +438 -0
- package/src/core/presetDocuments.js +110 -0
- package/src/core/shaderBackend.js +24 -0
- package/src/debrisgen/debrisFields.js +544 -0
- package/src/debrisgen/debrisGenerator.js +1929 -0
- package/src/debrisgen/debrisPalettes.js +71 -0
- package/src/debrisgen/debrisPhysics.js +198 -0
- package/src/debrisgen/debrisPresets.js +155 -0
- package/src/debrisgen/debrisSettings.js +333 -0
- package/src/debrisgen/debrisTextures.js +380 -0
- package/src/debrisgen/index.js +5 -0
- package/src/debug/fieldValues.js +95 -0
- package/src/debug/index.js +7 -0
- package/src/debug/settingsPanel.js +170 -0
- package/src/environment/environmentAmbientProbe.js +160 -0
- package/src/environment/environmentMaterialAdapter.js +336 -0
- package/src/environment/environmentMaterialClassifier.js +178 -0
- package/src/environment/environmentPlanarReflection.js +201 -0
- package/src/environment/environmentPresets.js +443 -0
- package/src/environment/environmentRigs.js +684 -0
- package/src/environment/environmentSettings.js +504 -0
- package/src/environment/environmentShaderMaterials.js +318 -0
- package/src/environment/environmentSunShadowPass.js +268 -0
- package/src/environment/environmentTextureResolver.js +161 -0
- package/src/environment/environmentTimeOfDay.js +167 -0
- package/src/environment/environmentVertexAo.js +188 -0
- package/src/environment/index.js +8 -0
- package/src/environment/scanAssetStylize.js +103 -0
- package/src/index.js +21 -0
- package/src/loaders/index.js +1 -0
- package/src/post/index.js +2 -0
- package/src/post/postProcessing.js +1087 -0
- package/src/rockgen/export/glbExport.js +177 -0
- package/src/rockgen/heightfield/heightfieldErosion.js +7 -0
- package/src/rockgen/heightfield/heightfieldPatch.js +183 -0
- package/src/rockgen/heightfield/stylizedErosionSim.js +356 -0
- package/src/rockgen/index.js +14 -0
- package/src/rockgen/mesh/meshAttributes.js +374 -0
- package/src/rockgen/mesh/meshDocument.js +158 -0
- package/src/rockgen/mesh/surfaceNets.js +329 -0
- package/src/rockgen/noise/cellularNoise3.js +92 -0
- package/src/rockgen/noise/prng.js +62 -0
- package/src/rockgen/noise/simplexNoise3.js +89 -0
- package/src/rockgen/noise/valueNoise3.js +87 -0
- package/src/rockgen/rockDocument.js +255 -0
- package/src/rockgen/rockHelpers.js +8 -0
- package/src/rockgen/rockgenPresets.js +559 -0
- package/src/rockgen/rockgenSettings.js +756 -0
- package/src/rockgen/sdf/fieldCompiler.js +544 -0
- package/src/rockgen/sdf/sculptEdits.js +66 -0
- package/src/rockgen/sdf/sdfModifiers.js +45 -0
- package/src/rockgen/sdf/sdfOps.js +37 -0
- package/src/rockgen/sdf/sdfPrimitives.js +88 -0
- package/src/shaders-tsl/anime.js +963 -0
- package/src/shaders-tsl/chunks/character-color.js +64 -0
- package/src/shaders-tsl/chunks/character-highlights.js +174 -0
- package/src/shaders-tsl/chunks/character-lighting.js +309 -0
- package/src/shaders-tsl/chunks/character-material-maps.js +146 -0
- package/src/shaders-tsl/chunks/character-roles.js +52 -0
- package/src/shaders-tsl/chunks/character-scene-lights.js +270 -0
- package/src/shaders-tsl/chunks/character-shadow-color.js +61 -0
- package/src/shaders-tsl/chunks/character-skinning.js +140 -0
- package/src/shaders-tsl/chunks/environment-color.js +47 -0
- package/src/shaders-tsl/chunks/environment-debug.js +79 -0
- package/src/shaders-tsl/chunks/environment-lighting.js +260 -0
- package/src/shaders-tsl/chunks/environment-sun-shadow.js +87 -0
- package/src/shaders-tsl/chunks/foliage-fog.js +60 -0
- package/src/shaders-tsl/chunks/pass-depth-color.js +89 -0
- package/src/shaders-tsl/chunks/stylized-cloud-shadow.js +70 -0
- package/src/shaders-tsl/chunks/water-color.js +190 -0
- package/src/shaders-tsl/chunks/water-common.js +124 -0
- package/src/shaders-tsl/chunks/water-foam.js +93 -0
- package/src/shaders-tsl/chunks/water-lighting.js +116 -0
- package/src/shaders-tsl/chunks/water-ripple.js +64 -0
- package/src/shaders-tsl/chunks/water-waves.js +100 -0
- package/src/shaders-tsl/environment-ao-overlay.js +60 -0
- package/src/shaders-tsl/environment.js +680 -0
- package/src/shaders-tsl/flower.js +267 -0
- package/src/shaders-tsl/grass.js +193 -0
- package/src/shaders-tsl/post-composite.js +461 -0
- package/src/shaders-tsl/sky.js +175 -0
- package/src/shaders-tsl/tree-leaf.js +264 -0
- package/src/shaders-tsl/water-breaker.js +423 -0
- package/src/shaders-tsl/water-kelp.js +171 -0
- package/src/shaders-tsl/water-rain.js +107 -0
- package/src/shaders-tsl/water-simulation.js +140 -0
- package/src/shaders-tsl/water-splash.js +298 -0
- package/src/shaders-tsl/water.js +509 -0
- package/src/sky/index.js +2 -0
- package/src/sky/stylizedSky.js +341 -0
- package/src/toon/characterRenderPasses.js +646 -0
- package/src/toon/index.js +4 -0
- package/src/toon/settings/alphaSettings.js +170 -0
- package/src/toon/settings/averageShadowSettings.js +181 -0
- package/src/toon/settings/baseTextureSettings.js +133 -0
- package/src/toon/settings/celShadeSettings.js +96 -0
- package/src/toon/settings/contactShadowSettings.js +114 -0
- package/src/toon/settings/eyeHighlightSettings.js +187 -0
- package/src/toon/settings/faceLightingSettings.js +135 -0
- package/src/toon/settings/furSettings.js +112 -0
- package/src/toon/settings/glitterSettings.js +102 -0
- package/src/toon/settings/hairHighlightSettings.js +325 -0
- package/src/toon/settings/indirectLightSettings.js +244 -0
- package/src/toon/settings/localLightSettings.js +176 -0
- package/src/toon/settings/materialMapSettings.js +299 -0
- package/src/toon/settings/outlineSettings.js +263 -0
- package/src/toon/settings/perspectiveRemovalSettings.js +60 -0
- package/src/toon/settings/rimLightSettings.js +268 -0
- package/src/toon/settings/sceneShadowSettings.js +147 -0
- package/src/toon/settings/selfShadowSettings.js +221 -0
- package/src/toon/settings/shadowColorSettings.js +238 -0
- package/src/toon/settings/skinToneSettings.js +150 -0
- package/src/toon/settings/specularSettings.js +314 -0
- package/src/toon/settings/stickerSettings.js +102 -0
- package/src/toon/toonMaterialAdapter.js +2235 -0
- package/src/toon/toonSettings.js +860 -0
- package/src/vegetation/flowerSpecies.js +260 -0
- package/src/vegetation/index.js +10 -0
- package/src/vegetation/stylizedBush.js +136 -0
- package/src/vegetation/stylizedFlower.js +213 -0
- package/src/vegetation/stylizedFlowers.js +297 -0
- package/src/vegetation/stylizedGrass.js +491 -0
- package/src/vegetation/stylizedTree.js +2449 -0
- package/src/vegetation/stylizedTreeFoliage.js +691 -0
- package/src/vegetation/treeExport.js +300 -0
- package/src/vegetation/treeRecipe.js +647 -0
- package/src/water/index.js +2 -0
- package/src/water/water.js +20 -0
- package/src/water/waterBreakerSystem.js +591 -0
- package/src/water/waterInteraction.js +193 -0
- package/src/water/waterMaterial.js +263 -0
- package/src/water/waterRain.js +136 -0
- package/src/water/waterRippleSimulation.js +227 -0
- package/src/water/waterScenePasses.js +415 -0
- package/src/water/waterSettings.js +1138 -0
- package/src/water/waterSplashSystem.js +251 -0
- package/src/water/waterSurface.js +475 -0
- package/src/water/waterVegetation.js +83 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Signed-distance primitives for rockgen base shapes, evaluated in piece
|
|
2
|
+
// local space. Negative inside. Displacement modifiers turn these into
|
|
3
|
+
// implicit functions rather than true distance fields — fine for rockgen,
|
|
4
|
+
// which only dense-grid samples (never sphere-traces); see fieldCompiler.js
|
|
5
|
+
// for the bounds-padding contract that keeps that safe.
|
|
6
|
+
|
|
7
|
+
export function sdSphere(x, y, z, radius) {
|
|
8
|
+
return Math.sqrt(x * x + y * y + z * z) - radius;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Ellipsoid distance bound (Quilez approximation): exact sign, distance
|
|
13
|
+
* accurate near the surface, which is all grid sampling needs.
|
|
14
|
+
*/
|
|
15
|
+
export function sdEllipsoid(x, y, z, rx, ry, rz) {
|
|
16
|
+
const kx = x / rx;
|
|
17
|
+
const ky = y / ry;
|
|
18
|
+
const kz = z / rz;
|
|
19
|
+
const k0 = Math.sqrt(kx * kx + ky * ky + kz * kz);
|
|
20
|
+
const k1x = kx / rx;
|
|
21
|
+
const k1y = ky / ry;
|
|
22
|
+
const k1z = kz / rz;
|
|
23
|
+
const k1 = Math.sqrt(k1x * k1x + k1y * k1y + k1z * k1z);
|
|
24
|
+
if (k1 === 0) return -Math.min(rx, ry, rz);
|
|
25
|
+
return (k0 * (k0 - 1)) / k1;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Box with half-extents (bx, by, bz) and rounded corner radius r. */
|
|
29
|
+
export function sdRoundBox(x, y, z, bx, by, bz, r) {
|
|
30
|
+
const qx = Math.abs(x) - bx + r;
|
|
31
|
+
const qy = Math.abs(y) - by + r;
|
|
32
|
+
const qz = Math.abs(z) - bz + r;
|
|
33
|
+
const ox = Math.max(qx, 0);
|
|
34
|
+
const oy = Math.max(qy, 0);
|
|
35
|
+
const oz = Math.max(qz, 0);
|
|
36
|
+
const outside = Math.sqrt(ox * ox + oy * oy + oz * oz);
|
|
37
|
+
const inside = Math.min(Math.max(qx, Math.max(qy, qz)), 0);
|
|
38
|
+
return outside + inside - r;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Vertical (Y-axis) capsule: segment half-length plus cap radius. */
|
|
42
|
+
export function sdCapsule(x, y, z, halfLength, radius) {
|
|
43
|
+
const cy = y - Math.min(Math.max(y, -halfLength), halfLength);
|
|
44
|
+
return Math.sqrt(x * x + cy * cy + z * z) - radius;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Signed distance to a 2D polygon (Quilez winding variant). `points` is a
|
|
49
|
+
* flat [x0, y0, x1, y1, ...] array; the polygon closes implicitly and may
|
|
50
|
+
* be concave. Negative inside, exact everywhere.
|
|
51
|
+
*/
|
|
52
|
+
export function sdPolygon2(points, x, y) {
|
|
53
|
+
const count = points.length / 2;
|
|
54
|
+
let dx = x - points[0];
|
|
55
|
+
let dy = y - points[1];
|
|
56
|
+
let d = dx * dx + dy * dy;
|
|
57
|
+
let s = 1;
|
|
58
|
+
for (let i = 0, j = count - 1; i < count; j = i, i += 1) {
|
|
59
|
+
const vix = points[i * 2];
|
|
60
|
+
const viy = points[i * 2 + 1];
|
|
61
|
+
const ex = points[j * 2] - vix;
|
|
62
|
+
const ey = points[j * 2 + 1] - viy;
|
|
63
|
+
const wx = x - vix;
|
|
64
|
+
const wy = y - viy;
|
|
65
|
+
const t = Math.min(Math.max((wx * ex + wy * ey) / (ex * ex + ey * ey), 0), 1);
|
|
66
|
+
const bx = wx - ex * t;
|
|
67
|
+
const by = wy - ey * t;
|
|
68
|
+
d = Math.min(d, bx * bx + by * by);
|
|
69
|
+
const c0 = y >= viy;
|
|
70
|
+
const c1 = y < points[j * 2 + 1];
|
|
71
|
+
const c2 = ex * wy > ey * wx;
|
|
72
|
+
if ((c0 && c1 && c2) || (!c0 && !c1 && !c2)) s = -s;
|
|
73
|
+
}
|
|
74
|
+
return s * Math.sqrt(d);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Doodle slab: a 2D polygon in the local XY plane extruded to ±halfDepth
|
|
79
|
+
* along Z, with edge rounding r (clamped so the slab never inverts). This
|
|
80
|
+
* is the base shape a drawn rock outline compiles to.
|
|
81
|
+
*/
|
|
82
|
+
export function sdExtrudedPolygon(points, x, y, z, halfDepth, r) {
|
|
83
|
+
const rounding = Math.min(Math.max(r, 0), halfDepth * 0.9);
|
|
84
|
+
const d2 = sdPolygon2(points, x, y) + rounding;
|
|
85
|
+
const w = Math.abs(z) - (halfDepth - rounding);
|
|
86
|
+
const outside = Math.sqrt(Math.max(d2, 0) ** 2 + Math.max(w, 0) ** 2);
|
|
87
|
+
return Math.min(Math.max(d2, w), 0) + outside - rounding;
|
|
88
|
+
}
|