@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,100 @@
1
+ export type NaturalRockMapRole = 'ao' | 'baseColor' | 'heightMicro' | 'normalGL' | 'orm' | 'roughness' | 'smoothness';
2
+ export type NaturalRockVector = readonly [number, number, number];
3
+ export type NaturalRockBounds = NaturalRockVector | {
4
+ dimensionsMetres?: readonly number[];
5
+ dimensions?: readonly number[];
6
+ minimum?: readonly number[];
7
+ maximum?: readonly number[];
8
+ min?: readonly number[];
9
+ max?: readonly number[];
10
+ width?: number;
11
+ height?: number;
12
+ depth?: number;
13
+ };
14
+ export interface NaturalRockProfile {
15
+ readonly label: string;
16
+ readonly lithology: string;
17
+ readonly fabric: string;
18
+ readonly requiresSemanticRegions?: boolean;
19
+ readonly semanticRegionRoles?: readonly string[] | null;
20
+ readonly baseTileMetres: number;
21
+ readonly heightMicroSpanMetres: number;
22
+ readonly [property: string]: unknown;
23
+ }
24
+ export interface NaturalRockBinding {
25
+ familyId: string;
26
+ profileId: string;
27
+ surfaceRationale?: string;
28
+ requiresSemanticRegions?: boolean;
29
+ }
30
+ export interface NaturalRockPackedMask {
31
+ encoding: 'rle-u8-v1'; length: number; runs: readonly number[];
32
+ }
33
+ export interface NaturalRockSemanticRegions {
34
+ schema: 'toonlab/c8-semantic-surface-regions'; version: 1;
35
+ coordinateSpace: 'geometry-uv0'; geometrySha256: string; width: number; height: number;
36
+ regions: readonly {
37
+ id: string; role: string; materialProfileId: string; geometryRegionId: string;
38
+ sourceKind: 'authored-geometry-semantic-mask';
39
+ mask: Uint8Array | NaturalRockPackedMask; maskSha256?: string;
40
+ }[];
41
+ }
42
+ export interface NaturalRockSurfaceOptions {
43
+ assetId: string;
44
+ profileId?: string | null;
45
+ binding?: NaturalRockBinding | null;
46
+ seed?: number | null;
47
+ semanticRegions?: NaturalRockSemanticRegions | null;
48
+ geometrySha256?: string | null;
49
+ }
50
+ export interface NaturalRockProjection {
51
+ readonly mode: string;
52
+ readonly upAxis: 'y';
53
+ readonly scaleMetres?: number;
54
+ readonly dimensionsMetres?: readonly number[];
55
+ readonly mapRoleProjection: Readonly<Record<NaturalRockMapRole, Readonly<Record<string, unknown>>>>;
56
+ readonly [property: string]: unknown;
57
+ }
58
+ export interface NaturalRockSurfaceSpecification {
59
+ readonly assetId: string;
60
+ readonly profileId: string;
61
+ readonly schema: string;
62
+ readonly version: number;
63
+ readonly seed: number;
64
+ readonly mapResolution: number;
65
+ readonly geometrySha256: string;
66
+ readonly projection: NaturalRockProjection;
67
+ readonly semanticRegions?: NaturalRockSemanticRegions;
68
+ readonly semanticRegionSurface?: Readonly<{ contractSha256: string; geometrySha256: string; [property: string]: unknown }>;
69
+ readonly [property: string]: unknown;
70
+ }
71
+ export const C8_FIRST12_LITHOLOGY_PROFILES: Readonly<Record<string, NaturalRockProfile>>;
72
+ export const C8_FIRST12_MAP_ROLES: readonly NaturalRockMapRole[];
73
+ export const C8_FIRST12_ASSET_IDS: readonly string[];
74
+ export const C8_FIRST12_ASSET_SURFACE_BINDINGS: Readonly<Record<string, NaturalRockBinding>>;
75
+ export const C8_COMPOSITE_SURFACE_RECIPES: Readonly<Record<string, Readonly<Record<string, unknown>>>>;
76
+ export const C8_FIRST12_SURFACE_SCHEMA: 'toonlab/c8-first12-geology-surface';
77
+ export const C8_FIRST12_SURFACE_VERSION: 2;
78
+ export const C8_SEMANTIC_SURFACE_REGIONS_SCHEMA: 'toonlab/c8-semantic-surface-regions';
79
+ export const C8_SEMANTIC_SURFACE_REGIONS_VERSION: 1;
80
+ export function c8First12SurfaceSeed(value: unknown): number;
81
+ export function normalizeC8First12EditedBounds(bounds: NaturalRockBounds): Readonly<{
82
+ axisOrder: 'x-y-z'; dimensionsMetres: readonly number[];
83
+ maximumMetres: readonly number[] | null; minimumMetres: readonly number[] | null; upAxis: 'y';
84
+ }>;
85
+ export function resolveC8First12Projection(options: {
86
+ assetId: string; editedBoundsMetres: NaturalRockBounds;
87
+ profileId?: string | null; binding?: NaturalRockBinding | null;
88
+ }): NaturalRockProjection;
89
+ export function createC8First12GeologyMapData(options: NaturalRockSurfaceOptions & {
90
+ size?: number; projectionScaleMetres?: number | null;
91
+ }): Readonly<{
92
+ maps: Readonly<Record<NaturalRockMapRole, Uint8Array>>;
93
+ audit: Readonly<{ profileId: string; seed: number; size: number; byteHash: string; [property: string]: unknown }>;
94
+ heightMicroDecode: Readonly<{ encoding: string; midlevel: number; physicalSpanMetres: number; [property: string]: unknown }>;
95
+ normalGLDerivation: Readonly<Record<string, unknown>>;
96
+ }>;
97
+ export function createC8First12SurfaceSpecification(options: NaturalRockSurfaceOptions & {
98
+ editedBoundsMetres: NaturalRockBounds; geometrySha256: string;
99
+ mapResolution?: number; boundsAuthority?: string;
100
+ }): NaturalRockSurfaceSpecification;
@@ -1,5 +1,8 @@
1
1
  /** Refresh the shared receiver from the active WaterSurface once per frame. */
2
- export function updateProjectedWaterCaustics({ enabled, time, waterLevel, centerX, centerZ, halfWidth, halfDepth, color, intensity, scale, speed, flowDirection, waveDistortion, depthAttenuation, }?: {}): void;
2
+ export function updateProjectedWaterCaustics({ enabled, time, waterLevel, centerX, centerZ, halfWidth, halfDepth, color, intensity, scale, speed, flowDirection, waveDistortion, depthAttenuation, surfaceMap, surfaceRegion, }?: {
3
+ surfaceMap?: any;
4
+ surfaceRegion?: any;
5
+ }): void;
3
6
  /**
4
7
  * Returns additive underwater caustic light for a world position/normal.
5
8
  * This deliberately stays branchless. A previous TSL `If`-wrapped version
@@ -9,6 +12,9 @@ export function updateProjectedWaterCaustics({ enabled, time, waterLevel, center
9
12
  export function projectedWaterCaustics(worldPosition: any, worldNormal: any): import("three/webgpu").Node<"vec3">;
10
13
  export namespace projectedWaterCausticUniforms {
11
14
  let map: import("three/webgpu").TextureNode<"vec4">;
15
+ let surfaceMap: import("three/webgpu").TextureNode<"vec4">;
16
+ let useSurfaceMap: import("three/webgpu").UniformNode<"float", number>;
17
+ let surfaceRegion: import("three/webgpu").UniformNode<"vec4", THREE.Vector4>;
12
18
  let enabled: import("three/webgpu").UniformNode<"float", number>;
13
19
  let time: import("three/webgpu").UniformNode<"float", number>;
14
20
  let waterLevel: import("three/webgpu").UniformNode<"float", number>;
@@ -1,9 +1,10 @@
1
- export function createWaterLightingChunk({ u }: {
1
+ export function createWaterLightingChunk({ u, physicalSurface }: {
2
2
  u: any;
3
+ physicalSurface?: boolean;
3
4
  }): {
4
- fresnelFactor: (viewDir: any, surfaceNormal: any) => import("three/webgpu").Node<"float">;
5
+ fresnelFactor: (viewDir: any, surfaceNormal: any) => any;
5
6
  proceduralSky: (reflectDir: any) => import("three/webgpu").Node<"float">;
6
7
  reflectionColor: (worldPosition: any, surfaceNormal: any, viewDir: any) => import("three/webgpu").VarNode<"vec3", import("three/webgpu").VarNode<"vec3", import("three/webgpu").ConvertNode<"vec3">>>;
7
- sparkles: (restXZ: any, surfaceNormal: any, viewDir: any, viewDistance: any, time: any) => import("three/webgpu").VarNode<"vec3", import("three/webgpu").VarNode<"vec3", import("three/webgpu").ConstNode<"vec3", import("three").Vector3>>>;
8
+ sparkles: (restXZ: any, surfaceNormal: any, viewDir: any, viewDistance: any, time: any) => import("three/webgpu").Node<"vec3">;
8
9
  specular: (viewDir: any, surfaceNormal: any, shadowFactor: any) => any;
9
10
  };
@@ -13,10 +13,11 @@ export function resolveWaterArrayUniformNode(entry: any): any;
13
13
  * - foamOctaves WATER_FOAM_OCTAVES
14
14
  * - shoaling WATER_SHOALING (aBedHeight attribute present)
15
15
  */
16
- export function createWaterNodeMaterial({ waveCount, qualityLevel, detailOctaves, foamOctaves, shoaling, }?: {
16
+ export function createWaterNodeMaterial({ waveCount, qualityLevel, detailOctaves, foamOctaves, shoaling, dynamics, }?: {
17
17
  qualityLevel?: number;
18
18
  detailOctaves?: number;
19
19
  foamOctaves?: number;
20
20
  shoaling?: boolean;
21
+ dynamics?: boolean;
21
22
  }): NodeMaterial;
22
23
  import { NodeMaterial } from 'three/webgpu';
@@ -1 +1 @@
1
- export const TOONLAB_VERSION: "0.4.21";
1
+ export const TOONLAB_VERSION: "0.4.23";
@@ -0,0 +1,13 @@
1
+ export class WaterDetailSpectrum {
2
+ size: number;
3
+ signature: string;
4
+ time: number;
5
+ bands: {
6
+ length: number;
7
+ baseLength: number;
8
+ }[];
9
+ configure(settings: any): void;
10
+ update(time: any): void;
11
+ sample(x: any, z: any, out: any): any;
12
+ dispose(): void;
13
+ }
@@ -0,0 +1,89 @@
1
+ export class WaterDynamics {
2
+ constructor(surface: any, options?: {});
3
+ surface: any;
4
+ isWaterDynamics: boolean;
5
+ options: {};
6
+ mode: any;
7
+ time: number;
8
+ columns: any;
9
+ rows: any;
10
+ state: Float32Array<ArrayBuffer>;
11
+ normals: Float32Array<ArrayBuffer>;
12
+ history: Float32Array<ArrayBuffer>;
13
+ foamCoordinates: Float32Array<ArrayBuffer>;
14
+ previousFoamCoordinates: Float32Array<ArrayBuffer>;
15
+ shoreDistances: Float32Array<ArrayBuffer>;
16
+ shoreContour: Float32Array<any>;
17
+ causticResolution: number;
18
+ light: Float32Array<ArrayBuffer>;
19
+ causticWork: Float64Array<ArrayBuffer>;
20
+ causticRegion: THREE.Vector4;
21
+ previousFoam: Float32Array<ArrayBuffer>;
22
+ stateAttribute: THREE.BufferAttribute<THREE.BufferAttributeEventMap>;
23
+ normalAttribute: THREE.BufferAttribute<THREE.BufferAttributeEventMap>;
24
+ texture: THREE.DataTexture;
25
+ foamCoordinateTexture: THREE.DataTexture;
26
+ causticTexture: THREE.DataTexture;
27
+ spectrum: WaterSpectralOcean;
28
+ normalSpectrum: WaterSpectralOcean;
29
+ detailSpectrum: WaterDetailSpectrum;
30
+ normalTextures: THREE.DataTexture[];
31
+ gridSignature: string;
32
+ reference: boolean;
33
+ paused: boolean;
34
+ pendingStep: number;
35
+ sampleScratch: {};
36
+ settingsSignature: string;
37
+ getRegion(out?: THREE.Vector4): THREE.Vector4;
38
+ rebuild(): void;
39
+ foamParticles: any;
40
+ renderExtension: any;
41
+ x: any;
42
+ z: any;
43
+ level: any;
44
+ dx: number;
45
+ dz: number;
46
+ minX: number;
47
+ minZ: number;
48
+ bed: any;
49
+ hydro: WaterHydrodynamics;
50
+ interactions: WaterHydrodynamics;
51
+ warmupRemaining: number;
52
+ boundary(side: any, x: any, z: any, time: any, ghost: any): boolean;
53
+ update(delta: any): void;
54
+ incidentWaves: {
55
+ dirX: number;
56
+ dirZ: number;
57
+ omega: number;
58
+ waveNumber: number;
59
+ amplitude: number;
60
+ phase: number;
61
+ steepness: number;
62
+ crestWeight: number;
63
+ }[];
64
+ updateShoreContour(): void;
65
+ updateFoamCoordinates(dt: any): void;
66
+ updateCaustics(): void;
67
+ sample(x: any, z: any, out?: {}): {};
68
+ impulse(x: any, z: any, strength: any, radius: any): void;
69
+ shoreEdgeAt(x?: number, minimumDepth?: number): number;
70
+ diagnostics(): {
71
+ time: number;
72
+ steps: number;
73
+ volume: number;
74
+ boundaryVolume: number;
75
+ massError: number;
76
+ roundoffVolume: number;
77
+ minDepth: any;
78
+ } | {
79
+ time: number;
80
+ model: string;
81
+ bands: number;
82
+ peakLength: number;
83
+ };
84
+ dispose(): void;
85
+ }
86
+ import * as THREE from 'three';
87
+ import { WaterSpectralOcean } from './waterSpectralOcean.js';
88
+ import { WaterDetailSpectrum } from './waterDetailSpectrum.js';
89
+ import { WaterHydrodynamics } from './waterHydrodynamics.js';
@@ -0,0 +1,32 @@
1
+ export class WaterFoamParticles {
2
+ constructor(dynamics: any, count?: number);
3
+ dynamics: any;
4
+ count: number;
5
+ seed: number;
6
+ points: Float32Array<ArrayBuffer>;
7
+ thickness: Float32Array<ArrayBuffer>;
8
+ alpha: Float32Array<ArrayBuffer>;
9
+ color: import("three/webgpu").UniformNode<"color", THREE.Color>;
10
+ sun: import("three/webgpu").UniformNode<"vec3", THREE.Vector3>;
11
+ mesh: THREE.InstancedMesh<THREE.PlaneGeometry, MeshBasicNodeMaterial, THREE.InstancedMeshEventMap>;
12
+ focus: THREE.Vector3;
13
+ sample: {};
14
+ alive: number;
15
+ frontState: Float32Array<ArrayBuffer>;
16
+ previousEdges: Float32Array<any>;
17
+ frontReady: boolean;
18
+ frontTexture: THREE.DataTexture;
19
+ random(): number;
20
+ concentration(x: any, z: any): any;
21
+ edgeAt(x: any): any;
22
+ sampleFront(x: any, component: any, previous?: boolean): number;
23
+ updateFront(dt: any): void;
24
+ retreatAt(x: any): number;
25
+ patchAt(x: any, edge: any): number;
26
+ networkAt(x: any, z: any): number;
27
+ availableFoam(x: any, z: any): any;
28
+ update(dt: any): void;
29
+ dispose(): void;
30
+ }
31
+ import * as THREE from 'three';
32
+ import { MeshBasicNodeMaterial } from 'three/webgpu';
@@ -0,0 +1 @@
1
+ export function getWaterFoamTexture(): any;
@@ -0,0 +1,49 @@
1
+ export class WaterHydrodynamics {
2
+ constructor({ columns, rows, width, depth, centerX, centerZ, waterLevel, bedHeight, boundary, friction }?: {
3
+ columns?: number;
4
+ rows?: number;
5
+ width?: number;
6
+ depth?: number;
7
+ centerX?: number;
8
+ centerZ?: number;
9
+ waterLevel?: number;
10
+ bedHeight?: () => number;
11
+ boundary?: any;
12
+ friction?: number;
13
+ });
14
+ dx: number;
15
+ dz: number;
16
+ minX: number;
17
+ minZ: number;
18
+ length: number;
19
+ time: number;
20
+ boundaryVolume: number;
21
+ roundoffVolume: number;
22
+ initialVolume: number;
23
+ steps: number;
24
+ foamLifetime: number;
25
+ foamResidueLifetime: number;
26
+ ghost: {
27
+ h: number;
28
+ qx: number;
29
+ qz: number;
30
+ bed: number;
31
+ };
32
+ volume(): number;
33
+ diagnostics(): {
34
+ time: number;
35
+ steps: number;
36
+ volume: number;
37
+ boundaryVolume: number;
38
+ massError: number;
39
+ roundoffVolume: number;
40
+ minDepth: any;
41
+ };
42
+ impulse(x: any, z: any, strength?: number, radius?: number, direction?: any): void;
43
+ face(left: any, right: any, axis: any, dt: any): void;
44
+ boundaryFace(i: any, side: any, axis: any, low: any, dt: any): void;
45
+ advance(duration: any): void;
46
+ step(dt: any): void;
47
+ sampleArray(array: any, x: any, z: any): number;
48
+ sample(x: any, z: any, out?: {}): {};
49
+ }
@@ -0,0 +1,16 @@
1
+ export class WaterRenderExtension {
2
+ constructor(dynamics: any, extent: any);
3
+ dynamics: any;
4
+ xs: any[];
5
+ zs: any[];
6
+ geometry: THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>;
7
+ states: Float32Array<ArrayBuffer>;
8
+ normals: Float32Array<ArrayBuffer>;
9
+ wetDistances: Float32Array<ArrayBuffer>;
10
+ mesh: THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, any, THREE.Object3DEventMap>;
11
+ sample: {};
12
+ incoming(x: any, z: any, stepX?: number, stepZ?: number): number;
13
+ update(): void;
14
+ dispose(): void;
15
+ }
16
+ import * as THREE from 'three';
@@ -59,7 +59,7 @@ export class WaterScenePasses {
59
59
  depthMaterialFor(material: any): any;
60
60
  renderDepthPass(renderer: any, scene: any, camera: any): void;
61
61
  renderGrabPass(renderer: any, scene: any, camera: any, waterMesh: any): void;
62
- applyWaterClipPlane(renderer: any, camera: any, waterY: any): void;
62
+ applyWaterClipPlane(renderer: any, camera: any, waterY: any, side?: number): void;
63
63
  updateTransmissionCamera(renderer: any, camera: any, waterY: any): THREE.PerspectiveCamera;
64
64
  updateReflectionCamera(renderer: any, camera: any, waterY: any): boolean;
65
65
  renderReflectionPass(renderer: any, scene: any, camera: any, waterMesh: any): void;
@@ -228,6 +228,7 @@ export function sampleSwashFrameState(waves: any, time: any, runupDistance?: num
228
228
  primaryDirectionZ: any;
229
229
  progress: number;
230
230
  progressSpeed: number;
231
+ activity: number;
231
232
  runupScale: number;
232
233
  startOffset: number;
233
234
  endOffset: number;
@@ -0,0 +1,17 @@
1
+ export function inverseFFT2D(real: any, imaginary: any, size: any): void;
2
+ export class WaterSpectralOcean {
3
+ constructor({ resolution, seed }?: {
4
+ resolution?: number;
5
+ seed?: number;
6
+ });
7
+ resolution: number;
8
+ seed: number;
9
+ bands: any[];
10
+ signature: string;
11
+ time: number;
12
+ configure(settings: any, depth?: number, minWavelength?: number): void;
13
+ peakLength: number;
14
+ rms: number;
15
+ update(time: any): void;
16
+ sample(x: any, z: any, minWavelength?: number): number;
17
+ }
@@ -1,7 +1,7 @@
1
1
  export function waterStageOverrides(stage: any, baseSettings?: {}): {};
2
2
  export const BEACH_RUNUP_DISTANCE: 10;
3
3
  export const BEACH_WATER_LEVEL: 0.36;
4
- export const BEACH_WAVE_SPEED: 0.35;
4
+ export const BEACH_WAVE_SPEED: 0.65;
5
5
  export const BEACH_DIRECTION_SPREAD: 0.18;
6
6
  export const SHOREWARD_ORIENTATION: Readonly<{
7
7
  flowDirection: readonly number[];
@@ -8,6 +8,7 @@ export function createWaterUnderwaterAtmosphereOptions(options?: boolean): {
8
8
  boundsMargin: 0;
9
9
  clearFogNode: true;
10
10
  color?: undefined;
11
+ waterPathFog?: undefined;
11
12
  } | {
12
13
  enabled: any;
13
14
  fogNear: number;
@@ -18,14 +19,17 @@ export function createWaterUnderwaterAtmosphereOptions(options?: boolean): {
18
19
  clipToSurfaceBounds: any;
19
20
  boundsMargin: number;
20
21
  clearFogNode: any;
22
+ waterPathFog: any;
21
23
  };
22
- export function resolveWaterUnderwaterAtmosphereState({ cameraX, cameraY, cameraZ, waterX, waterY, waterZ, width, depth, settings, options, }?: {
24
+ export function resolveWaterUnderwaterAtmosphereState({ cameraX, cameraY, cameraZ, waterX, waterY, waterZ, surfaceY, bedY, width, depth, settings, options, }?: {
23
25
  cameraX?: number;
24
26
  cameraY?: number;
25
27
  cameraZ?: number;
26
28
  waterX?: number;
27
29
  waterY?: number;
28
30
  waterZ?: number;
31
+ surfaceY?: any;
32
+ bedY?: number;
29
33
  width?: number;
30
34
  depth?: number;
31
35
  settings?: {};
@@ -39,7 +43,10 @@ export function resolveWaterUnderwaterAtmosphereState({ cameraX, cameraY, camera
39
43
  fogFar: number;
40
44
  overlayOpacity: number;
41
45
  clearFogNode: any;
42
- waterY: number;
46
+ waterPathFog: any;
47
+ waterY: any;
48
+ surfaceY: any;
49
+ bedY: number;
43
50
  };
44
51
  export const DEFAULT_WATER_UNDERWATER_ATMOSPHERE: Readonly<{
45
52
  enabled: true;
@@ -63,6 +70,7 @@ export class WaterUnderwaterAtmosphere {
63
70
  boundsMargin: 0;
64
71
  clearFogNode: true;
65
72
  color?: undefined;
73
+ waterPathFog?: undefined;
66
74
  } | {
67
75
  enabled: any;
68
76
  fogNear: number;
@@ -73,6 +81,7 @@ export class WaterUnderwaterAtmosphere {
73
81
  clipToSurfaceBounds: any;
74
82
  boundsMargin: number;
75
83
  clearFogNode: any;
84
+ waterPathFog: any;
76
85
  };
77
86
  scene: any;
78
87
  state: {
@@ -84,7 +93,10 @@ export class WaterUnderwaterAtmosphere {
84
93
  fogFar: number;
85
94
  overlayOpacity: number;
86
95
  clearFogNode: any;
87
- waterY: number;
96
+ waterPathFog: any;
97
+ waterY: any;
98
+ surfaceY: any;
99
+ bedY: number;
88
100
  };
89
101
  detach(): void;
90
102
  beginFrame(scene: any): void;
@@ -97,7 +109,10 @@ export class WaterUnderwaterAtmosphere {
97
109
  fogFar: number;
98
110
  overlayOpacity: number;
99
111
  clearFogNode: any;
100
- waterY: number;
112
+ waterPathFog: any;
113
+ waterY: any;
114
+ surfaceY: any;
115
+ bedY: number;
101
116
  };
102
117
  dispose(): void;
103
118
  }