genshin-engine 4.4.0 → 4.6.0
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 +25 -17
- package/dist/index.d.ts +1917 -0
- package/dist/index.js +6600 -0
- package/dist/terrainWorker-BjxpqdfH.d.ts +147 -0
- package/dist/terrainWorker-JpiYqzu_.js +490 -0
- package/dist/terrainWorker.d.ts +2 -0
- package/dist/terrainWorker.js +1 -0
- package/package.json +9 -9
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,1917 @@
|
|
|
1
|
+
import { A as CliffFeature, C as GroundLayerField, D as GroundBand, E as GroundLayers, O as GaussianHills, S as GroundPathSegment, T as GroundLayer, _ as TerrainOptions, a as createTerrainShapeHeight, b as PlateauFeature, c as computeTerrainTile, d as TerrainTileOptions, f as TerrainShape, g as TerrainResidualClearing, h as TerrainResidualFade, i as getTerrainTileColumn, j as TerrainFeatureKind, k as GaussianHill, l as createSeededRandom, m as TerrainResidual, n as getTerrainTileRow, o as createGroundPaintColor, p as TerrainTile, r as getTerrainTileLevel, s as createGroundLayerWeights, t as computeScatterPoints, u as ScatterOptions, v as TerrainFeature, w as GroundLayerColors, x as GroundPaint, y as RidgeFeature } from "./terrainWorker-BjxpqdfH.js";
|
|
2
|
+
import { Box3, BufferAttribute, BufferGeometry, Camera, CanvasTexture, Color, ColorRepresentation, Data3DTexture, DataTexture, DirectionalLight, Frustum, HemisphereLight, InstancedBufferGeometry, InstancedMesh, Material, Matrix3, Matrix4, Mesh, Object3D, OrthographicCamera, PerspectiveCamera, Quaternion, Scene, Skeleton, SkinnedMesh, Sprite, Texture, ToneMapping, Vector2, Vector3, Vector3Like, Vector3Tuple, Vector4Tuple } from "three";
|
|
3
|
+
import { IndirectStorageBufferAttribute, LightingModel, LightingModelDirectInput, Material as Material$1, MeshBasicNodeMaterial, MeshToonNodeMaterial, MeshToonNodeMaterialParameters, Node, NodeBuilder, NodeFrame, NodeMaterial, PassNode, RenderPipeline, RenderTarget, Renderer, StorageBufferAttribute, Texture as Texture$1, TextureNode, ToonOutlinePassNode, UniformArrayNode, UniformNode, WebGPURenderer } from "three/webgpu";
|
|
4
|
+
import { CSMShadowNode, CSMShadowNodeData } from "three/examples/jsm/csm/CSMShadowNode.js";
|
|
5
|
+
import { Capsule } from "three/examples/jsm/math/Capsule.js";
|
|
6
|
+
import GTAONode from "three/examples/jsm/tsl/display/GTAONode.js";
|
|
7
|
+
import GodraysNode from "three/examples/jsm/tsl/display/GodraysNode.js";
|
|
8
|
+
export interface SkyUniforms {
|
|
9
|
+
cloudCoverage: UniformNode<"float", number>;
|
|
10
|
+
cloudDrift: UniformNode<"vec2", Vector2>;
|
|
11
|
+
cloudFrontBackBlend: UniformNode<"float", number>;
|
|
12
|
+
cloudLitBackColor: UniformNode<"color", Color>;
|
|
13
|
+
cloudLitColor: UniformNode<"color", Color>;
|
|
14
|
+
cloudShadeBackColor: UniformNode<"color", Color>;
|
|
15
|
+
cloudShadeColor: UniformNode<"color", Color>;
|
|
16
|
+
cloudSunBrighten: UniformNode<"float", number>;
|
|
17
|
+
frontBackBlend: UniformNode<"float", number>;
|
|
18
|
+
haloColor: UniformNode<"color", Color>;
|
|
19
|
+
haloHeight: UniformNode<"float", number>;
|
|
20
|
+
horizonBackColor: UniformNode<"color", Color>;
|
|
21
|
+
horizonBand: UniformNode<"float", number>;
|
|
22
|
+
horizonColor: UniformNode<"color", Color>;
|
|
23
|
+
lightColor: UniformNode<"color", Color>;
|
|
24
|
+
moonDirection: UniformNode<"vec3", Vector3>;
|
|
25
|
+
moonGlowColor: UniformNode<"color", Color>;
|
|
26
|
+
moonSize: UniformNode<"float", number>;
|
|
27
|
+
starIntensity: UniformNode<"float", number>;
|
|
28
|
+
sunDirection: UniformNode<"vec3", Vector3>;
|
|
29
|
+
sunHaloColor: UniformNode<"color", Color>;
|
|
30
|
+
sunHaloSize: UniformNode<"float", number>;
|
|
31
|
+
zenithBackColor: UniformNode<"color", Color>;
|
|
32
|
+
zenithColor: UniformNode<"color", Color>;
|
|
33
|
+
}
|
|
34
|
+
export declare const applyLightningFlash: (flash: number, flashColor: Color, skyUniforms: SkyUniforms, hemisphere: HemisphereLight) => void;
|
|
35
|
+
export interface PrecipitationSettings {
|
|
36
|
+
fallSpeed: number;
|
|
37
|
+
length: number;
|
|
38
|
+
opacity: number;
|
|
39
|
+
sway: number;
|
|
40
|
+
width: number;
|
|
41
|
+
windDrift: number;
|
|
42
|
+
}
|
|
43
|
+
export interface PrecipitationUniforms {
|
|
44
|
+
density: UniformNode<"float", number>;
|
|
45
|
+
eye: UniformNode<"vec3", Vector3>;
|
|
46
|
+
fallSpeed: UniformNode<"float", number>;
|
|
47
|
+
length: UniformNode<"float", number>;
|
|
48
|
+
opacity: UniformNode<"float", number>;
|
|
49
|
+
splashDensity: UniformNode<"float", number>;
|
|
50
|
+
sway: UniformNode<"float", number>;
|
|
51
|
+
width: UniformNode<"float", number>;
|
|
52
|
+
windDrift: UniformNode<"float", number>;
|
|
53
|
+
}
|
|
54
|
+
export declare const applyPrecipitationSettings: ({ fallSpeed, length, opacity, sway, width, windDrift }: PrecipitationSettings, precipitationUniforms: PrecipitationUniforms) => void;
|
|
55
|
+
export interface BaseSkyState {
|
|
56
|
+
cloudLitColor: Color;
|
|
57
|
+
cloudShadeColor: Color;
|
|
58
|
+
hemisphereGroundColor: Color;
|
|
59
|
+
hemisphereIntensity: number;
|
|
60
|
+
hemisphereSkyColor: Color;
|
|
61
|
+
horizonColor: Color;
|
|
62
|
+
lightColor: Color;
|
|
63
|
+
lightIntensity: number;
|
|
64
|
+
starIntensity: number;
|
|
65
|
+
zenithColor: Color;
|
|
66
|
+
}
|
|
67
|
+
export interface SkyShape {
|
|
68
|
+
frontBackBlend: number;
|
|
69
|
+
haloHeight: number;
|
|
70
|
+
horizonBand: number;
|
|
71
|
+
moonSize: number;
|
|
72
|
+
sunHaloSize: number;
|
|
73
|
+
}
|
|
74
|
+
export interface WhiteBalance {
|
|
75
|
+
temperature: number;
|
|
76
|
+
tint: number;
|
|
77
|
+
}
|
|
78
|
+
export interface SkyState extends BaseSkyState {
|
|
79
|
+
cloudLitBackColor?: Color;
|
|
80
|
+
cloudShadeBackColor?: Color;
|
|
81
|
+
fogColor?: Color;
|
|
82
|
+
fogDensity?: number;
|
|
83
|
+
fogHeightFalloff?: number;
|
|
84
|
+
fogMaxOpacity?: number;
|
|
85
|
+
haloColor?: Color;
|
|
86
|
+
horizonBackColor?: Color;
|
|
87
|
+
lightDirection: Vector3;
|
|
88
|
+
moonDirection: Vector3;
|
|
89
|
+
moonGlowColor?: Color;
|
|
90
|
+
shape?: SkyShape;
|
|
91
|
+
sunDirection: Vector3;
|
|
92
|
+
sunHaloColor?: Color;
|
|
93
|
+
whiteBalance?: WhiteBalance;
|
|
94
|
+
zenithBackColor?: Color;
|
|
95
|
+
}
|
|
96
|
+
export interface LightUniforms {
|
|
97
|
+
lightColor: UniformNode<"color", Color>;
|
|
98
|
+
rimColor: UniformNode<"color", Color>;
|
|
99
|
+
rimStrength: UniformNode<"float", number>;
|
|
100
|
+
sunDirection: UniformNode<"vec3", Vector3>;
|
|
101
|
+
wetness: UniformNode<"float", number>;
|
|
102
|
+
}
|
|
103
|
+
export interface FogUniforms {
|
|
104
|
+
baseHeight: UniformNode<"float", number>;
|
|
105
|
+
color: UniformNode<"color", Color>;
|
|
106
|
+
density: UniformNode<"float", number>;
|
|
107
|
+
heightFalloff: UniformNode<"float", number>;
|
|
108
|
+
maxOpacity: UniformNode<"float", number>;
|
|
109
|
+
scatterColor: UniformNode<"color", Color>;
|
|
110
|
+
scatterDirection: UniformNode<"vec3", Vector3>;
|
|
111
|
+
scatterPower: UniformNode<"float", number>;
|
|
112
|
+
scatterStrength: UniformNode<"float", number>;
|
|
113
|
+
startDistance: UniformNode<"float", number>;
|
|
114
|
+
}
|
|
115
|
+
export interface PostUniforms {
|
|
116
|
+
godraysColor: UniformNode<"color", Color>;
|
|
117
|
+
gradeIntensity: UniformNode<"float", number>;
|
|
118
|
+
outlineColor: UniformNode<"color", Color>;
|
|
119
|
+
outlineFadeDistance: UniformNode<"float", number>;
|
|
120
|
+
outlineThickness: UniformNode<"float", number>;
|
|
121
|
+
whiteBalance: UniformNode<"mat3", Matrix3>;
|
|
122
|
+
}
|
|
123
|
+
export interface SkyTargets {
|
|
124
|
+
fogUniforms: FogUniforms;
|
|
125
|
+
godraysLight?: DirectionalLight;
|
|
126
|
+
hemisphere: HemisphereLight;
|
|
127
|
+
light: DirectionalLight;
|
|
128
|
+
lightDistance: number;
|
|
129
|
+
lightUniforms: LightUniforms;
|
|
130
|
+
postUniforms: PostUniforms;
|
|
131
|
+
skyUniforms: SkyUniforms;
|
|
132
|
+
}
|
|
133
|
+
export declare const applySkyState: (skyState: SkyState, { fogUniforms, godraysLight, hemisphere, light, lightDistance, lightUniforms, postUniforms, skyUniforms }: SkyTargets) => void;
|
|
134
|
+
export declare enum PrecipitationKind {
|
|
135
|
+
Rain = "Rain",
|
|
136
|
+
Sand = "Sand",
|
|
137
|
+
Snow = "Snow"
|
|
138
|
+
}
|
|
139
|
+
export interface WeatherState {
|
|
140
|
+
cloudCoverage: number;
|
|
141
|
+
fogColor: number;
|
|
142
|
+
fogColorAmount: number;
|
|
143
|
+
fogDensity: number;
|
|
144
|
+
lightningRate: number;
|
|
145
|
+
precipitationDensity: number;
|
|
146
|
+
precipitationKind: PrecipitationKind;
|
|
147
|
+
wetness: number;
|
|
148
|
+
}
|
|
149
|
+
export interface WeatherTargets {
|
|
150
|
+
fogUniforms: FogUniforms;
|
|
151
|
+
lightUniforms: LightUniforms;
|
|
152
|
+
precipitationUniforms: PrecipitationUniforms;
|
|
153
|
+
skyUniforms: SkyUniforms;
|
|
154
|
+
}
|
|
155
|
+
export declare const applyWeatherState: ({ cloudCoverage, fogDensity, precipitationDensity, precipitationKind, wetness }: WeatherState, { fogUniforms, lightUniforms, precipitationUniforms, skyUniforms }: WeatherTargets, baseCloudCoverage: number, baseFogDensity: number) => void;
|
|
156
|
+
export interface WeatherPrecipitation {
|
|
157
|
+
density: number;
|
|
158
|
+
kind: PrecipitationKind;
|
|
159
|
+
}
|
|
160
|
+
export interface WeatherSettings {
|
|
161
|
+
cloudCoverage: number;
|
|
162
|
+
fogColor?: number;
|
|
163
|
+
fogDensity: number;
|
|
164
|
+
lightningRate?: number;
|
|
165
|
+
precipitation?: WeatherPrecipitation;
|
|
166
|
+
wetness: number;
|
|
167
|
+
}
|
|
168
|
+
export declare const blendWeatherState: (from: Readonly<WeatherState>, { cloudCoverage, fogColor, fogDensity, lightningRate, precipitation, wetness }: WeatherSettings, amount: number, weatherState: WeatherState) => void;
|
|
169
|
+
export declare const checkSunTurned: (drawnDirection: Vector3, direction: Vector3) => boolean;
|
|
170
|
+
export interface LightningBolt {
|
|
171
|
+
directions: Float32Array;
|
|
172
|
+
indices: Uint32Array;
|
|
173
|
+
positions: Float32Array;
|
|
174
|
+
sides: Float32Array;
|
|
175
|
+
}
|
|
176
|
+
export interface LightningBoltOptions {
|
|
177
|
+
branchCount: number;
|
|
178
|
+
height: number;
|
|
179
|
+
roughness: number;
|
|
180
|
+
seed: number;
|
|
181
|
+
segmentCount: number;
|
|
182
|
+
width: number;
|
|
183
|
+
}
|
|
184
|
+
export declare const computeLightningBolt: ({ branchCount, height, roughness, seed, segmentCount, width }: LightningBoltOptions) => LightningBolt;
|
|
185
|
+
export declare const computeLightningFlash: (elapsed: number) => number;
|
|
186
|
+
export declare const computeSunDirection: (minutes: number, tilt: number, sunDirection: Vector3) => Vector3;
|
|
187
|
+
export interface LightningFlashPulse {
|
|
188
|
+
seconds: number;
|
|
189
|
+
strength: number;
|
|
190
|
+
}
|
|
191
|
+
export interface SkyGradient {
|
|
192
|
+
green: readonly number[];
|
|
193
|
+
red: readonly number[];
|
|
194
|
+
}
|
|
195
|
+
export declare enum WeatherKind {
|
|
196
|
+
Clear = "Clear",
|
|
197
|
+
Cloudy = "Cloudy",
|
|
198
|
+
Eruption = "Eruption",
|
|
199
|
+
Fog = "Fog",
|
|
200
|
+
Rain = "Rain",
|
|
201
|
+
Sandstorm = "Sandstorm",
|
|
202
|
+
Snow = "Snow",
|
|
203
|
+
Snowstorm = "Snowstorm",
|
|
204
|
+
Thunderstorm = "Thunderstorm"
|
|
205
|
+
}
|
|
206
|
+
export declare const SUN_REDRAW_COSINE: number;
|
|
207
|
+
export declare const DEFAULT_SKY_SHAPE: Readonly<SkyShape>;
|
|
208
|
+
export declare const DEFAULT_SKY_GRADIENT: Readonly<SkyGradient>;
|
|
209
|
+
export declare const PRECIPITATION_COUNT = 2048;
|
|
210
|
+
export declare const PRECIPITATION_VOLUME_SIZE = 60;
|
|
211
|
+
export declare const PRECIPITATION_VOLUME_HEIGHT = 30;
|
|
212
|
+
export declare const PRECIPITATION_SWAY_SPEED = 1.3;
|
|
213
|
+
export declare const PRECIPITATION_SETTINGS_MAP: Readonly<Record<PrecipitationKind, PrecipitationSettings>>;
|
|
214
|
+
export declare const WEATHER_SETTINGS_MAP: Readonly<Record<WeatherKind, WeatherSettings>>;
|
|
215
|
+
export declare const WEATHER_TRANSITION_SECONDS = 9;
|
|
216
|
+
export declare const LIGHTNING_FLASH_PULSES: readonly LightningFlashPulse[];
|
|
217
|
+
export declare const LIGHTNING_FLASH_DECAY_SECONDS = .08;
|
|
218
|
+
export declare const LIGHTNING_FLASH_COLOR = 14344191;
|
|
219
|
+
export declare const LIGHTNING_FLASH_SKY = .6;
|
|
220
|
+
export declare const LIGHTNING_FLASH_AMBIENT = 1.2;
|
|
221
|
+
export declare const LIGHTNING_FLASH_END = .01;
|
|
222
|
+
export declare const LIGHTNING_BOLT_OPTIONS: Readonly<Pick<LightningBoltOptions, "branchCount" | "height" | "roughness" | "segmentCount" | "width">>;
|
|
223
|
+
export declare const LIGHTNING_BOLT_COLOR = 15263487;
|
|
224
|
+
export declare const LIGHTNING_BOLT_BRIGHTNESS = 3;
|
|
225
|
+
export declare const LIGHTNING_MIN_DISTANCE = 150;
|
|
226
|
+
export declare const LIGHTNING_MAX_DISTANCE = 600;
|
|
227
|
+
export declare const SPLASH_COUNT = 768;
|
|
228
|
+
export declare const SPLASH_RADIUS = 16;
|
|
229
|
+
export declare const SPLASH_LIFETIME = .35;
|
|
230
|
+
export declare const SPLASH_SIZE = .4;
|
|
231
|
+
export declare const SPLASH_OPACITY = .5;
|
|
232
|
+
export declare const SPLASH_LIFT = .03;
|
|
233
|
+
export interface CloudSprite {
|
|
234
|
+
lit: [number, number][][];
|
|
235
|
+
outline: [number, number][][];
|
|
236
|
+
}
|
|
237
|
+
export declare const createCloudAtlasTexture: (sprites: readonly CloudSprite[], cellSize: number) => CanvasTexture<OffscreenCanvas>;
|
|
238
|
+
export interface CloudBandSprite {
|
|
239
|
+
cover: UniformNode<"float", number>;
|
|
240
|
+
dispose: () => void;
|
|
241
|
+
places: [number, number, number][];
|
|
242
|
+
sprite: Sprite;
|
|
243
|
+
}
|
|
244
|
+
export interface CloudBandSpriteOptions {
|
|
245
|
+
aspect: number;
|
|
246
|
+
spriteCount: number;
|
|
247
|
+
}
|
|
248
|
+
export interface CloudPlacement {
|
|
249
|
+
position: [number, number, number];
|
|
250
|
+
spriteIndex: number;
|
|
251
|
+
width: number;
|
|
252
|
+
}
|
|
253
|
+
export declare const createCloudBandSprite: (atlas: Texture, clouds: readonly CloudPlacement[], { aspect, spriteCount }: CloudBandSpriteOptions, skyUniforms: SkyUniforms) => CloudBandSprite;
|
|
254
|
+
export interface CloudLayerDome {
|
|
255
|
+
center: readonly number[];
|
|
256
|
+
elevations: readonly number[];
|
|
257
|
+
far: readonly number[];
|
|
258
|
+
near: readonly number[];
|
|
259
|
+
normalElevations: readonly number[];
|
|
260
|
+
turn: number;
|
|
261
|
+
wisps: readonly number[];
|
|
262
|
+
wispsTurn: number;
|
|
263
|
+
}
|
|
264
|
+
export declare const createCloudLayerProfileTexture: ({ elevations, far, near, normalElevations, wisps }: Pick<CloudLayerDome, "elevations" | "far" | "near" | "normalElevations" | "wisps">) => DataTexture;
|
|
265
|
+
export interface SpectralNoiseChannel {
|
|
266
|
+
amplitudes: number[];
|
|
267
|
+
correlation?: {
|
|
268
|
+
channel: number;
|
|
269
|
+
share: number;
|
|
270
|
+
};
|
|
271
|
+
mean: number;
|
|
272
|
+
quantiles?: number[][];
|
|
273
|
+
}
|
|
274
|
+
export interface SpectralNoiseProfile {
|
|
275
|
+
channels: SpectralNoiseChannel[];
|
|
276
|
+
height: number;
|
|
277
|
+
width: number;
|
|
278
|
+
}
|
|
279
|
+
export declare const createCloudLayerTexture: ({ height, width }: Pick<SpectralNoiseProfile, "height" | "width">) => DataTexture;
|
|
280
|
+
export interface CloudLayerTextureProfiles {
|
|
281
|
+
curl: SpectralNoiseProfile;
|
|
282
|
+
density: SpectralNoiseProfile;
|
|
283
|
+
normal: {
|
|
284
|
+
bias: number[];
|
|
285
|
+
height: SpectralNoiseProfile;
|
|
286
|
+
};
|
|
287
|
+
wisps: SpectralNoiseProfile;
|
|
288
|
+
}
|
|
289
|
+
export declare const createCloudLayerTextures: ({ curl, density, normal, wisps }: CloudLayerTextureProfiles) => {
|
|
290
|
+
curl: DataTexture;
|
|
291
|
+
density: DataTexture;
|
|
292
|
+
normal: DataTexture;
|
|
293
|
+
wisps: DataTexture;
|
|
294
|
+
};
|
|
295
|
+
export interface CloudLayerUniforms {
|
|
296
|
+
center: UniformNode<"vec2", Vector2>;
|
|
297
|
+
curl: TextureNode;
|
|
298
|
+
curlAmplitude: UniformNode<"float", number>;
|
|
299
|
+
curlSpeed: UniformNode<"float", number>;
|
|
300
|
+
curlTiling: UniformNode<"float", number>;
|
|
301
|
+
density: TextureNode;
|
|
302
|
+
direction: UniformNode<"vec2", Vector2>;
|
|
303
|
+
elapsedTime: UniformNode<"float", number>;
|
|
304
|
+
height: UniformNode<"float", number>;
|
|
305
|
+
lightDirection: UniformNode<"vec3", Vector3>;
|
|
306
|
+
normal: TextureNode;
|
|
307
|
+
normalYScale: UniformNode<"float", number>;
|
|
308
|
+
opacity: UniformNode<"float", number>;
|
|
309
|
+
profile: TextureNode;
|
|
310
|
+
smoothness: UniformNode<"vec2", Vector2>;
|
|
311
|
+
sunBrightness: UniformNode<"float", number>;
|
|
312
|
+
sunRimLightRadius: UniformNode<"float", number>;
|
|
313
|
+
tiling: UniformNode<"float", number>;
|
|
314
|
+
turn: UniformNode<"float", number>;
|
|
315
|
+
weather: UniformNode<"vec3", Vector3>;
|
|
316
|
+
wisps: TextureNode;
|
|
317
|
+
wispsCoverage: UniformNode<"float", number>;
|
|
318
|
+
wispsElapsedTime: UniformNode<"float", number>;
|
|
319
|
+
wispsOpacity: UniformNode<"float", number>;
|
|
320
|
+
wispsTurn: UniformNode<"float", number>;
|
|
321
|
+
}
|
|
322
|
+
export declare const createCloudLayerUniforms: ({ center, turn, wispsTurn, ...profiles }: CloudLayerDome, textures: Record<"curl" | "density" | "normal" | "wisps", Texture>) => CloudLayerUniforms;
|
|
323
|
+
export declare const createLightningBoltGeometry: ({ directions, indices, positions, sides }: LightningBolt) => BufferGeometry;
|
|
324
|
+
export declare const createPrecipitationGeometry: (particleCount: number) => InstancedBufferGeometry;
|
|
325
|
+
export declare const createPrecipitationUniforms: () => PrecipitationUniforms;
|
|
326
|
+
export declare const createSkyGradientTexture: ({ green, red }: SkyGradient) => DataTexture;
|
|
327
|
+
export declare const createSkyState: () => SkyState;
|
|
328
|
+
export declare const createSkyUniforms: () => SkyUniforms;
|
|
329
|
+
export declare class AnchoredCascadeShadowNode extends CSMShadowNode {
|
|
330
|
+
#private;
|
|
331
|
+
anchor: Vector3;
|
|
332
|
+
constructor(light: DirectionalLight, data: CSMShadowNodeData);
|
|
333
|
+
override updateBefore(frame: NodeFrame): undefined;
|
|
334
|
+
}
|
|
335
|
+
export interface SunLight {
|
|
336
|
+
cascadedShadowNode: AnchoredCascadeShadowNode;
|
|
337
|
+
light: DirectionalLight;
|
|
338
|
+
}
|
|
339
|
+
export interface SunLightOptions {
|
|
340
|
+
cascadeCount: number;
|
|
341
|
+
maxFar: number;
|
|
342
|
+
shadowMapSize: number;
|
|
343
|
+
}
|
|
344
|
+
export declare const createSunLight: ({ cascadeCount, maxFar, shadowMapSize }: SunLightOptions) => SunLight;
|
|
345
|
+
export declare const getCloudAtlasColumns: (spriteCount: number) => number;
|
|
346
|
+
export declare const orderByViewDepth: (places: readonly (readonly number[])[], { elements }: Matrix4, depths: Float64Array, order: Uint32Array) => boolean;
|
|
347
|
+
export interface CloudBandOptions {
|
|
348
|
+
count: number;
|
|
349
|
+
distanceRange: [number, number];
|
|
350
|
+
heightRange: [number, number];
|
|
351
|
+
seed: number;
|
|
352
|
+
widthRange: [number, number];
|
|
353
|
+
}
|
|
354
|
+
export declare const placeCloudBand: ({ count, distanceRange: [near, far], heightRange: [low, high], seed, widthRange: [narrow, wide] }: CloudBandOptions, spriteCount: number) => CloudPlacement[];
|
|
355
|
+
export interface SkyKeyframe extends BaseSkyState {
|
|
356
|
+
minutes: number;
|
|
357
|
+
}
|
|
358
|
+
export declare const sampleSkyState: (skyKeyframes: readonly SkyKeyframe[], minutes: number, tilt: number, skyState: SkyState) => SkyState;
|
|
359
|
+
export declare const synthesizeCloudLayerTextures: ({ curl, density, normal, wisps }: CloudLayerTextureProfiles, textures: Record<"curl" | "density" | "normal" | "wisps", DataTexture>) => Promise<void>;
|
|
360
|
+
export declare const writeCloudLayerTexture: (texture: DataTexture, readTexel: (index: number) => readonly number[]) => void;
|
|
361
|
+
export interface MusicNote {
|
|
362
|
+
duration: number;
|
|
363
|
+
pitch: number;
|
|
364
|
+
start: number;
|
|
365
|
+
velocity: number;
|
|
366
|
+
}
|
|
367
|
+
export interface MusicSampleRange {
|
|
368
|
+
highKey: number;
|
|
369
|
+
highVelocity: number;
|
|
370
|
+
lowKey: number;
|
|
371
|
+
lowVelocity: number;
|
|
372
|
+
}
|
|
373
|
+
export interface MusicRecording extends MusicSampleRange {
|
|
374
|
+
file: string;
|
|
375
|
+
gain: number;
|
|
376
|
+
keyCenter: number;
|
|
377
|
+
tune: number;
|
|
378
|
+
}
|
|
379
|
+
export interface Instrument {
|
|
380
|
+
attack: number;
|
|
381
|
+
decay: number;
|
|
382
|
+
harmonics: number[];
|
|
383
|
+
level: number;
|
|
384
|
+
noiseBands: number[];
|
|
385
|
+
recordingLevel: number;
|
|
386
|
+
recordings: MusicRecording[];
|
|
387
|
+
release: number;
|
|
388
|
+
sustain: number;
|
|
389
|
+
tuning: number;
|
|
390
|
+
}
|
|
391
|
+
export interface MusicVoice {
|
|
392
|
+
instrument: Instrument;
|
|
393
|
+
notes: MusicNote[];
|
|
394
|
+
}
|
|
395
|
+
export interface ScheduledMusicNote {
|
|
396
|
+
note: MusicNote;
|
|
397
|
+
time: number;
|
|
398
|
+
voice: MusicVoice;
|
|
399
|
+
}
|
|
400
|
+
export interface MusicSegment {
|
|
401
|
+
duration: number;
|
|
402
|
+
expression: number[];
|
|
403
|
+
voices: MusicVoice[];
|
|
404
|
+
volume: number;
|
|
405
|
+
}
|
|
406
|
+
export interface ScheduledMusicSegment {
|
|
407
|
+
segment: MusicSegment;
|
|
408
|
+
start: number;
|
|
409
|
+
}
|
|
410
|
+
export declare const collectMusicNotes: ({ segment, start }: ScheduledMusicSegment, from: number, to: number) => ScheduledMusicNote[];
|
|
411
|
+
export interface Music {
|
|
412
|
+
isLooping: boolean;
|
|
413
|
+
order: number[];
|
|
414
|
+
segments: MusicSegment[];
|
|
415
|
+
}
|
|
416
|
+
export declare const collectMusicSegments: ({ isLooping, order, segments }: Music, from: number, to: number) => ScheduledMusicSegment[];
|
|
417
|
+
export declare const computeNoiseSamples: (noiseBands: readonly number[], sampleRate: number) => Float32Array;
|
|
418
|
+
export interface SoundEffect {
|
|
419
|
+
frameSeconds: number;
|
|
420
|
+
leftLevels: number[][];
|
|
421
|
+
rightLevels: number[][];
|
|
422
|
+
sharedLevels: number[][];
|
|
423
|
+
}
|
|
424
|
+
export declare const computeSoundEffectSamples: ({ frameSeconds, leftLevels, rightLevels, sharedLevels }: SoundEffect, sampleRate: number, seed?: number) => [Float32Array, Float32Array];
|
|
425
|
+
export declare const MUSIC_LOOKAHEAD_SECONDS = 2;
|
|
426
|
+
export declare const MUSIC_SCHEDULE_INTERVAL_MS = 500;
|
|
427
|
+
export declare const RELEASE_TIME_CONSTANTS = 7;
|
|
428
|
+
export declare const MUSIC_NOISE_LENGTH: number;
|
|
429
|
+
export declare const MUSIC_NOISE_BAND_CENTRES: number[];
|
|
430
|
+
export declare const MUSIC_EXPRESSION_WINDOW_SECONDS = 8;
|
|
431
|
+
export declare const A4_PITCH = 69;
|
|
432
|
+
export declare const A4_FREQUENCY = 440;
|
|
433
|
+
export declare const MIDI_VELOCITY_MAX = 127;
|
|
434
|
+
export declare const SOUND_EFFECT_BAND_EDGES: number[];
|
|
435
|
+
export declare const SOUND_EFFECT_FRAME_LENGTH = 2048;
|
|
436
|
+
export declare const createInstrumentWave: (context: BaseAudioContext, harmonics: number[]) => PeriodicWave;
|
|
437
|
+
export interface MusicPlayer {
|
|
438
|
+
start: () => void;
|
|
439
|
+
stop: () => void;
|
|
440
|
+
}
|
|
441
|
+
export declare const createMusicPlayer: (context: AudioContext, music: Music, recordingBufferMap: ReadonlyMap<string, AudioBuffer>, destination?: AudioNode) => MusicPlayer;
|
|
442
|
+
export declare const createNoiseBuffer: (context: BaseAudioContext, noiseBands: number[]) => AudioBuffer | undefined;
|
|
443
|
+
export declare const createSoundEffectBuffer: (context: BaseAudioContext, soundEffect: SoundEffect) => AudioBuffer;
|
|
444
|
+
export declare const getMusicRecordingGain: ({ gain }: Pick<MusicRecording, "gain">, velocity: number) => number;
|
|
445
|
+
export declare const getMusicRecordingRate: ({ keyCenter, tune }: Pick<MusicRecording, "keyCenter" | "tune">, pitch: number, tuning: number) => number;
|
|
446
|
+
export declare const getSoundEffectBandBins: (sampleRate: number) => (readonly [number, number])[];
|
|
447
|
+
export declare const renderMusicSegment: (music: Music, segmentIndex: number, sampleRate: number, recordingBufferMap: ReadonlyMap<string, AudioBuffer>) => Promise<AudioBuffer>;
|
|
448
|
+
export declare const scheduleMusicExpression: (gain: AudioParam, expression: number[], start: number) => void;
|
|
449
|
+
export declare const scheduleMusicNote: (context: BaseAudioContext, destination: AudioNode, wave: PeriodicWave, noiseBuffer: AudioBuffer | undefined, { attack, decay, level, release, sustain, tuning }: Instrument, { duration, pitch, velocity }: MusicNote, time: number) => void;
|
|
450
|
+
export declare const scheduleMusicRecording: (context: BaseAudioContext, destination: AudioNode, recordingBufferMap: ReadonlyMap<string, AudioBuffer>, { recordingLevel, recordings, release, tuning }: Instrument, { duration, pitch, velocity }: MusicNote, time: number) => void;
|
|
451
|
+
export declare const selectMusicSample: <T extends MusicSampleRange>(samples: T[], pitch: number, velocity: number) => T | undefined;
|
|
452
|
+
export declare const transformFourier: (real: Float64Array, imaginary: Float64Array) => void;
|
|
453
|
+
export interface FollowCameraSettings {
|
|
454
|
+
defaultDistance: number;
|
|
455
|
+
horizontalSensitivity: number;
|
|
456
|
+
slopePitch: boolean;
|
|
457
|
+
verticalSensitivity: number;
|
|
458
|
+
}
|
|
459
|
+
export declare const FREE_CAMERA_BASE_SPEED = 8;
|
|
460
|
+
export declare const FREE_CAMERA_SPEED_PER_HEIGHT = .5;
|
|
461
|
+
export declare const FREE_CAMERA_CLEARANCE = 1.5;
|
|
462
|
+
export declare const FREE_CAMERA_MAX_PITCH: number;
|
|
463
|
+
export declare const FOLLOW_CAMERA_DEFAULT_SETTINGS: Readonly<FollowCameraSettings>;
|
|
464
|
+
export declare const FOLLOW_CAMERA_NEUTRAL_SENSITIVITY = 3;
|
|
465
|
+
export declare const FOLLOW_CAMERA_PIVOT_SHARE = .7;
|
|
466
|
+
export declare const FOLLOW_CAMERA_FOV = 45;
|
|
467
|
+
export declare const FOLLOW_CAMERA_MIN_PITCH: number;
|
|
468
|
+
export declare const FOLLOW_CAMERA_MAX_PITCH: number;
|
|
469
|
+
export declare const FOLLOW_CAMERA_MIN_DISTANCE = 1;
|
|
470
|
+
export declare const FOLLOW_CAMERA_MAX_DISTANCE = 6;
|
|
471
|
+
export declare const FOLLOW_CAMERA_DISTANCE_PER_ZOOM_STEP = .5;
|
|
472
|
+
export declare const FOLLOW_CAMERA_EASE_OUT_SPEED = 4;
|
|
473
|
+
export declare const FOLLOW_CAMERA_SLOPE_PITCH_SPEED = 4;
|
|
474
|
+
export declare const FOLLOW_CAMERA_CLEARANCE = .2;
|
|
475
|
+
export declare const FOLLOW_CAMERA_ARM_STEP = .25;
|
|
476
|
+
export declare enum InputAction {
|
|
477
|
+
Aim = "Aim",
|
|
478
|
+
Cancel = "Cancel",
|
|
479
|
+
Confirm = "Confirm",
|
|
480
|
+
Drop = "Drop",
|
|
481
|
+
ElementalBurst = "ElementalBurst",
|
|
482
|
+
ElementalSight = "ElementalSight",
|
|
483
|
+
ElementalSkill = "ElementalSkill",
|
|
484
|
+
HideInterface = "HideInterface",
|
|
485
|
+
Interact = "Interact",
|
|
486
|
+
Jump = "Jump",
|
|
487
|
+
NormalAttack = "NormalAttack",
|
|
488
|
+
OpenAdventurerHandbook = "OpenAdventurerHandbook",
|
|
489
|
+
OpenBattlePass = "OpenBattlePass",
|
|
490
|
+
OpenCharacter = "OpenCharacter",
|
|
491
|
+
OpenChat = "OpenChat",
|
|
492
|
+
OpenCoOp = "OpenCoOp",
|
|
493
|
+
OpenEvents = "OpenEvents",
|
|
494
|
+
OpenFriends = "OpenFriends",
|
|
495
|
+
OpenInventory = "OpenInventory",
|
|
496
|
+
OpenMap = "OpenMap",
|
|
497
|
+
OpenPaimonMenu = "OpenPaimonMenu",
|
|
498
|
+
OpenPartySetup = "OpenPartySetup",
|
|
499
|
+
OpenQuests = "OpenQuests",
|
|
500
|
+
OpenShortcutWheel = "OpenShortcutWheel",
|
|
501
|
+
OpenWish = "OpenWish",
|
|
502
|
+
QuestNavigation = "QuestNavigation",
|
|
503
|
+
QuickUseGadget = "QuickUseGadget",
|
|
504
|
+
ResetCamera = "ResetCamera",
|
|
505
|
+
ShowCursor = "ShowCursor",
|
|
506
|
+
Sprint = "Sprint",
|
|
507
|
+
SwitchToPartyMember1 = "SwitchToPartyMember1",
|
|
508
|
+
SwitchToPartyMember2 = "SwitchToPartyMember2",
|
|
509
|
+
SwitchToPartyMember3 = "SwitchToPartyMember3",
|
|
510
|
+
SwitchToPartyMember4 = "SwitchToPartyMember4",
|
|
511
|
+
SwitchToPartyMemberAndBurst1 = "SwitchToPartyMemberAndBurst1",
|
|
512
|
+
SwitchToPartyMemberAndBurst2 = "SwitchToPartyMemberAndBurst2",
|
|
513
|
+
SwitchToPartyMemberAndBurst3 = "SwitchToPartyMemberAndBurst3",
|
|
514
|
+
SwitchToPartyMemberAndBurst4 = "SwitchToPartyMemberAndBurst4",
|
|
515
|
+
SwitchWalkRun = "SwitchWalkRun"
|
|
516
|
+
}
|
|
517
|
+
export declare const InputActions: readonly InputAction[];
|
|
518
|
+
export interface InputState {
|
|
519
|
+
heldActions: ReadonlySet<InputAction>;
|
|
520
|
+
lookPitch: number;
|
|
521
|
+
lookYaw: number;
|
|
522
|
+
menuDown: number;
|
|
523
|
+
menuRight: number;
|
|
524
|
+
menuTabSteps: number;
|
|
525
|
+
moveForward: number;
|
|
526
|
+
moveRight: number;
|
|
527
|
+
moveUp: number;
|
|
528
|
+
pressedActions: ReadonlySet<InputAction>;
|
|
529
|
+
zoomSteps: number;
|
|
530
|
+
}
|
|
531
|
+
export interface FollowCamera {
|
|
532
|
+
follow: (pivot: Vector3, origin: Vector3, frameSeconds: number) => void;
|
|
533
|
+
look: (input: InputState, facing: number) => void;
|
|
534
|
+
reset: (facing: number) => void;
|
|
535
|
+
returnToDefaultDistance: () => void;
|
|
536
|
+
readonly yaw: number;
|
|
537
|
+
}
|
|
538
|
+
export interface GroundSample {
|
|
539
|
+
height: number;
|
|
540
|
+
normal: Vector3;
|
|
541
|
+
}
|
|
542
|
+
export interface GroundQuery {
|
|
543
|
+
getGround: (x: number, z: number) => GroundSample;
|
|
544
|
+
getWaterLevel: () => number;
|
|
545
|
+
}
|
|
546
|
+
export interface CapsulePush {
|
|
547
|
+
depth: number;
|
|
548
|
+
normal: Vector3;
|
|
549
|
+
}
|
|
550
|
+
export interface LandmarkCollider {
|
|
551
|
+
castSphere: (origin: Vector3, direction: Vector3, distance: number, radius: number) => number;
|
|
552
|
+
pushCapsule: (capsule: Capsule) => CapsulePush | undefined;
|
|
553
|
+
syncLandmarks: (root: Object3D) => void;
|
|
554
|
+
}
|
|
555
|
+
export interface FollowCameraOptions {
|
|
556
|
+
camera: PerspectiveCamera;
|
|
557
|
+
ground: GroundQuery;
|
|
558
|
+
landmarkCollider: LandmarkCollider;
|
|
559
|
+
settings: FollowCameraSettings;
|
|
560
|
+
}
|
|
561
|
+
export declare const createFollowCamera: ({ camera, ground, landmarkCollider, settings }: FollowCameraOptions) => FollowCamera;
|
|
562
|
+
export interface FreeCamera {
|
|
563
|
+
look: (input: InputState) => void;
|
|
564
|
+
step: (input: InputState, stepSeconds: number) => void;
|
|
565
|
+
}
|
|
566
|
+
export interface FreeCameraOptions {
|
|
567
|
+
camera: PerspectiveCamera;
|
|
568
|
+
ground: GroundQuery;
|
|
569
|
+
}
|
|
570
|
+
export declare const createFreeCamera: ({ camera, ground }: FreeCameraOptions) => FreeCamera;
|
|
571
|
+
export declare enum PmxSphereMode {
|
|
572
|
+
Disabled = 0,
|
|
573
|
+
Multiply = 1,
|
|
574
|
+
Add = 2,
|
|
575
|
+
AdditionalUv = 3
|
|
576
|
+
}
|
|
577
|
+
export declare const checkIsPmxSphereDrawn: (sphereMode: PmxSphereMode) => sphereMode is PmxSphereMode.Add | PmxSphereMode.Multiply;
|
|
578
|
+
export declare const checkTransparentTexels: (image: ImageBitmap) => boolean;
|
|
579
|
+
export declare const SHARED_TOON_RAMP_SHADES: readonly number[];
|
|
580
|
+
export declare enum CharacterMaterialKind {
|
|
581
|
+
Body = 0,
|
|
582
|
+
Face = 1,
|
|
583
|
+
Hair = 2
|
|
584
|
+
}
|
|
585
|
+
export interface FaceDraw {
|
|
586
|
+
flip: UniformNode<"float", number>;
|
|
587
|
+
flipFactor: number;
|
|
588
|
+
rotateOffset: number;
|
|
589
|
+
threshold: UniformNode<"float", number>;
|
|
590
|
+
}
|
|
591
|
+
export type ShadingRegionColours = Record<"five" | "four" | "one" | "three" | "two", Vector3Tuple>;
|
|
592
|
+
export interface OutlineRegions {
|
|
593
|
+
colors: ShadingRegionColours;
|
|
594
|
+
intensities: Record<keyof ShadingRegionColours, number>;
|
|
595
|
+
}
|
|
596
|
+
export declare enum RampLayout {
|
|
597
|
+
Horizontal = 0,
|
|
598
|
+
Vertical = 1
|
|
599
|
+
}
|
|
600
|
+
export interface ShadingRegionToggles {
|
|
601
|
+
five: boolean;
|
|
602
|
+
four: boolean;
|
|
603
|
+
three: boolean;
|
|
604
|
+
two: boolean;
|
|
605
|
+
}
|
|
606
|
+
export interface OutlineWidthKnots {
|
|
607
|
+
depths: Vector3Tuple;
|
|
608
|
+
scales: Vector3Tuple;
|
|
609
|
+
}
|
|
610
|
+
export interface CharacterShadingInputs {
|
|
611
|
+
brightness: number;
|
|
612
|
+
color: Vector3Tuple;
|
|
613
|
+
contrastScale: number;
|
|
614
|
+
coolShadowMultiplyColors: ShadingRegionColours;
|
|
615
|
+
coolShadowTone: number;
|
|
616
|
+
desaturateScale: number;
|
|
617
|
+
emissionColor: Vector3Tuple;
|
|
618
|
+
emissionScaler: number;
|
|
619
|
+
faceDraw: FaceDraw;
|
|
620
|
+
faceMap?: Texture;
|
|
621
|
+
faceSoftness: number;
|
|
622
|
+
isCoolShadow: boolean;
|
|
623
|
+
isEmissionFromAlpha: boolean;
|
|
624
|
+
isLightMapAo: boolean;
|
|
625
|
+
isOutlineVertexWeighted: boolean;
|
|
626
|
+
isVertexAo: boolean;
|
|
627
|
+
isVertexRampWidth: boolean;
|
|
628
|
+
kind: CharacterMaterialKind;
|
|
629
|
+
lightArea: number;
|
|
630
|
+
lightMapTexture?: Texture;
|
|
631
|
+
mainTexture?: Texture;
|
|
632
|
+
metalDarkColor: Vector3Tuple;
|
|
633
|
+
metalLightColor: Vector3Tuple;
|
|
634
|
+
metalTexture?: Texture;
|
|
635
|
+
outlineOffset?: {
|
|
636
|
+
blockBChannel: number;
|
|
637
|
+
size: number;
|
|
638
|
+
};
|
|
639
|
+
outlineRegions?: OutlineRegions;
|
|
640
|
+
outlineWidthKnots: OutlineWidthKnots;
|
|
641
|
+
rampLayout: RampLayout;
|
|
642
|
+
rampTexture: Texture;
|
|
643
|
+
rampWidth: number;
|
|
644
|
+
regionTints: Record<"five" | "four" | "three" | "two", Vector3Tuple>;
|
|
645
|
+
regionToggles: ShadingRegionToggles;
|
|
646
|
+
shadowMultiplyColors: ShadingRegionColours;
|
|
647
|
+
shininess: number;
|
|
648
|
+
specularColor: Vector3Tuple;
|
|
649
|
+
specularInShadow: number;
|
|
650
|
+
specularMultiplier: number;
|
|
651
|
+
sphere?: {
|
|
652
|
+
mode: PmxSphereMode.Add | PmxSphereMode.Multiply;
|
|
653
|
+
texture: Texture;
|
|
654
|
+
};
|
|
655
|
+
vertexAo: number;
|
|
656
|
+
vertexRampWidth: number;
|
|
657
|
+
}
|
|
658
|
+
export interface PmxMaterial {
|
|
659
|
+
ambientColor: Vector3Tuple;
|
|
660
|
+
diffuseColor: Vector4Tuple;
|
|
661
|
+
edgeColor: Vector4Tuple;
|
|
662
|
+
edgeSize: number;
|
|
663
|
+
indexCount: number;
|
|
664
|
+
isDoubleSided: boolean;
|
|
665
|
+
isOutlined: boolean;
|
|
666
|
+
isToonShared: boolean;
|
|
667
|
+
name: string;
|
|
668
|
+
specularColor: Vector3Tuple;
|
|
669
|
+
specularity: number;
|
|
670
|
+
sphereMode: PmxSphereMode;
|
|
671
|
+
sphereTextureIndex: number;
|
|
672
|
+
textureIndex: number;
|
|
673
|
+
toonIndex: number;
|
|
674
|
+
}
|
|
675
|
+
export interface CharacterMaterialOptions {
|
|
676
|
+
isTextureTransparent?: boolean;
|
|
677
|
+
lightUniforms: LightUniforms;
|
|
678
|
+
pmxMaterial: PmxMaterial;
|
|
679
|
+
rampTexture: DataTexture;
|
|
680
|
+
shadingInputs?: Partial<CharacterShadingInputs>;
|
|
681
|
+
sphereTexture?: Texture;
|
|
682
|
+
texture?: Texture;
|
|
683
|
+
toonTexture?: Texture;
|
|
684
|
+
}
|
|
685
|
+
export interface ToonEdge {
|
|
686
|
+
color: Node<"vec4"> | Vector4Tuple;
|
|
687
|
+
isVertexWeighted?: boolean;
|
|
688
|
+
offset?: {
|
|
689
|
+
blockBChannel: number;
|
|
690
|
+
size: number;
|
|
691
|
+
};
|
|
692
|
+
size: number;
|
|
693
|
+
widthKnots: OutlineWidthKnots;
|
|
694
|
+
}
|
|
695
|
+
export declare class ToonNodeMaterial extends MeshToonNodeMaterial {
|
|
696
|
+
edge?: ToonEdge;
|
|
697
|
+
instanceMatrix?: Node<"mat4">;
|
|
698
|
+
readonly isMeshToonMaterial: boolean;
|
|
699
|
+
override readonly isMeshToonNodeMaterial: boolean;
|
|
700
|
+
sphereMap?: Texture$1;
|
|
701
|
+
constructor(parameters: MeshToonNodeMaterialParameters, isOutlined: boolean, edge?: ToonEdge);
|
|
702
|
+
}
|
|
703
|
+
export declare const createCharacterMaterial: ({ isTextureTransparent, lightUniforms, pmxMaterial: { diffuseColor: [red, green, blue, opacity], edgeColor, edgeSize, isDoubleSided, isOutlined, isToonShared, specularColor, specularity, sphereMode, toonIndex }, rampTexture, shadingInputs: gameShadingInputs, sphereTexture, texture: diffuseTexture, toonTexture }: CharacterMaterialOptions) => ToonNodeMaterial;
|
|
704
|
+
type CharacterShadingOverrides = Partial<CharacterShadingInputs> & {
|
|
705
|
+
rampTexture: Texture;
|
|
706
|
+
};
|
|
707
|
+
export declare const createCharacterShadingInputs: (overrides: CharacterShadingOverrides) => CharacterShadingInputs;
|
|
708
|
+
export interface PmxBone {
|
|
709
|
+
name: string;
|
|
710
|
+
parentIndex: number;
|
|
711
|
+
position: Vector3Tuple;
|
|
712
|
+
}
|
|
713
|
+
export declare enum PmxJointKind {
|
|
714
|
+
SpringSixDegreesOfFreedom = 0,
|
|
715
|
+
SixDegreesOfFreedom = 1,
|
|
716
|
+
PointToPoint = 2,
|
|
717
|
+
ConeTwist = 3,
|
|
718
|
+
Slider = 4,
|
|
719
|
+
Hinge = 5
|
|
720
|
+
}
|
|
721
|
+
export interface PmxJoint {
|
|
722
|
+
firstRigidBodyIndex: number;
|
|
723
|
+
kind: PmxJointKind;
|
|
724
|
+
name: string;
|
|
725
|
+
position: Vector3Tuple;
|
|
726
|
+
rotation: Vector3Tuple;
|
|
727
|
+
rotationMaximum: Vector3Tuple;
|
|
728
|
+
rotationMinimum: Vector3Tuple;
|
|
729
|
+
rotationSpring: Vector3Tuple;
|
|
730
|
+
secondRigidBodyIndex: number;
|
|
731
|
+
translationMaximum: Vector3Tuple;
|
|
732
|
+
translationMinimum: Vector3Tuple;
|
|
733
|
+
translationSpring: Vector3Tuple;
|
|
734
|
+
}
|
|
735
|
+
export declare enum PmxMorphKind {
|
|
736
|
+
Group = 0,
|
|
737
|
+
Vertex = 1,
|
|
738
|
+
Bone = 2,
|
|
739
|
+
Uv = 3,
|
|
740
|
+
AdditionalUv1 = 4,
|
|
741
|
+
AdditionalUv2 = 5,
|
|
742
|
+
AdditionalUv3 = 6,
|
|
743
|
+
AdditionalUv4 = 7,
|
|
744
|
+
Material = 8,
|
|
745
|
+
Flip = 9,
|
|
746
|
+
Impulse = 10
|
|
747
|
+
}
|
|
748
|
+
export interface PmxMorph {
|
|
749
|
+
indices: Uint32Array;
|
|
750
|
+
kind: PmxMorphKind;
|
|
751
|
+
name: string;
|
|
752
|
+
values: Float32Array;
|
|
753
|
+
}
|
|
754
|
+
export declare enum PmxPhysicsMode {
|
|
755
|
+
FollowBone = 0,
|
|
756
|
+
Physics = 1,
|
|
757
|
+
PhysicsWithBone = 2
|
|
758
|
+
}
|
|
759
|
+
export declare enum PmxRigidBodyShape {
|
|
760
|
+
Sphere = 0,
|
|
761
|
+
Box = 1,
|
|
762
|
+
Capsule = 2
|
|
763
|
+
}
|
|
764
|
+
export interface PmxRigidBody {
|
|
765
|
+
angularDamping: number;
|
|
766
|
+
boneIndex: number;
|
|
767
|
+
friction: number;
|
|
768
|
+
group: number;
|
|
769
|
+
linearDamping: number;
|
|
770
|
+
mass: number;
|
|
771
|
+
name: string;
|
|
772
|
+
nonCollidingGroups: number;
|
|
773
|
+
physicsMode: PmxPhysicsMode;
|
|
774
|
+
position: Vector3Tuple;
|
|
775
|
+
restitution: number;
|
|
776
|
+
rotation: Vector3Tuple;
|
|
777
|
+
shape: PmxRigidBodyShape;
|
|
778
|
+
size: Vector3Tuple;
|
|
779
|
+
}
|
|
780
|
+
export interface PmxVertices {
|
|
781
|
+
normals: Float32Array;
|
|
782
|
+
positions: Float32Array;
|
|
783
|
+
skinIndices: Uint16Array;
|
|
784
|
+
skinWeights: Float32Array;
|
|
785
|
+
subUvs: Float32Array;
|
|
786
|
+
uvs: Float32Array;
|
|
787
|
+
}
|
|
788
|
+
export interface PmxModel {
|
|
789
|
+
bones: PmxBone[];
|
|
790
|
+
indices: Uint32Array;
|
|
791
|
+
joints: PmxJoint[];
|
|
792
|
+
materials: PmxMaterial[];
|
|
793
|
+
morphs: PmxMorph[];
|
|
794
|
+
name: string;
|
|
795
|
+
rigidBodies: PmxRigidBody[];
|
|
796
|
+
textures: string[];
|
|
797
|
+
vertices: PmxVertices;
|
|
798
|
+
}
|
|
799
|
+
export declare const createPmxGeometry: ({ indices, materials, vertices: { normals, positions, skinIndices, skinWeights, subUvs, uvs } }: Pick<PmxModel, "indices" | "materials" | "vertices">) => BufferGeometry;
|
|
800
|
+
export declare const createPmxMesh: <TMaterial extends Material>(pmxModel: PmxModel, materials: TMaterial[], unitMetres: number) => SkinnedMesh<BufferGeometry, TMaterial[]>;
|
|
801
|
+
export declare const createPmxSkeleton: (pmxBones: readonly PmxBone[]) => Skeleton;
|
|
802
|
+
export declare const createPmxTexture: (blob: Blob) => Promise<Texture>;
|
|
803
|
+
export declare const createPmxToonTexture: (blob: Blob) => Promise<Texture>;
|
|
804
|
+
export declare const getSharedToonRamp: (toonIndex: number) => DataTexture | undefined;
|
|
805
|
+
export declare const parsePmx: (buffer: ArrayBuffer) => PmxModel;
|
|
806
|
+
export declare class PmxReader {
|
|
807
|
+
#private;
|
|
808
|
+
readonly additionalVectorCount: number;
|
|
809
|
+
readonly boneIndexSize: number;
|
|
810
|
+
readonly materialIndexSize: number;
|
|
811
|
+
readonly morphIndexSize: number;
|
|
812
|
+
readonly rigidBodyIndexSize: number;
|
|
813
|
+
readonly textureIndexSize: number;
|
|
814
|
+
readonly vertexIndexSize: number;
|
|
815
|
+
constructor(buffer: ArrayBuffer);
|
|
816
|
+
readBoneIndex(): number;
|
|
817
|
+
readFloat32(): number;
|
|
818
|
+
readInt32(): number;
|
|
819
|
+
readMaterialIndex(): number;
|
|
820
|
+
readMirroredRotation(): Vector3Tuple;
|
|
821
|
+
readMirroredVector3(): Vector3Tuple;
|
|
822
|
+
readMirroredVector3Into(target: Float32Array, offset: number): void;
|
|
823
|
+
readMorphIndex(): number;
|
|
824
|
+
readRigidBodyIndex(): number;
|
|
825
|
+
readText(): string;
|
|
826
|
+
readTextureIndex(): number;
|
|
827
|
+
readUint8(): number;
|
|
828
|
+
readUint16(): number;
|
|
829
|
+
readVector3(): Vector3Tuple;
|
|
830
|
+
readVertexIndex(): number;
|
|
831
|
+
skip(byteCount: number): void;
|
|
832
|
+
}
|
|
833
|
+
export declare const parsePmxBones: (reader: PmxReader) => PmxBone[];
|
|
834
|
+
export declare const parsePmxJoints: (reader: PmxReader) => PmxJoint[];
|
|
835
|
+
export declare const parsePmxMaterials: (reader: PmxReader) => PmxMaterial[];
|
|
836
|
+
export declare const parsePmxMorphs: (reader: PmxReader) => PmxMorph[];
|
|
837
|
+
export declare const parsePmxRigidBodies: (reader: PmxReader) => PmxRigidBody[];
|
|
838
|
+
export declare const parsePmxVertices: (reader: PmxReader) => PmxVertices;
|
|
839
|
+
export declare const advanceStridePhase: (stridePhase: number, speed: number, strideMetres: number, delta: number) => number;
|
|
840
|
+
export declare enum LocomotionState {
|
|
841
|
+
Climb = "Climb",
|
|
842
|
+
ClimbJump = "ClimbJump",
|
|
843
|
+
Dash = "Dash",
|
|
844
|
+
Drown = "Drown",
|
|
845
|
+
Fall = "Fall",
|
|
846
|
+
Glide = "Glide",
|
|
847
|
+
Idle = "Idle",
|
|
848
|
+
Jump = "Jump",
|
|
849
|
+
Plunge = "Plunge",
|
|
850
|
+
Run = "Run",
|
|
851
|
+
Sprint = "Sprint",
|
|
852
|
+
Swim = "Swim",
|
|
853
|
+
SwimDash = "SwimDash",
|
|
854
|
+
Walk = "Walk"
|
|
855
|
+
}
|
|
856
|
+
export interface CharacterPoseInput {
|
|
857
|
+
elapsed: number;
|
|
858
|
+
state: LocomotionState;
|
|
859
|
+
stridePhase: number;
|
|
860
|
+
}
|
|
861
|
+
export declare enum MmdBoneName {
|
|
862
|
+
Center = "センター",
|
|
863
|
+
Head = "頭",
|
|
864
|
+
LeftAnkle = "左足首",
|
|
865
|
+
LeftArm = "左腕",
|
|
866
|
+
LeftElbow = "左ひじ",
|
|
867
|
+
LeftKnee = "左ひざ",
|
|
868
|
+
LeftLeg = "左足",
|
|
869
|
+
LeftShoulder = "左肩",
|
|
870
|
+
LeftWrist = "左手首",
|
|
871
|
+
Lower = "下半身",
|
|
872
|
+
Neck = "首",
|
|
873
|
+
RightAnkle = "右足首",
|
|
874
|
+
RightArm = "右腕",
|
|
875
|
+
RightElbow = "右ひじ",
|
|
876
|
+
RightKnee = "右ひざ",
|
|
877
|
+
RightLeg = "右足",
|
|
878
|
+
RightShoulder = "右肩",
|
|
879
|
+
RightWrist = "右手首",
|
|
880
|
+
Upper = "上半身",
|
|
881
|
+
Upper2 = "上半身2"
|
|
882
|
+
}
|
|
883
|
+
export type CharacterPoseRotations = Record<MmdBoneName, Quaternion>;
|
|
884
|
+
export declare const computeCharacterPose: ({ elapsed, state, stridePhase }: CharacterPoseInput, rotations: CharacterPoseRotations) => void;
|
|
885
|
+
export declare const POSE_BREATH_SECONDS = 4;
|
|
886
|
+
export declare const POSE_CHEST_BREATH_RADIANS = .02;
|
|
887
|
+
export declare const POSE_SHOULDER_BREATH_RADIANS = .02;
|
|
888
|
+
export declare const POSE_ARM_LOWER_RADIANS = 1.2;
|
|
889
|
+
export declare const POSE_ARM_CHAINS: readonly {
|
|
890
|
+
arm: MmdBoneName;
|
|
891
|
+
elbow: MmdBoneName;
|
|
892
|
+
tDirection: Vector3Tuple;
|
|
893
|
+
}[];
|
|
894
|
+
export declare const POSE_ARM_BEND_RADIANS = .2;
|
|
895
|
+
export declare const POSE_CROSSFADE_SECONDS = .25;
|
|
896
|
+
export interface PoseGait {
|
|
897
|
+
armBendRadians: number;
|
|
898
|
+
armSwingRadians: number;
|
|
899
|
+
kneeBendRadians: number;
|
|
900
|
+
leanRadians: number;
|
|
901
|
+
legSwingRadians: number;
|
|
902
|
+
strideMetres: number;
|
|
903
|
+
}
|
|
904
|
+
export declare const POSE_GAITS: Partial<Record<LocomotionState, PoseGait>>;
|
|
905
|
+
export interface PoseAirStance {
|
|
906
|
+
armLowerRadians: number;
|
|
907
|
+
kneeBendRadians: number;
|
|
908
|
+
leanRadians: number;
|
|
909
|
+
}
|
|
910
|
+
export declare const POSE_AIR_STANCES: Partial<Record<LocomotionState, PoseAirStance>>;
|
|
911
|
+
export declare const MMD_BONE_NAME_MAP: Record<MmdBoneName, string>;
|
|
912
|
+
export type CharacterBoneNameMap = Partial<Record<MmdBoneName, string>>;
|
|
913
|
+
export interface Locomotion {
|
|
914
|
+
capsuleHeight: number;
|
|
915
|
+
capsuleRadius: number;
|
|
916
|
+
climbJumpHeight: number;
|
|
917
|
+
climbJumpSeconds: number;
|
|
918
|
+
climbSpeed: number;
|
|
919
|
+
dashSeconds: number;
|
|
920
|
+
dashSpeed: number;
|
|
921
|
+
drownSeconds: number;
|
|
922
|
+
glideForwardSpeed: number;
|
|
923
|
+
glideMinHeight: number;
|
|
924
|
+
glideSinkSpeed: number;
|
|
925
|
+
gravity: number;
|
|
926
|
+
jumpHeight: number;
|
|
927
|
+
maxFallSpeed: number;
|
|
928
|
+
maxWalkableSlope: number;
|
|
929
|
+
plungeSpeed: number;
|
|
930
|
+
runSpeed: number;
|
|
931
|
+
sprintSpeed: number;
|
|
932
|
+
stepHeight: number;
|
|
933
|
+
swimDashSpeed: number;
|
|
934
|
+
swimDepth: number;
|
|
935
|
+
swimSpeed: number;
|
|
936
|
+
walkSpeed: number;
|
|
937
|
+
}
|
|
938
|
+
export interface LocomotionPhase {
|
|
939
|
+
state: LocomotionState;
|
|
940
|
+
stateSeconds: number;
|
|
941
|
+
}
|
|
942
|
+
export interface CharacterPoser {
|
|
943
|
+
update: (update: CharacterPoseUpdate) => void;
|
|
944
|
+
}
|
|
945
|
+
interface CharacterPoseUpdate {
|
|
946
|
+
delta: number;
|
|
947
|
+
locomotion: Locomotion;
|
|
948
|
+
phase: LocomotionPhase;
|
|
949
|
+
}
|
|
950
|
+
export declare const createCharacterPoser: (skinnedMesh: SkinnedMesh, boneNameMap?: CharacterBoneNameMap) => CharacterPoser;
|
|
951
|
+
export declare const createCharacterPoseRotations: () => CharacterPoseRotations;
|
|
952
|
+
export declare const findSkinnedMesh: (object: Object3D) => SkinnedMesh | undefined;
|
|
953
|
+
export declare const REGION_FLOORS: {
|
|
954
|
+
readonly five: 0.6;
|
|
955
|
+
readonly four: 0.2;
|
|
956
|
+
readonly three: 0.4;
|
|
957
|
+
readonly two: 0.8;
|
|
958
|
+
};
|
|
959
|
+
export declare const RAMP_ROW_BASE = .05;
|
|
960
|
+
export declare const COOL_RAMP_ROW_BASE = .55;
|
|
961
|
+
export declare const RAMP_ROW_STEP = .1;
|
|
962
|
+
export declare const NEUTRAL_LIGHT_MAP_GREEN = .5;
|
|
963
|
+
export declare const EMISSION_ALPHA_FLOOR = .01;
|
|
964
|
+
export declare const TOON_LOW = .05;
|
|
965
|
+
export declare const TOON_HIGH = .95;
|
|
966
|
+
export declare const MINIMUM_RAMP_WIDTH_VERTEX = .01;
|
|
967
|
+
export declare const MINIMUM_OUTLINE_KNOT_SPAN = .001;
|
|
968
|
+
export declare const OUTLINE_PROJECTION_SCALE = 2.414;
|
|
969
|
+
export declare const OUTLINE_WIDTH_SCALE = .41425;
|
|
970
|
+
export declare const UNIT_OUTLINE_WIDTH_KNOTS: OutlineWidthKnots;
|
|
971
|
+
export declare const OUTLINE_MAIN_TEXTURE_SHARE = .2;
|
|
972
|
+
export declare const DESATURATION_WEIGHTS: readonly [number, number, number];
|
|
973
|
+
export declare const HALF_LAMBERT_SCALE = .4975;
|
|
974
|
+
export declare const HALF_LAMBERT_OFFSET = .5;
|
|
975
|
+
export declare const DEFAULT_LIGHT_AREA: number;
|
|
976
|
+
export declare const DEFAULT_RAMP_WIDTH: number;
|
|
977
|
+
export declare const MINIMUM_FACE_THRESHOLD = 1e-4;
|
|
978
|
+
export declare const MAXIMUM_FACE_THRESHOLD = .9999;
|
|
979
|
+
export declare const MAXIMUM_WINDOW_FLOOR = .9989;
|
|
980
|
+
export declare const FLAT_LIGHT_MAP: Readonly<[number, number, number, number]>;
|
|
981
|
+
export declare const createCharacterShadingNode: (inputs: CharacterShadingInputs, { lightColor, sunDirection }: Pick<LightUniforms, "lightColor" | "sunDirection">) => Node<"vec3">;
|
|
982
|
+
export declare const createFaceShadeNode: (faceMap: Texture | undefined, softness: number, { flip, threshold }: FaceDraw) => Node<"float">;
|
|
983
|
+
export declare const createOutlineColorNode: ({ color, contrastScale, desaturateScale, lightMapTexture, mainTexture, regionTints, regionToggles }: CharacterShadingInputs, { colors, intensities }: OutlineRegions) => Node<"vec3">;
|
|
984
|
+
export declare const createOutlineScaleNode: (depths: Vector3Tuple, scales: Vector3Tuple) => Node<"float">;
|
|
985
|
+
export declare const createRampColumnNode: (threshold: Node<"float">, lightArea: number, rampWidth: Node<"float">) => Node<"float">;
|
|
986
|
+
export declare const createRampUvNode: (layout: RampLayout, column: Node<"float">, row: Node<"float">) => Node<"vec2">;
|
|
987
|
+
export declare const createShadingRegionNode: (alpha: Node<"float">, toggles: ShadingRegionToggles) => Node<"float">;
|
|
988
|
+
export declare const createToneNode: (colour: Node<"vec3">, desaturateScale: number, contrastScale: number) => Node<"vec3">;
|
|
989
|
+
export interface ToonThresholdNodeInputs {
|
|
990
|
+
isLightMapAo: boolean;
|
|
991
|
+
isVertexAo: boolean;
|
|
992
|
+
lightMapGreen: Node<"float">;
|
|
993
|
+
sunTerm: Node<"float">;
|
|
994
|
+
vertexAo: number;
|
|
995
|
+
}
|
|
996
|
+
export declare const createToonThresholdNode: ({ isLightMapAo, isVertexAo, lightMapGreen, sunTerm, vertexAo }: ToonThresholdNodeInputs) => Node<"float">;
|
|
997
|
+
export declare const getDesaturatedColour: (colour: Vector3, desaturateScale: number) => Vector3;
|
|
998
|
+
export declare const getOutlineDepth: (viewZ: number, projectionYScale: number) => number;
|
|
999
|
+
export declare const getOutlineScale: (depth: number, knotDepths: Vector3, knotScales: Vector3) => number;
|
|
1000
|
+
export declare const getRampColumn: (threshold: number, lightArea: number, rampWidth: number) => number;
|
|
1001
|
+
export declare const getRampRow: (region: number, isCoolShadow: boolean) => number;
|
|
1002
|
+
export interface RampWidthInputs {
|
|
1003
|
+
isVertexRampWidth: boolean;
|
|
1004
|
+
rampWidth: number;
|
|
1005
|
+
vertexRampWidth: number;
|
|
1006
|
+
}
|
|
1007
|
+
export declare const getRampWidth: ({ isVertexRampWidth, rampWidth, vertexRampWidth }: RampWidthInputs) => number;
|
|
1008
|
+
export declare const getShadingRegion: (alpha: number, toggles: ShadingRegionToggles) => number;
|
|
1009
|
+
export declare const getToneColour: (colour: Vector3, desaturateScale: number, contrastScale: number) => Vector3;
|
|
1010
|
+
interface ToonThresholdInputs {
|
|
1011
|
+
isLightMapAo: boolean;
|
|
1012
|
+
isVertexAo: boolean;
|
|
1013
|
+
lightMapGreen: number;
|
|
1014
|
+
sunTerm: number;
|
|
1015
|
+
vertexAo: number;
|
|
1016
|
+
}
|
|
1017
|
+
export declare const getToonThreshold: ({ isLightMapAo, isVertexAo, lightMapGreen, sunTerm, vertexAo }: ToonThresholdInputs) => number;
|
|
1018
|
+
export declare const selectRegionNode: <TNodeType>(region: Node<"float">, toRegionNode: (regionName: keyof ShadingRegionColours) => Node<TNodeType>) => Node<TNodeType>;
|
|
1019
|
+
export declare const createFaceDraw: ({ flipFactor, rotateOffset }?: Partial<Pick<FaceDraw, "flipFactor" | "rotateOffset">>) => FaceDraw;
|
|
1020
|
+
export declare const updateFaceDraw: (faceDraw: FaceDraw, lightDirection: Vector3, rootRotation: Quaternion) => void;
|
|
1021
|
+
export interface GameClock {
|
|
1022
|
+
minutes: number;
|
|
1023
|
+
minutesPerSecond: number;
|
|
1024
|
+
}
|
|
1025
|
+
export declare const advanceGameClock: (gameClock: GameClock, deltaSeconds: number) => void;
|
|
1026
|
+
export declare const MINUTES_PER_DAY = 1440;
|
|
1027
|
+
export declare const GAME_MINUTES_PER_SECOND = 1;
|
|
1028
|
+
export declare const GROUND_NORMAL_SPAN = .1;
|
|
1029
|
+
export declare const SPHERE_CAST_STRIDE_SHARE = .5;
|
|
1030
|
+
export declare const createGroundQuery: (getHeight: (x: number, z: number) => number, waterLevel: number) => GroundQuery;
|
|
1031
|
+
export declare const createLandmarkCollider: () => LandmarkCollider;
|
|
1032
|
+
export declare const MAX_BYTE = 255;
|
|
1033
|
+
export declare const CULLING_FRUSTUM_MARGIN = .1;
|
|
1034
|
+
export declare const CULLING_INDIRECT_ARGUMENT_COUNT = 5;
|
|
1035
|
+
export declare const CULLING_INDEX_COUNT_INDEX = 0;
|
|
1036
|
+
export declare const CULLING_INSTANCE_COUNT_INDEX = 1;
|
|
1037
|
+
export declare const CULLING_MIN_SIZE = 1e-4;
|
|
1038
|
+
export declare const CULLING_MATRIX_COLUMN_COUNT = 4;
|
|
1039
|
+
export declare const CULLING_MATRIX_ELEMENT_COUNT: number;
|
|
1040
|
+
export declare const createFrustumVisibility: (clipFromModel: UniformNode<"mat4", Matrix4>, point: Node<"vec3">) => Node<"float">;
|
|
1041
|
+
export interface InstanceCulling {
|
|
1042
|
+
cull: (renderer: Renderer) => void;
|
|
1043
|
+
dispose: () => void;
|
|
1044
|
+
indirect: IndirectStorageBufferAttribute;
|
|
1045
|
+
survivor: Node<"float">;
|
|
1046
|
+
}
|
|
1047
|
+
interface InstanceCullingOptions {
|
|
1048
|
+
count: number;
|
|
1049
|
+
indexCount: number;
|
|
1050
|
+
isVisible: (instance: Node<"float">) => Node<"float">;
|
|
1051
|
+
}
|
|
1052
|
+
export declare const createInstanceCulling: ({ count, indexCount, isVisible }: InstanceCullingOptions) => InstanceCulling;
|
|
1053
|
+
export declare const createInstancedGeometry: (geometry: BufferGeometry, instanceCount: number) => InstancedBufferGeometry;
|
|
1054
|
+
export declare const createInstanceMatrixBuffer: (matrices: Matrix4[]) => StorageBufferAttribute;
|
|
1055
|
+
export declare const createInstanceMatrixNode: (attribute: StorageBufferAttribute, instance: Node<"float">) => Node<"mat4">;
|
|
1056
|
+
export declare const createSurvivorIndices: (count: number) => Uint32Array;
|
|
1057
|
+
export declare enum GamepadButton {
|
|
1058
|
+
Back = "GamepadBack",
|
|
1059
|
+
DirectionalPadDown = "GamepadDirectionalPadDown",
|
|
1060
|
+
DirectionalPadLeft = "GamepadDirectionalPadLeft",
|
|
1061
|
+
DirectionalPadRight = "GamepadDirectionalPadRight",
|
|
1062
|
+
DirectionalPadUp = "GamepadDirectionalPadUp",
|
|
1063
|
+
FaceBottom = "GamepadFaceBottom",
|
|
1064
|
+
FaceLeft = "GamepadFaceLeft",
|
|
1065
|
+
FaceRight = "GamepadFaceRight",
|
|
1066
|
+
FaceTop = "GamepadFaceTop",
|
|
1067
|
+
LeftBumper = "GamepadLeftBumper",
|
|
1068
|
+
LeftStick = "GamepadLeftStick",
|
|
1069
|
+
LeftTrigger = "GamepadLeftTrigger",
|
|
1070
|
+
RightBumper = "GamepadRightBumper",
|
|
1071
|
+
RightStick = "GamepadRightStick",
|
|
1072
|
+
RightTrigger = "GamepadRightTrigger",
|
|
1073
|
+
Start = "GamepadStart"
|
|
1074
|
+
}
|
|
1075
|
+
export declare enum MouseButton {
|
|
1076
|
+
Auxiliary = "MouseAuxiliary",
|
|
1077
|
+
Primary = "MousePrimary",
|
|
1078
|
+
Secondary = "MouseSecondary"
|
|
1079
|
+
}
|
|
1080
|
+
export declare const KEY_CODE_FORWARD = "KeyW";
|
|
1081
|
+
export declare const KEY_CODE_BACKWARD = "KeyS";
|
|
1082
|
+
export declare const KEY_CODE_LEFT = "KeyA";
|
|
1083
|
+
export declare const KEY_CODE_RIGHT = "KeyD";
|
|
1084
|
+
export declare const KEY_CODE_UP = "Space";
|
|
1085
|
+
export declare const KEY_CODE_DOWN = "ShiftLeft";
|
|
1086
|
+
export declare const FOCUS_KEY_CODES: readonly string[];
|
|
1087
|
+
export declare const FIELD_SELECTOR = "input, select, textarea, [contenteditable=\"true\"]";
|
|
1088
|
+
export declare const GAMEPAD_BUTTONS: readonly GamepadButton[];
|
|
1089
|
+
export declare const MOUSE_BUTTONS: readonly MouseButton[];
|
|
1090
|
+
export declare const MOUSE_LOOK_RADIANS_PER_PIXEL = .002;
|
|
1091
|
+
export declare const MOUSE_LOOK_MAX_PIXELS_PER_EVENT: number;
|
|
1092
|
+
export declare const GAMEPAD_LOOK_RADIANS_PER_SECOND = 2.5;
|
|
1093
|
+
export declare const GAMEPAD_STICK_DEADZONE = .15;
|
|
1094
|
+
export declare const createIdleInputState: () => InputState;
|
|
1095
|
+
export interface Input {
|
|
1096
|
+
dispose: () => void;
|
|
1097
|
+
press: (code: string) => void;
|
|
1098
|
+
readInput: (frameSeconds: number) => InputState;
|
|
1099
|
+
release: (code: string) => void;
|
|
1100
|
+
setTouchStick: (x: number, y: number) => void;
|
|
1101
|
+
turn: (lookYaw: number, lookPitch: number) => void;
|
|
1102
|
+
}
|
|
1103
|
+
export interface InputGamepad {
|
|
1104
|
+
axes: readonly number[];
|
|
1105
|
+
buttons: readonly {
|
|
1106
|
+
pressed: boolean;
|
|
1107
|
+
}[];
|
|
1108
|
+
}
|
|
1109
|
+
export interface InputTarget extends Pick<Window, "addEventListener"> {
|
|
1110
|
+
document: {
|
|
1111
|
+
activeElement: null | {
|
|
1112
|
+
matches: (selectors: string) => boolean;
|
|
1113
|
+
};
|
|
1114
|
+
pointerLockElement: null | object;
|
|
1115
|
+
};
|
|
1116
|
+
navigator: {
|
|
1117
|
+
getGamepads: () => (InputGamepad | null)[];
|
|
1118
|
+
};
|
|
1119
|
+
}
|
|
1120
|
+
export declare const createInput: (target: InputTarget) => Input;
|
|
1121
|
+
export declare const InputActionBindingMap: Readonly<Record<InputAction, readonly (readonly string[])[]>>;
|
|
1122
|
+
export declare const toAxis: (positive: boolean, negative: boolean) => number;
|
|
1123
|
+
export declare const toClamped: (axis: number) => number;
|
|
1124
|
+
export declare const toDeadzoned: (stickAxis: number) => number;
|
|
1125
|
+
export declare const createBoxesGeometry: (boxes: readonly (readonly number[])[]) => BufferGeometry;
|
|
1126
|
+
export declare enum RoofKind {
|
|
1127
|
+
Conical = "Conical",
|
|
1128
|
+
Flat = "Flat"
|
|
1129
|
+
}
|
|
1130
|
+
export interface BuildingOptions {
|
|
1131
|
+
depth: number;
|
|
1132
|
+
platformHeight: number;
|
|
1133
|
+
roofHeight: number;
|
|
1134
|
+
roofKind: RoofKind;
|
|
1135
|
+
wallHeight: number;
|
|
1136
|
+
wallThickness: number;
|
|
1137
|
+
width: number;
|
|
1138
|
+
}
|
|
1139
|
+
export declare const createBuildingGeometry: ({ depth, platformHeight, roofHeight, roofKind, wallHeight, wallThickness, width }: BuildingOptions) => BufferGeometry;
|
|
1140
|
+
export interface LatheSection {
|
|
1141
|
+
bottomRadius: number;
|
|
1142
|
+
height: number;
|
|
1143
|
+
topRadius: number;
|
|
1144
|
+
}
|
|
1145
|
+
export interface LatheStackOptions {
|
|
1146
|
+
isFaceted: boolean;
|
|
1147
|
+
radialSegments: number;
|
|
1148
|
+
sections: LatheSection[];
|
|
1149
|
+
}
|
|
1150
|
+
export declare const createLatheStackGeometry: ({ isFaceted, radialSegments, sections }: LatheStackOptions) => BufferGeometry;
|
|
1151
|
+
export interface PavingStoneShape {
|
|
1152
|
+
bottom: number;
|
|
1153
|
+
radii: readonly number[];
|
|
1154
|
+
top: number;
|
|
1155
|
+
}
|
|
1156
|
+
export interface PavingStone {
|
|
1157
|
+
position: readonly number[];
|
|
1158
|
+
quaternion: readonly number[];
|
|
1159
|
+
scale: readonly number[];
|
|
1160
|
+
shape: PavingStoneShape;
|
|
1161
|
+
}
|
|
1162
|
+
export declare const createPavingGeometry: (stones: readonly PavingStone[]) => BufferGeometry;
|
|
1163
|
+
export declare const createPavingStoneGeometry: ({ bottom, radii, top }: PavingStoneShape) => BufferGeometry;
|
|
1164
|
+
export interface LeafCards {
|
|
1165
|
+
indices: Uint32Array;
|
|
1166
|
+
normals: Float32Array;
|
|
1167
|
+
positions: Float32Array;
|
|
1168
|
+
uvs: Float32Array;
|
|
1169
|
+
}
|
|
1170
|
+
export declare const createIndexedGeometry: ({ indices, normals, positions, uvs }: LeafCards) => BufferGeometry;
|
|
1171
|
+
export declare const mergeGeometryParts: (parts: BufferGeometry[]) => BufferGeometry;
|
|
1172
|
+
export interface StatueSection {
|
|
1173
|
+
centre: readonly number[];
|
|
1174
|
+
colors: readonly number[];
|
|
1175
|
+
height: number;
|
|
1176
|
+
radii: readonly number[];
|
|
1177
|
+
}
|
|
1178
|
+
export interface StatueSurface {
|
|
1179
|
+
colors: Float32Array;
|
|
1180
|
+
indices: Uint32Array;
|
|
1181
|
+
positions: Float32Array;
|
|
1182
|
+
}
|
|
1183
|
+
export declare const computeStatueSurface: (sections: readonly StatueSection[]) => StatueSurface;
|
|
1184
|
+
export interface StatueStack {
|
|
1185
|
+
position: readonly number[];
|
|
1186
|
+
rotation: readonly number[];
|
|
1187
|
+
sections: StatueSection[];
|
|
1188
|
+
}
|
|
1189
|
+
export interface StatuePart extends StatueStack {
|
|
1190
|
+
part: string;
|
|
1191
|
+
}
|
|
1192
|
+
export declare const createStatueGeometries: (parts: readonly StatuePart[]) => Record<string, BufferGeometry>;
|
|
1193
|
+
export interface TreeCluster {
|
|
1194
|
+
leafArea: number;
|
|
1195
|
+
radius: number;
|
|
1196
|
+
x: number;
|
|
1197
|
+
y: number;
|
|
1198
|
+
z: number;
|
|
1199
|
+
}
|
|
1200
|
+
export interface TreeNormalField {
|
|
1201
|
+
cellSize: number;
|
|
1202
|
+
normals: readonly number[];
|
|
1203
|
+
origin: readonly number[];
|
|
1204
|
+
size: readonly number[];
|
|
1205
|
+
}
|
|
1206
|
+
export interface TreeTubePoint {
|
|
1207
|
+
radius: number;
|
|
1208
|
+
x: number;
|
|
1209
|
+
y: number;
|
|
1210
|
+
z: number;
|
|
1211
|
+
}
|
|
1212
|
+
export type TreeTube = readonly [TreeTubePoint, TreeTubePoint, ...TreeTubePoint[]];
|
|
1213
|
+
export interface TreeOptions {
|
|
1214
|
+
cardSize: number;
|
|
1215
|
+
clusters: readonly TreeCluster[];
|
|
1216
|
+
leafAreaScale: number;
|
|
1217
|
+
limbs: readonly TreeTube[];
|
|
1218
|
+
normalField?: TreeNormalField;
|
|
1219
|
+
roots: readonly TreeTube[];
|
|
1220
|
+
seed: number;
|
|
1221
|
+
}
|
|
1222
|
+
export declare const computeLeafCards: (clusters: readonly TreeCluster[], { cardSize, leafAreaScale, normalField, seed }: Pick<TreeOptions, "cardSize" | "leafAreaScale" | "normalField" | "seed">) => LeafCards;
|
|
1223
|
+
export interface TreeTubes {
|
|
1224
|
+
indices: Uint32Array;
|
|
1225
|
+
normals: Float32Array;
|
|
1226
|
+
positions: Float32Array;
|
|
1227
|
+
uvs: Float32Array;
|
|
1228
|
+
}
|
|
1229
|
+
export declare const computeTreeTubes: (tubes: readonly TreeTube[]) => TreeTubes;
|
|
1230
|
+
export interface TreeGeometry {
|
|
1231
|
+
branchGeometry: BufferGeometry;
|
|
1232
|
+
leafGeometry: BufferGeometry;
|
|
1233
|
+
}
|
|
1234
|
+
export declare const createTreeGeometry: ({ limbs, roots, ...treeOptions }: TreeOptions) => TreeGeometry;
|
|
1235
|
+
export declare const sampleTreeNormalField: ({ cellSize, normals, origin, size }: TreeNormalField, position: [number, number, number]) => [number, number, number] | undefined;
|
|
1236
|
+
export declare const writeQuadIndices: (indices: Uint32Array, indexStart: number, vertexStart: number) => void;
|
|
1237
|
+
export interface LocomotionContact {
|
|
1238
|
+
isFacingWall: boolean;
|
|
1239
|
+
isGrounded: boolean;
|
|
1240
|
+
isHighAboveGround: boolean;
|
|
1241
|
+
isInDeepWater: boolean;
|
|
1242
|
+
isRising: boolean;
|
|
1243
|
+
}
|
|
1244
|
+
export interface LocomotionInput {
|
|
1245
|
+
isSprintHeld: boolean;
|
|
1246
|
+
isWalking: boolean;
|
|
1247
|
+
moveForward: number;
|
|
1248
|
+
moveRight: number;
|
|
1249
|
+
pressedActions: ReadonlySet<InputAction>;
|
|
1250
|
+
}
|
|
1251
|
+
export declare const computeLocomotionState: (phase: LocomotionPhase, input: LocomotionInput, contact: LocomotionContact, stamina: number, locomotion: Locomotion) => LocomotionState;
|
|
1252
|
+
export declare const STAMINA_MAX = 100;
|
|
1253
|
+
export declare const STAMINA_REFILL_PER_SECOND = 25;
|
|
1254
|
+
export declare const STAMINA_REFILL_DELAY_SECONDS = 1.5;
|
|
1255
|
+
export declare const DASH_STAMINA_COST = 18;
|
|
1256
|
+
export declare const SPRINT_STAMINA_PER_SECOND = 18;
|
|
1257
|
+
export declare const CLIMB_JUMP_STAMINA_COST = 25;
|
|
1258
|
+
export declare const SWIM_STROKE_STAMINA_COST = 4;
|
|
1259
|
+
export declare const SWIM_DASH_STAMINA_COST = 2;
|
|
1260
|
+
export declare const SWIM_DASH_STAMINA_PER_SECOND = 10.2;
|
|
1261
|
+
export declare const CLIMB_START_STAMINA = 5;
|
|
1262
|
+
export declare const GLIDE_STAMINA_PER_SECOND = 3;
|
|
1263
|
+
export declare const CLIMB_STAMINA_PER_SECOND = 2;
|
|
1264
|
+
export declare const SWIM_STROKE_SECONDS = 1.67;
|
|
1265
|
+
export declare const STAMINA_REFILL_STATES: readonly LocomotionState[];
|
|
1266
|
+
export declare const AIR_LOCOMOTION_STATES: readonly LocomotionState[];
|
|
1267
|
+
export declare const CLIMB_LOCOMOTION_STATES: readonly LocomotionState[];
|
|
1268
|
+
export declare const WATER_LOCOMOTION_STATES: readonly LocomotionState[];
|
|
1269
|
+
export declare const GROUND_LOCOMOTION_STATES: readonly LocomotionState[];
|
|
1270
|
+
export declare const WALK_MOVE_MAGNITUDE = .5;
|
|
1271
|
+
export declare const GROUND_CONTACT_DISTANCE = .05;
|
|
1272
|
+
export declare const GROUND_PRESS_SPEED = 1;
|
|
1273
|
+
export declare const WALL_PRESS_SPEED = 1;
|
|
1274
|
+
export declare const WALL_PROBE_DISTANCE = .1;
|
|
1275
|
+
export declare const STEEP_SLIDE_SPEED = 4;
|
|
1276
|
+
export declare const CLIMB_REGRAB_SECONDS = .5;
|
|
1277
|
+
export interface Stamina {
|
|
1278
|
+
checkCanSpend: (amount: number) => boolean;
|
|
1279
|
+
maximum: number;
|
|
1280
|
+
refill: () => void;
|
|
1281
|
+
restore: (amount: number) => void;
|
|
1282
|
+
spend: (amount: number) => void;
|
|
1283
|
+
step: (phase: LocomotionPhase, isEntered: boolean, isMoving: boolean, stepSeconds: number) => void;
|
|
1284
|
+
value: number;
|
|
1285
|
+
}
|
|
1286
|
+
export interface CharacterController {
|
|
1287
|
+
face: (facing: number) => void;
|
|
1288
|
+
readonly facing: number;
|
|
1289
|
+
readonly heldPresses: ReadonlySet<InputAction>;
|
|
1290
|
+
holdPresses: (input: InputState) => void;
|
|
1291
|
+
readonly phase: Readonly<LocomotionPhase>;
|
|
1292
|
+
place: (position: Vector3, facing: number) => void;
|
|
1293
|
+
readonly position: Vector3;
|
|
1294
|
+
readonly previousPosition: Vector3;
|
|
1295
|
+
readonly stamina: Stamina;
|
|
1296
|
+
step: (input: InputState, cameraYaw: number, locomotion: Locomotion, stepSeconds: number) => void;
|
|
1297
|
+
}
|
|
1298
|
+
export type CharacterControllerOptions = ({
|
|
1299
|
+
getStaminaConsumptionMultiplier?: () => number;
|
|
1300
|
+
stamina?: never;
|
|
1301
|
+
staminaMaximum: number;
|
|
1302
|
+
} | {
|
|
1303
|
+
getStaminaConsumptionMultiplier?: never;
|
|
1304
|
+
stamina: Stamina;
|
|
1305
|
+
staminaMaximum?: never;
|
|
1306
|
+
}) & {
|
|
1307
|
+
ground: GroundQuery;
|
|
1308
|
+
landmarkCollider: LandmarkCollider;
|
|
1309
|
+
position: Vector3;
|
|
1310
|
+
};
|
|
1311
|
+
export declare const createCharacterController: (options: CharacterControllerOptions) => CharacterController;
|
|
1312
|
+
export declare const createStamina: (maximum: number, getStaminaConsumptionMultiplier?: () => number) => Stamina;
|
|
1313
|
+
export declare const addSmoothLoop: (path: Path2D, points: readonly (readonly [number, number])[]) => void;
|
|
1314
|
+
export interface RampOptions {
|
|
1315
|
+
resolution: number;
|
|
1316
|
+
shade: number;
|
|
1317
|
+
softness: number;
|
|
1318
|
+
terminator: number;
|
|
1319
|
+
}
|
|
1320
|
+
export declare const computeRampValues: ({ resolution, shade, softness, terminator }: RampOptions) => Uint8Array;
|
|
1321
|
+
export declare const createRampTexture: (rampOptions: RampOptions) => DataTexture;
|
|
1322
|
+
export declare enum PmxBoneFlag {
|
|
1323
|
+
IndexedTail = 1,
|
|
1324
|
+
InverseKinematics = 32,
|
|
1325
|
+
InheritRotation = 256,
|
|
1326
|
+
InheritTranslation = 512,
|
|
1327
|
+
FixedAxis = 1024,
|
|
1328
|
+
LocalAxes = 2048,
|
|
1329
|
+
ExternalParent = 8192
|
|
1330
|
+
}
|
|
1331
|
+
export declare enum PmxMaterialFlag {
|
|
1332
|
+
DoubleSided = 1,
|
|
1333
|
+
Outlined = 16
|
|
1334
|
+
}
|
|
1335
|
+
export declare enum PmxTextEncoding {
|
|
1336
|
+
Utf16LittleEndian = 0,
|
|
1337
|
+
Utf8 = 1
|
|
1338
|
+
}
|
|
1339
|
+
export declare enum PmxWeightDeform {
|
|
1340
|
+
OneBone = 0,
|
|
1341
|
+
TwoBones = 1,
|
|
1342
|
+
FourBones = 2,
|
|
1343
|
+
Spherical = 3,
|
|
1344
|
+
DualQuaternion = 4
|
|
1345
|
+
}
|
|
1346
|
+
export interface PlantCullingOptions {
|
|
1347
|
+
attribute: StorageBufferAttribute;
|
|
1348
|
+
bounds: {
|
|
1349
|
+
bottom: number;
|
|
1350
|
+
halfWidth: number;
|
|
1351
|
+
height: number;
|
|
1352
|
+
};
|
|
1353
|
+
clipFromModel: UniformNode<"mat4", Matrix4>;
|
|
1354
|
+
drawDistance: number;
|
|
1355
|
+
eye: UniformNode<"vec3", Vector3>;
|
|
1356
|
+
indexCount: number;
|
|
1357
|
+
}
|
|
1358
|
+
export declare const createOutlineMaterial: (colorNode: Node<"vec4">, thicknessNode: Node<"float">, instanceMatrix?: Node<"mat4">) => NodeMaterial;
|
|
1359
|
+
export declare const createGameOutlineMaterial: (colorNode: Node<"vec4">, widthNode: Node<"float">, offsetNode: Node<"float">) => NodeMaterial;
|
|
1360
|
+
declare module "three/webgpu" {
|
|
1361
|
+
interface NodeBuilder {
|
|
1362
|
+
getSharedContext: () => Record<string, unknown>;
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
export declare class GameBloomNode extends Node<"vec4"> {
|
|
1366
|
+
#private;
|
|
1367
|
+
constructor(inputNode: Node<"vec4">);
|
|
1368
|
+
override dispose(): void;
|
|
1369
|
+
override setup(builder: NodeBuilder): Node<"vec4">;
|
|
1370
|
+
override updateBefore(frame: NodeFrame): boolean | undefined;
|
|
1371
|
+
}
|
|
1372
|
+
export declare const getGameOutlineOffset: (viewPosition: Vector3, blue: number, blockBChannel: number, size: number) => Vector3;
|
|
1373
|
+
export interface Impostor {
|
|
1374
|
+
albedoTarget: RenderTarget;
|
|
1375
|
+
bottom: number;
|
|
1376
|
+
height: number;
|
|
1377
|
+
normalTarget: RenderTarget;
|
|
1378
|
+
width: number;
|
|
1379
|
+
}
|
|
1380
|
+
export interface ImpostorMaterialOptions {
|
|
1381
|
+
fade: Node<"float">;
|
|
1382
|
+
impostor: Impostor;
|
|
1383
|
+
instanceMatrix?: Node<"mat4">;
|
|
1384
|
+
lightUniforms: LightUniforms;
|
|
1385
|
+
rampTexture: DataTexture;
|
|
1386
|
+
}
|
|
1387
|
+
export declare class ObjectSurface {
|
|
1388
|
+
amplitudes: number[];
|
|
1389
|
+
color: Color;
|
|
1390
|
+
texelsPerMetre: number;
|
|
1391
|
+
constructor(color: Color, amplitudes: number[], texelsPerMetre: number);
|
|
1392
|
+
}
|
|
1393
|
+
export interface WindUniforms {
|
|
1394
|
+
direction: UniformNode<"vec2", Vector2>;
|
|
1395
|
+
gustSpeed: UniformNode<"float", number>;
|
|
1396
|
+
gustStrength: UniformNode<"float", number>;
|
|
1397
|
+
gustWidth: UniformNode<"float", number>;
|
|
1398
|
+
strength: UniformNode<"float", number>;
|
|
1399
|
+
}
|
|
1400
|
+
export interface PrecipitationMaterialOptions {
|
|
1401
|
+
lightUniforms: LightUniforms;
|
|
1402
|
+
precipitationUniforms: PrecipitationUniforms;
|
|
1403
|
+
windUniforms: WindUniforms;
|
|
1404
|
+
}
|
|
1405
|
+
export declare class SharedToonOutlinePassNode extends ToonOutlinePassNode {
|
|
1406
|
+
#private;
|
|
1407
|
+
alphaNode: Node<"float">;
|
|
1408
|
+
colorNode: Node<"vec3">;
|
|
1409
|
+
thicknessNode: Node<"float">;
|
|
1410
|
+
_getOutlineMaterial(originalMaterial: Material$1): NodeMaterial;
|
|
1411
|
+
override compileAsync(renderer: Renderer): Promise<void>;
|
|
1412
|
+
override updateBefore(frame: NodeFrame): boolean | undefined;
|
|
1413
|
+
}
|
|
1414
|
+
export interface GroundCapture {
|
|
1415
|
+
camera: OrthographicCamera;
|
|
1416
|
+
center: UniformNode<"vec2", Vector2>;
|
|
1417
|
+
material: MeshBasicNodeMaterial;
|
|
1418
|
+
renderTarget: RenderTarget;
|
|
1419
|
+
size: number;
|
|
1420
|
+
}
|
|
1421
|
+
export interface WaterUniforms {
|
|
1422
|
+
causticStrength: UniformNode<"float", number>;
|
|
1423
|
+
deepColor: UniformNode<"color", Color>;
|
|
1424
|
+
deepDepth: UniformNode<"float", number>;
|
|
1425
|
+
foamColor: UniformNode<"color", Color>;
|
|
1426
|
+
foamDepth: UniformNode<"float", number>;
|
|
1427
|
+
level: UniformNode<"float", number>;
|
|
1428
|
+
shallowColor: UniformNode<"color", Color>;
|
|
1429
|
+
underwaterFogColor: UniformNode<"color", Color>;
|
|
1430
|
+
underwaterFogDensity: UniformNode<"float", number>;
|
|
1431
|
+
}
|
|
1432
|
+
export interface SplashMaterialOptions {
|
|
1433
|
+
groundCapture: GroundCapture;
|
|
1434
|
+
lightUniforms: LightUniforms;
|
|
1435
|
+
precipitationUniforms: PrecipitationUniforms;
|
|
1436
|
+
waterUniforms: WaterUniforms;
|
|
1437
|
+
}
|
|
1438
|
+
export interface StoneLight {
|
|
1439
|
+
harmonics: (readonly number[])[];
|
|
1440
|
+
hazeColor: readonly number[];
|
|
1441
|
+
hazeScatterColor: readonly number[];
|
|
1442
|
+
heightDarkening: number;
|
|
1443
|
+
heightFade: readonly number[];
|
|
1444
|
+
ramp: (readonly number[])[];
|
|
1445
|
+
}
|
|
1446
|
+
export interface StoneLightUniforms {
|
|
1447
|
+
harmonics: UniformArrayNode<"vec3">;
|
|
1448
|
+
hazeColor: UniformNode<"color", Color>;
|
|
1449
|
+
hazeScatterColor: UniformNode<"color", Color>;
|
|
1450
|
+
heightDarkening: UniformNode<"float", number>;
|
|
1451
|
+
heightFade: UniformNode<"color", Color>;
|
|
1452
|
+
ramp: DataTexture;
|
|
1453
|
+
sunRadiance: UniformNode<"color", Color>;
|
|
1454
|
+
}
|
|
1455
|
+
export declare class StoneLightingModel extends LightingModel {
|
|
1456
|
+
readonly stoneLight: StoneLightUniforms;
|
|
1457
|
+
constructor(stoneLight: StoneLightUniforms);
|
|
1458
|
+
createDarkeningNode(): Node<"float">;
|
|
1459
|
+
override direct({ lightColor, lightDirection, reflectedLight }: LightingModelDirectInput): void;
|
|
1460
|
+
override indirect(builder: NodeBuilder): void;
|
|
1461
|
+
}
|
|
1462
|
+
export interface StoneMaterialOptions {
|
|
1463
|
+
albedo: string;
|
|
1464
|
+
glowRange: number;
|
|
1465
|
+
rimColor: readonly number[];
|
|
1466
|
+
rimPower: number;
|
|
1467
|
+
rimStrength: number;
|
|
1468
|
+
smoothness: number;
|
|
1469
|
+
specularColor: readonly number[];
|
|
1470
|
+
}
|
|
1471
|
+
export declare class StoneNodeMaterial extends NodeMaterial {
|
|
1472
|
+
emissiveNode: Node | null;
|
|
1473
|
+
readonly stoneLight: StoneLightUniforms;
|
|
1474
|
+
constructor(stoneLight: StoneLightUniforms);
|
|
1475
|
+
override setupLightingModel(): StoneLightingModel;
|
|
1476
|
+
}
|
|
1477
|
+
export interface SurfaceDetail {
|
|
1478
|
+
bands: number[];
|
|
1479
|
+
metresPerTexel: number;
|
|
1480
|
+
variance: number;
|
|
1481
|
+
}
|
|
1482
|
+
export interface ToonMaterialOptions {
|
|
1483
|
+
color?: ColorRepresentation;
|
|
1484
|
+
detail?: SurfaceDetail;
|
|
1485
|
+
instanceMatrix?: Node<"mat4">;
|
|
1486
|
+
isObjectSurface?: boolean;
|
|
1487
|
+
isOutlined?: boolean;
|
|
1488
|
+
isVertexColors?: boolean;
|
|
1489
|
+
lightUniforms: LightUniforms;
|
|
1490
|
+
rampTexture: DataTexture;
|
|
1491
|
+
}
|
|
1492
|
+
export interface GradeOptions {
|
|
1493
|
+
contrast: number;
|
|
1494
|
+
highlightTint: readonly [number, number, number];
|
|
1495
|
+
saturation: number;
|
|
1496
|
+
shadowTint: readonly [number, number, number];
|
|
1497
|
+
size: number;
|
|
1498
|
+
}
|
|
1499
|
+
export interface PostPipeline {
|
|
1500
|
+
compileAsync: () => Promise<void>;
|
|
1501
|
+
dispose: () => void;
|
|
1502
|
+
godraysNode?: GodraysNode;
|
|
1503
|
+
renderPipeline: RenderPipeline;
|
|
1504
|
+
}
|
|
1505
|
+
export interface SightUniforms {
|
|
1506
|
+
origin: UniformNode<"vec2", Vector2>;
|
|
1507
|
+
radius: UniformNode<"float", number>;
|
|
1508
|
+
strength: UniformNode<"float", number>;
|
|
1509
|
+
}
|
|
1510
|
+
export declare enum AntialiasingMode {
|
|
1511
|
+
Smaa = "Smaa",
|
|
1512
|
+
Traa = "Traa"
|
|
1513
|
+
}
|
|
1514
|
+
export interface QualityTierSettings {
|
|
1515
|
+
antialiasingMode: AntialiasingMode;
|
|
1516
|
+
cascadeCount: number;
|
|
1517
|
+
godraysStepCount: number;
|
|
1518
|
+
grassDensity: number;
|
|
1519
|
+
isBloomEnabled: boolean;
|
|
1520
|
+
isOcclusionEnabled: boolean;
|
|
1521
|
+
maxPixelRatio: number;
|
|
1522
|
+
shadowMapSize: number;
|
|
1523
|
+
}
|
|
1524
|
+
export interface PostPipelineOptions {
|
|
1525
|
+
camera: Camera;
|
|
1526
|
+
fogUniforms: FogUniforms;
|
|
1527
|
+
godraysLight?: DirectionalLight;
|
|
1528
|
+
gradeLutTexture?: Data3DTexture;
|
|
1529
|
+
isBloomed?: boolean;
|
|
1530
|
+
occlusionRadius?: number;
|
|
1531
|
+
postUniforms: PostUniforms;
|
|
1532
|
+
qualityTierSettings: QualityTierSettings;
|
|
1533
|
+
renderer: Renderer;
|
|
1534
|
+
scene: Scene;
|
|
1535
|
+
sight?: {
|
|
1536
|
+
litScene: Scene;
|
|
1537
|
+
uniforms: SightUniforms;
|
|
1538
|
+
};
|
|
1539
|
+
stoneLight?: StoneLightUniforms;
|
|
1540
|
+
}
|
|
1541
|
+
export declare enum QualityTier {
|
|
1542
|
+
High = "High",
|
|
1543
|
+
Low = "Low",
|
|
1544
|
+
Medium = "Medium"
|
|
1545
|
+
}
|
|
1546
|
+
export interface ScreenCamera {
|
|
1547
|
+
aspect: number;
|
|
1548
|
+
fov: number;
|
|
1549
|
+
pitch: number;
|
|
1550
|
+
yaw: number;
|
|
1551
|
+
}
|
|
1552
|
+
export interface SceneMaterial {
|
|
1553
|
+
colors: Record<string, [number, number, number, number]>;
|
|
1554
|
+
floats: Record<string, number>;
|
|
1555
|
+
keywords: string[];
|
|
1556
|
+
name: string;
|
|
1557
|
+
shader?: string;
|
|
1558
|
+
textures: Record<string, {
|
|
1559
|
+
name: string;
|
|
1560
|
+
offset: [number, number];
|
|
1561
|
+
scale: [number, number];
|
|
1562
|
+
}>;
|
|
1563
|
+
}
|
|
1564
|
+
export interface ScenePlacement {
|
|
1565
|
+
materials: string[];
|
|
1566
|
+
mesh: string;
|
|
1567
|
+
position: [number, number, number];
|
|
1568
|
+
rotation: [number, number, number, number];
|
|
1569
|
+
scale: [number, number, number];
|
|
1570
|
+
}
|
|
1571
|
+
export interface SceneLayout {
|
|
1572
|
+
materials: Record<string, SceneMaterial>;
|
|
1573
|
+
placements: ScenePlacement[];
|
|
1574
|
+
}
|
|
1575
|
+
export interface FixedStepLoop {
|
|
1576
|
+
advance: (deltaSeconds: number) => void;
|
|
1577
|
+
getStepShare: () => number;
|
|
1578
|
+
}
|
|
1579
|
+
export interface TerrainSelection {
|
|
1580
|
+
count: number;
|
|
1581
|
+
keys: Float64Array;
|
|
1582
|
+
}
|
|
1583
|
+
export interface TileStreamer<TTile> {
|
|
1584
|
+
checkIsSettled: (key: number) => boolean;
|
|
1585
|
+
dispose: () => void;
|
|
1586
|
+
fail: (key: number) => boolean;
|
|
1587
|
+
get: (key: number) => TTile | undefined;
|
|
1588
|
+
has: (key: number) => boolean;
|
|
1589
|
+
pendingCount: () => number;
|
|
1590
|
+
receive: (key: number, tile: TTile) => void;
|
|
1591
|
+
refresh: (checkIsChanged: (key: number) => boolean) => void;
|
|
1592
|
+
update: (wanted: TerrainSelection, drawn: TerrainSelection, surrounding: TerrainSelection) => void;
|
|
1593
|
+
}
|
|
1594
|
+
export interface TileStreamerOptions<TTile> {
|
|
1595
|
+
disposeTile: (tile: TTile) => void;
|
|
1596
|
+
maxCachedCount: number;
|
|
1597
|
+
maxPendingCount: number;
|
|
1598
|
+
requestTile: (key: number) => void;
|
|
1599
|
+
}
|
|
1600
|
+
export interface TerrainBounds {
|
|
1601
|
+
maxX: number;
|
|
1602
|
+
maxZ: number;
|
|
1603
|
+
minX: number;
|
|
1604
|
+
minZ: number;
|
|
1605
|
+
}
|
|
1606
|
+
export interface TerrainRing {
|
|
1607
|
+
add: (tile: TerrainTile) => void;
|
|
1608
|
+
dispose: () => void;
|
|
1609
|
+
draw: (keys: readonly number[]) => void;
|
|
1610
|
+
mesh: Mesh;
|
|
1611
|
+
remove: (key: number) => void;
|
|
1612
|
+
}
|
|
1613
|
+
export type TerrainTileArrays = Pick<TerrainTile, "coarseColors" | "coarseNormals" | "coarsePositions" | "colors" | "normals" | "positions">;
|
|
1614
|
+
export interface GrassBlade {
|
|
1615
|
+
indices: Uint16Array;
|
|
1616
|
+
positions: Float32Array;
|
|
1617
|
+
}
|
|
1618
|
+
export interface GrassCell {
|
|
1619
|
+
angle: Node<"float">;
|
|
1620
|
+
captured: Node<"vec4">;
|
|
1621
|
+
ground: Node<"vec2">;
|
|
1622
|
+
size: Node<"float">;
|
|
1623
|
+
}
|
|
1624
|
+
export interface GrassRing {
|
|
1625
|
+
cellsPerSide: number;
|
|
1626
|
+
fadeEnd: number;
|
|
1627
|
+
fadeStart: number;
|
|
1628
|
+
innerRadius: number;
|
|
1629
|
+
scale: number;
|
|
1630
|
+
spacing: number;
|
|
1631
|
+
}
|
|
1632
|
+
export interface GrassCellOptions {
|
|
1633
|
+
cameraGround: UniformNode<"vec2", Vector2>;
|
|
1634
|
+
density: UniformNode<"float", number>;
|
|
1635
|
+
groundCapture: GroundCapture;
|
|
1636
|
+
index: Node<"float">;
|
|
1637
|
+
ring: GrassRing;
|
|
1638
|
+
waterUniforms: Pick<WaterUniforms, "level">;
|
|
1639
|
+
}
|
|
1640
|
+
export interface GrassTrail {
|
|
1641
|
+
bends: Float32Array;
|
|
1642
|
+
cells: Float64Array;
|
|
1643
|
+
center: UniformNode<"vec2", Vector2>;
|
|
1644
|
+
data: Uint8Array;
|
|
1645
|
+
texture: DataTexture;
|
|
1646
|
+
}
|
|
1647
|
+
export interface GrassCullingOptions {
|
|
1648
|
+
bladeHeight: number;
|
|
1649
|
+
cameraGround: UniformNode<"vec2", Vector2>;
|
|
1650
|
+
clipFromModel: UniformNode<"mat4", Matrix4>;
|
|
1651
|
+
density: UniformNode<"float", number>;
|
|
1652
|
+
grassTrail: GrassTrail;
|
|
1653
|
+
groundCapture: GroundCapture;
|
|
1654
|
+
ring: GrassRing;
|
|
1655
|
+
segmentCount: number;
|
|
1656
|
+
waterUniforms: Pick<WaterUniforms, "level">;
|
|
1657
|
+
windUniforms: WindUniforms;
|
|
1658
|
+
}
|
|
1659
|
+
export interface GrassOptions {
|
|
1660
|
+
bladeHeight: number;
|
|
1661
|
+
bladeWidth: number;
|
|
1662
|
+
cameraGround: UniformNode<"vec2", Vector2>;
|
|
1663
|
+
cellIndex: Node<"float">;
|
|
1664
|
+
density: UniformNode<"float", number>;
|
|
1665
|
+
grassTrail: GrassTrail;
|
|
1666
|
+
groundCapture: GroundCapture;
|
|
1667
|
+
lightUniforms: LightUniforms;
|
|
1668
|
+
rampTexture: DataTexture;
|
|
1669
|
+
ring: GrassRing;
|
|
1670
|
+
waterUniforms: Pick<WaterUniforms, "level">;
|
|
1671
|
+
windUniforms: WindUniforms;
|
|
1672
|
+
}
|
|
1673
|
+
export interface ImpostorPart {
|
|
1674
|
+
color: ColorRepresentation;
|
|
1675
|
+
geometry: BufferGeometry;
|
|
1676
|
+
maskNode?: Node<"bool">;
|
|
1677
|
+
}
|
|
1678
|
+
export interface RiverCoursePoint {
|
|
1679
|
+
level: number;
|
|
1680
|
+
width: number;
|
|
1681
|
+
x: number;
|
|
1682
|
+
z: number;
|
|
1683
|
+
}
|
|
1684
|
+
export interface UnderwaterFogState {
|
|
1685
|
+
aboveDensity: number;
|
|
1686
|
+
aboveHeightFalloff: number;
|
|
1687
|
+
aboveMaxOpacity: number;
|
|
1688
|
+
aboveStartDistance: number;
|
|
1689
|
+
isUnderwater: boolean;
|
|
1690
|
+
underwaterDensity: number;
|
|
1691
|
+
}
|
|
1692
|
+
export interface WaterfallSheet {
|
|
1693
|
+
across: Vector3;
|
|
1694
|
+
drop: number;
|
|
1695
|
+
lip: Vector3;
|
|
1696
|
+
width: number;
|
|
1697
|
+
}
|
|
1698
|
+
export interface WaterFlow {
|
|
1699
|
+
direction: UniformNode<"vec2", Vector2>;
|
|
1700
|
+
speed: UniformNode<"float", number>;
|
|
1701
|
+
}
|
|
1702
|
+
export interface GroundPoint {
|
|
1703
|
+
x: number;
|
|
1704
|
+
z: number;
|
|
1705
|
+
}
|
|
1706
|
+
export declare const applyStoneLight: ({ harmonics, hazeColor, hazeScatterColor, heightDarkening, heightFade, ramp }: StoneLight, { harmonics: harmonicsUniform, hazeColor: hazeColorUniform, hazeScatterColor: hazeScatterColorUniform, heightDarkening: heightDarkeningUniform, heightFade: heightFadeUniform, ramp: rampTexture, sunRadiance }: StoneLightUniforms, light: DirectionalLight) => void;
|
|
1707
|
+
export declare const computeStoneDarkening: (height: number, heightDarkening: number) => number;
|
|
1708
|
+
export declare const computeStoneHarmonics: ([x, y, z]: readonly number[], harmonics: number[]) => void;
|
|
1709
|
+
export declare const computeStoneRampCoordinate: (facing: number, visibility: number) => number;
|
|
1710
|
+
interface SurfaceOctave {
|
|
1711
|
+
amplitude: number;
|
|
1712
|
+
frequency: number;
|
|
1713
|
+
}
|
|
1714
|
+
export declare const computeSurfaceOctaves: ({ bands, metresPerTexel, variance }: SurfaceDetail) => SurfaceOctave[];
|
|
1715
|
+
export declare const computeWindGust: (downwind: number, time: number, { gustSpeed, gustStrength, gustWidth }: {
|
|
1716
|
+
gustSpeed: number;
|
|
1717
|
+
gustStrength: number;
|
|
1718
|
+
gustWidth: number;
|
|
1719
|
+
}) => number;
|
|
1720
|
+
export declare const LEAST_DIVISOR = 1e-4;
|
|
1721
|
+
export declare const STONE_SHADOW_EXPONENT = .2;
|
|
1722
|
+
export declare const STONE_RAMP_KNOT_COUNT = 16;
|
|
1723
|
+
export declare const STONE_HARMONIC_COUNT = 9;
|
|
1724
|
+
export declare const STONE_MASK_OUTPUT = "stoneMask";
|
|
1725
|
+
export declare const STONE_HEIGHT_FALLOFF = .05;
|
|
1726
|
+
export declare const STONE_DARKENING_TOP = 20;
|
|
1727
|
+
export declare const WET_DARKENING = .35;
|
|
1728
|
+
export declare const WET_SHEEN_POWER = 32;
|
|
1729
|
+
export declare const WET_SHEEN_STRENGTH = .25;
|
|
1730
|
+
export declare const SURFACE_DETAIL_BAND_SIGMAS: number[];
|
|
1731
|
+
export declare const SURFACE_OCTAVE_TEXEL_FREQUENCIES: number[];
|
|
1732
|
+
export declare const SURFACE_OCTAVE_RESPONSES: number[][];
|
|
1733
|
+
export declare const OBJECT_SURFACE_KEY = "surface";
|
|
1734
|
+
export declare const OBJECT_FADE_KEY = "fade";
|
|
1735
|
+
export declare const LEAF_SHAPE_WIDTH = .8;
|
|
1736
|
+
export declare const LEAF_SHAPE_KEPT_SHARE: number;
|
|
1737
|
+
export declare const createCausticsNode: ({ lightColor }: Pick<LightUniforms, "lightColor">, { causticStrength, deepDepth, level }: Pick<WaterUniforms, "causticStrength" | "deepDepth" | "level">) => Node<"vec3">;
|
|
1738
|
+
export declare const createCloudLayerNode: ({ center, curl, curlAmplitude, curlSpeed, curlTiling, density, direction: cloudDirection, elapsedTime, height: layerHeight, lightDirection, normal, normalYScale, opacity, profile, smoothness, sunBrightness, sunRimLightRadius, tiling, turn, weather, wisps, wispsCoverage, wispsElapsedTime, wispsOpacity, wispsTurn }: CloudLayerUniforms, { cloudCoverage, cloudFrontBackBlend, cloudLitBackColor, cloudLitColor, cloudShadeBackColor, cloudShadeColor, cloudSunBrighten, moonDirection, moonGlowColor, sunDirection, sunHaloColor, sunHaloSize }: SkyUniforms, direction: Node<"vec3">) => Node<"vec4">;
|
|
1739
|
+
export declare const createDitherFadeNode: (visibility: Node<"float">) => Node<"bool">;
|
|
1740
|
+
export declare const createImpostorMaterial: ({ fade, impostor, instanceMatrix, lightUniforms, rampTexture }: ImpostorMaterialOptions) => ToonNodeMaterial;
|
|
1741
|
+
export declare const createLeafMaterial: (toonMaterialOptions: ToonMaterialOptions, windUniforms?: WindUniforms, maskNode?: Node<"bool">) => ToonNodeMaterial;
|
|
1742
|
+
export declare const createLeafShapeNode: () => Node<"bool">;
|
|
1743
|
+
export declare const createLightningBoltMaterial: (flash: UniformNode<"float", number>) => MeshBasicNodeMaterial;
|
|
1744
|
+
export declare const createLightUniforms: () => LightUniforms;
|
|
1745
|
+
export declare const createMaterialDetailNode: (detail: SurfaceDetail) => Node<"float">;
|
|
1746
|
+
export declare const createObjectFadeNode: () => Node<"float">;
|
|
1747
|
+
export declare const createObjectSurfaceNode: () => Node<"vec3">;
|
|
1748
|
+
export declare const createPrecipitationMaterial: ({ lightUniforms, precipitationUniforms, windUniforms }: PrecipitationMaterialOptions) => MeshBasicNodeMaterial;
|
|
1749
|
+
export declare const createRimNode: ({ rimColor, rimStrength, sunDirection }: LightUniforms) => Node<"vec3">;
|
|
1750
|
+
export declare const createRiverMaterial: (lightUniforms: LightUniforms, skyUniforms: SkyUniforms, waterUniforms: WaterUniforms) => MeshBasicNodeMaterial;
|
|
1751
|
+
export declare const createSkyColorNode: ({ frontBackBlend, haloColor, haloHeight, horizonBackColor, horizonBand, horizonColor, sunDirection, sunHaloColor, sunHaloSize, zenithBackColor, zenithColor }: SkyUniforms, gradient: Texture, direction: Node<"vec3">) => Node<"vec3">;
|
|
1752
|
+
export declare const createSkyNode: (uniforms: SkyUniforms, gradient: Texture, cloudLayer?: CloudLayerUniforms) => Node<"vec3">;
|
|
1753
|
+
export declare const createSplashMaterial: ({ groundCapture, lightUniforms, precipitationUniforms, waterUniforms }: SplashMaterialOptions) => MeshBasicNodeMaterial;
|
|
1754
|
+
export declare const createStoneGlowNode: ({ glowRange, rimColor, rimPower, rimStrength }: Pick<StoneMaterialOptions, "glowRange" | "rimColor" | "rimPower" | "rimStrength">) => Node<"vec3">;
|
|
1755
|
+
export declare const createStoneLightUniforms: () => StoneLightUniforms;
|
|
1756
|
+
export declare const createStoneMaterial: (options: StoneMaterialOptions, stoneLight: StoneLightUniforms, glowNode?: Node<"vec3">) => StoneNodeMaterial;
|
|
1757
|
+
export declare const createSunVisibilityNode: (lightColor: Node, sunRadiance: UniformNode<"color", Color>) => Node<"float">;
|
|
1758
|
+
export declare const createSurfaceDetailNode: (amplitudes: Node<"float">[], texelsPerMetre: Node<"float">) => Node<"float">;
|
|
1759
|
+
export declare const createToonMaterial: ({ color, detail, instanceMatrix, isObjectSurface, isOutlined, isVertexColors, lightUniforms, rampTexture }: ToonMaterialOptions) => ToonNodeMaterial;
|
|
1760
|
+
export declare const createWaterfallMaterial: ({ foamColor }: Pick<WaterUniforms, "foamColor">) => MeshBasicNodeMaterial;
|
|
1761
|
+
export declare const createWaterMaterial: ({ lightColor, sunDirection }: Pick<LightUniforms, "lightColor" | "sunDirection">, { horizonColor, zenithColor }: Pick<SkyUniforms, "horizonColor" | "zenithColor">, { deepColor, deepDepth, foamColor, foamDepth, shallowColor }: WaterUniforms, { direction, speed }: WaterFlow, bendFoam?: Node<"float">) => MeshBasicNodeMaterial;
|
|
1762
|
+
export declare const createWetDarkeningNode: ({ wetness }: Pick<LightUniforms, "wetness">) => Node<"float">;
|
|
1763
|
+
export declare const createWetSheenNode: ({ lightColor, sunDirection, wetness }: LightUniforms) => Node<"vec3">;
|
|
1764
|
+
export declare const createWindNode: ({ direction, gustSpeed, gustStrength, gustWidth, strength }: WindUniforms, groundPosition: Node<"vec2">) => Node<"vec2">;
|
|
1765
|
+
export declare const getCloudSunColors: ({ cloudFrontBackBlend, cloudLitBackColor, cloudLitColor, cloudShadeBackColor, cloudShadeColor }: Pick<SkyUniforms, "cloudFrontBackBlend" | "cloudLitBackColor" | "cloudLitColor" | "cloudShadeBackColor" | "cloudShadeColor">, sunCosine: Node<"float">) => {
|
|
1766
|
+
lit: Node<"vec3">;
|
|
1767
|
+
shade: Node<"vec3">;
|
|
1768
|
+
};
|
|
1769
|
+
export declare const sampleGrassTrail: (grassTrail: GrassTrail, ground: Node<"vec2">) => Node<"vec2">;
|
|
1770
|
+
export declare const sampleGroundCapture: (groundCapture: GroundCapture, ground: Node<"vec2">) => {
|
|
1771
|
+
captured: Node<"vec4">;
|
|
1772
|
+
isInsideCapture: Node<"float">;
|
|
1773
|
+
};
|
|
1774
|
+
export declare const setObjectFade: (object: Object3D, fade: number) => void;
|
|
1775
|
+
export declare const setObjectSurface: (object: Object3D, color: ColorRepresentation, detail?: SurfaceDetail) => void;
|
|
1776
|
+
export declare const SPECTRAL_RADIAL_BIN_COUNT = 16;
|
|
1777
|
+
export declare const SPECTRAL_ANGULAR_BIN_COUNT = 8;
|
|
1778
|
+
export declare const createSimplexNoise: (seed: number) => ((x: number, y: number) => number);
|
|
1779
|
+
export declare const getSpectralBin: (column: number, row: number, width: number, height: number) => number | undefined;
|
|
1780
|
+
export declare const synthesizeSpectralNoise: ({ channels, height, width }: SpectralNoiseProfile, random: () => number) => Float32Array[];
|
|
1781
|
+
export declare const transformFourierGrid: (real: Float64Array, imaginary: Float64Array, width: number, height: number) => void;
|
|
1782
|
+
export declare const computeBloomPrefilter: (channel: number) => number;
|
|
1783
|
+
export declare const computeGradeLut: ({ contrast, highlightTint, saturation, shadowTint, size }: GradeOptions) => Uint8Array;
|
|
1784
|
+
export declare const computeWhiteBalance: ({ temperature, tint }: WhiteBalance, whiteBalance?: Matrix3) => Matrix3;
|
|
1785
|
+
export declare const createFogUniforms: () => FogUniforms;
|
|
1786
|
+
export declare const createGodraysLight: (shadowMapSize: number, halfExtent: number) => DirectionalLight;
|
|
1787
|
+
export declare const createGradeLutTexture: (gradeOptions: GradeOptions) => Data3DTexture;
|
|
1788
|
+
export declare const createHeightFogNode: (colorNode: Node<"vec4">, depthNode: TextureNode, camera: Camera, { baseHeight, color, density, heightFalloff, maxOpacity, scatterColor, scatterDirection, scatterPower, scatterStrength, startDistance }: FogUniforms, stoneHaze?: Pick<StoneLightUniforms, "hazeColor" | "hazeScatterColor"> & {
|
|
1789
|
+
maskNode: TextureNode;
|
|
1790
|
+
}) => Node<"vec4">;
|
|
1791
|
+
export declare const createOcclusionNode: (depthNode: TextureNode, camera: Camera, radius: number) => GTAONode;
|
|
1792
|
+
export declare const createPostPipeline: ({ camera, fogUniforms, godraysLight, gradeLutTexture, isBloomed, occlusionRadius, postUniforms: { godraysColor, gradeIntensity, outlineColor, outlineFadeDistance, outlineThickness, whiteBalance }, qualityTierSettings: { antialiasingMode, godraysStepCount, isBloomEnabled, isOcclusionEnabled }, renderer, scene, sight, stoneLight }: PostPipelineOptions) => PostPipeline;
|
|
1793
|
+
export declare const createPostUniforms: () => PostUniforms;
|
|
1794
|
+
export declare const createSightNode: (colorNode: Node<"vec4">, depthNode: TextureNode, camera: Camera, litPass: PassNode, { origin, radius, strength }: SightUniforms) => Node<"vec4">;
|
|
1795
|
+
export declare const createSightUniforms: () => SightUniforms;
|
|
1796
|
+
export declare const toneMapGenshin: (sceneColor: readonly [number, number, number], toneMapped?: [number, number, number]) => [number, number, number];
|
|
1797
|
+
export declare const toneMapGenshinNode: (sceneColor: Node<"vec3">) => Node<"vec3">;
|
|
1798
|
+
export declare const toSceneColor: (displayColor: Color, sceneColor?: Color) => Color;
|
|
1799
|
+
export declare const GENSHIN_TONE_MAPPING: ToneMapping;
|
|
1800
|
+
export declare const GENSHIN_TONE_CONTRAST = .5;
|
|
1801
|
+
export declare const GENSHIN_TONE_EXPOSURE = 1;
|
|
1802
|
+
export declare const TONE_CONTRAST_OFFSET = .01;
|
|
1803
|
+
export declare const TONE_CURVE_LIFT = 1e-4;
|
|
1804
|
+
export declare const TONE_CURVE_FLOOR: number;
|
|
1805
|
+
export declare const GENSHIN_BLOOM_THRESHOLD = .75;
|
|
1806
|
+
export declare const GENSHIN_BLOOM_SCALER = 2.5;
|
|
1807
|
+
export declare const GENSHIN_BLOOM_INTENSITY = .75;
|
|
1808
|
+
export declare const GENSHIN_BLOOM_WEIGHTS: readonly number[];
|
|
1809
|
+
export declare const BLOOM_BLUR_TEXELS: readonly number[];
|
|
1810
|
+
export declare const createGenshinRenderer: (canvas: HTMLCanvasElement) => WebGPURenderer;
|
|
1811
|
+
export declare const createInstancedMesh: <TGeometry extends BufferGeometry, TMaterial extends Material | Material[]>(geometry: TGeometry, material: TMaterial, count: number) => InstancedMesh<TGeometry, TMaterial>;
|
|
1812
|
+
export declare const getScreenDirection: ({ aspect, fov, pitch, yaw }: ScreenCamera, [x, y]: [number, number]) => Vector3;
|
|
1813
|
+
export declare const QualityTierSettingsMap: Readonly<Record<QualityTier, QualityTierSettings>>;
|
|
1814
|
+
export declare const MAX_STEPS_PER_FRAME = 5;
|
|
1815
|
+
export declare const createFixedStepLoop: (stepSeconds: number, step: () => void) => FixedStepLoop;
|
|
1816
|
+
export declare const MAX_TILE_ATTEMPTS = 3;
|
|
1817
|
+
export declare const createTileStreamer: <TTile>({ disposeTile, maxCachedCount, maxPendingCount, requestTile }: TileStreamerOptions<TTile>) => TileStreamer<TTile>;
|
|
1818
|
+
export declare const blendGridNodes: (values: readonly number[], sizeX: number, sizeZ: number, column: number, row: number) => number;
|
|
1819
|
+
export declare const checkTerrainBoundsOverlap: (first: TerrainBounds, second: TerrainBounds) => boolean;
|
|
1820
|
+
export declare const checkTerrainDrawsChanged: ({ finestTileSize }: Pick<TerrainOptions, "finestTileSize">, previous: TerrainSelection, next: TerrainSelection, center: Vector3Like, halfSize: number) => boolean;
|
|
1821
|
+
export declare const checkTerrainTileCasts: ({ finestRange }: Pick<TerrainOptions, "finestRange">, key: number, shadowReach: number) => boolean;
|
|
1822
|
+
export declare const computeTerrainIndices: (cellsPerSide: number) => Uint16Array | Uint32Array;
|
|
1823
|
+
export declare const TILE_INDEX_OFFSET: number;
|
|
1824
|
+
export declare const TILE_INDEX_SPAN: number;
|
|
1825
|
+
export declare const TERRAIN_LAYER = 1;
|
|
1826
|
+
export declare const TERRAIN_RING_INITIAL_TILE_COUNT = 64;
|
|
1827
|
+
export declare const TERRAIN_CELL_SIZE = 64;
|
|
1828
|
+
export declare const GAUSSIAN_REACH_WIDTHS = 3;
|
|
1829
|
+
export declare const TERRAIN_HEIGHT_PADDING = 2;
|
|
1830
|
+
export declare const createGaussianHillsHeight: ({ base, hills }: GaussianHills) => ((x: number, z: number) => number);
|
|
1831
|
+
export declare const createResidualHeight: ({ amplitude, fade, octaves, scale, seed }: TerrainResidual) => ((x: number, z: number) => number);
|
|
1832
|
+
export declare const createTerrainFeaturesBlend: (features: readonly TerrainFeature[]) => ((x: number, z: number) => number);
|
|
1833
|
+
export declare const createTerrainFeaturesHeight: (features: readonly TerrainFeature[]) => ((x: number, z: number) => number);
|
|
1834
|
+
export declare const createTerrainMaterial: (terrainOptions: Pick<TerrainOptions, "finestRange" | "finestTileSize" | "maxHeight" | "minHeight">, eye: UniformNode<"vec3", Vector3>, toonMaterialOptions: Pick<ToonMaterialOptions, "lightUniforms" | "rampTexture">, waterUniforms?: WaterUniforms) => ToonNodeMaterial;
|
|
1835
|
+
export declare const createTerrainRing: ({ cellsPerSide, finestTileSize }: Pick<TerrainOptions, "cellsPerSide" | "finestTileSize">, tileIndices: Uint16Array | Uint32Array, material: Material) => TerrainRing;
|
|
1836
|
+
export declare const createTerrainSelection: (capacity: number) => TerrainSelection;
|
|
1837
|
+
export declare const createTerrainTileGeometry: ({ coarseColors, coarseNormals, coarsePositions, colors, normals, positions }: TerrainTileArrays, index: BufferAttribute, boundingBox: Box3) => BufferGeometry;
|
|
1838
|
+
export declare const fileByCell: <T>(items: readonly T[], getBounds: (item: T) => TerrainBounds) => ((x: number, z: number) => readonly T[]);
|
|
1839
|
+
export declare const getCliffBlend: (feature: CliffFeature, x: number, z: number) => number;
|
|
1840
|
+
export declare const getGaussianHillBlend: ({ width, x: hillX, z: hillZ }: Pick<GaussianHill, "width" | "x" | "z">, x: number, z: number) => number;
|
|
1841
|
+
export declare const getParentTerrainTileKey: (key: number) => number;
|
|
1842
|
+
export declare const getPlateauBlend: (feature: PlateauFeature, x: number, z: number) => number;
|
|
1843
|
+
export declare const getRidgeBlend: (feature: RidgeFeature, x: number, z: number) => number;
|
|
1844
|
+
export declare const getSegmentBounds: (startX: number, startZ: number, endX: number, endZ: number, reach: number) => TerrainBounds;
|
|
1845
|
+
export declare const getTerrainFeatureBounds: (feature: TerrainFeature) => TerrainBounds;
|
|
1846
|
+
export declare const getTerrainMorphStart: ({ finestRange, finestTileSize }: Pick<TerrainOptions, "finestRange" | "finestTileSize">) => number;
|
|
1847
|
+
export declare const getTerrainOverlayBounds: (shape: TerrainShape) => TerrainBounds;
|
|
1848
|
+
export declare const getTerrainShapeLevel: ({ base, hills }: GaussianHills, baseUnder: number) => PlateauFeature | undefined;
|
|
1849
|
+
export declare const getTerrainTileBounds: (key: number, finestTileSize: number, cellsPerSide: number) => TerrainBounds;
|
|
1850
|
+
export declare const getTerrainTileKey: (level: number, column: number, row: number) => number;
|
|
1851
|
+
export declare const measureSegment: ({ endX, endZ, startX, startZ }: Pick<RidgeFeature, "endX" | "endZ" | "startX" | "startZ">, x: number, z: number) => Float64Array;
|
|
1852
|
+
export declare const resolveTerrainDraws: ({ levelCount }: Pick<TerrainOptions, "levelCount">, wanted: TerrainSelection, checkTileLoaded: (key: number) => boolean, draws: TerrainSelection) => TerrainSelection;
|
|
1853
|
+
export declare const sampleGroundLayerField: ({ cellSize, layers, origin, size }: GroundLayerField, x: number, z: number, weights: Record<GroundLayer, number>) => void;
|
|
1854
|
+
export declare const sampleTerrainResidualFade: ({ cellSize, clearings, origin, size, weights }: TerrainResidualFade, x: number, z: number) => number;
|
|
1855
|
+
export declare const selectTerrainTiles: (terrainOptions: TerrainOptions, eye: Vector3Like, frustum: Frustum | undefined, selection: TerrainSelection) => TerrainSelection;
|
|
1856
|
+
export declare const TerrainFeatureKindBlendMap: { [K in TerrainFeatureKind]: (feature: Extract<TerrainFeature, {
|
|
1857
|
+
kind: K;
|
|
1858
|
+
}>, x: number, z: number) => number; };
|
|
1859
|
+
export declare const writeTerrainRingIndices: (ringIndices: Uint32Array, tileIndices: Uint16Array | Uint32Array, drawnOrdinals: readonly number[], vertexCount: number) => number;
|
|
1860
|
+
export declare const writeTerrainRingTile: (ring: TerrainTileArrays, base: number, tile: TerrainTile, finestTileSize: number) => void;
|
|
1861
|
+
export declare const bakeImpostor: (renderer: Renderer, parts: readonly ImpostorPart[], resolution: number) => Impostor;
|
|
1862
|
+
export declare const computeGrassBlade: (segmentCount: number) => GrassBlade;
|
|
1863
|
+
export declare const computeGrassTrailCell: (coordinate: number, texelSize: number) => number;
|
|
1864
|
+
export declare const computeGrassTrailTexel: (cell: number) => number;
|
|
1865
|
+
export declare const computeGrassTrailTexelIndex: (cellX: number, cellZ: number) => number;
|
|
1866
|
+
export declare const computeImpostorFade: (distance: number, impostorHeight: number) => number;
|
|
1867
|
+
export declare const IMPOSTOR_RESOLUTION = 256;
|
|
1868
|
+
export declare const IMPOSTOR_SWITCH_HEIGHTS = 10;
|
|
1869
|
+
export declare const IMPOSTOR_CROSSFADE_SHARE = .1;
|
|
1870
|
+
export declare const FLOWER_BEND_PER_WIND = .12;
|
|
1871
|
+
export declare const FLOWER_MATRIX_ATTRIBUTE_NAMES: readonly ["flowerMatrix0", "flowerMatrix1", "flowerMatrix2", "flowerMatrix3"];
|
|
1872
|
+
export declare const FLOWER_COLOR_ATTRIBUTE_NAME = "flowerColor";
|
|
1873
|
+
export declare const GRASS_TRAIL_EXTENT = 16;
|
|
1874
|
+
export declare const GRASS_TRAIL_TEXELS = 64;
|
|
1875
|
+
export declare const GRASS_TRAIL_TEXEL_SIZE: number;
|
|
1876
|
+
export declare const GRASS_TRAIL_STAMP_RADIUS = .6;
|
|
1877
|
+
export declare const GRASS_TRAIL_FADE_SECONDS = 1.5;
|
|
1878
|
+
export declare const GRASS_TRAIL_BEND_SHARE = .9;
|
|
1879
|
+
export declare const GRASS_TRAIL_FADE_START_SHARE = .8;
|
|
1880
|
+
export declare const GRASS_TRAIL_FADE_END_SHARE = .95;
|
|
1881
|
+
export declare const GRASS_BEND_PER_WIND = .9;
|
|
1882
|
+
export declare const GRASS_DIP_PER_BEND = .3;
|
|
1883
|
+
export declare const createFlowerGeometry: () => BufferGeometry;
|
|
1884
|
+
export declare const createFlowerMaterial: (toonMaterialOptions: Pick<ToonMaterialOptions, "lightUniforms" | "rampTexture">, windUniforms: WindUniforms) => ToonNodeMaterial;
|
|
1885
|
+
export declare const createFlowerTileGeometry: (matrices: Float32Array, colors: Float32Array) => InstancedBufferGeometry;
|
|
1886
|
+
interface GrassBladePointOptions {
|
|
1887
|
+
bladeHeight: number;
|
|
1888
|
+
captured: Node<"vec4">;
|
|
1889
|
+
grassTrail: GrassTrail;
|
|
1890
|
+
ground: Node<"vec2">;
|
|
1891
|
+
offset: Node<"vec2">;
|
|
1892
|
+
size: Node<"float">;
|
|
1893
|
+
up: Node<"float">;
|
|
1894
|
+
windUniforms: WindUniforms;
|
|
1895
|
+
}
|
|
1896
|
+
export declare const createGrassBladePoint: ({ bladeHeight, captured, grassTrail, ground, offset, size, up, windUniforms }: GrassBladePointOptions) => Node<"vec3">;
|
|
1897
|
+
export declare const createGrassCell: ({ cameraGround, density, groundCapture, index, ring, waterUniforms }: GrassCellOptions) => GrassCell;
|
|
1898
|
+
export declare const createGrassCulling: ({ bladeHeight, cameraGround, clipFromModel, density, grassTrail, groundCapture, ring, segmentCount, waterUniforms, windUniforms }: GrassCullingOptions) => InstanceCulling;
|
|
1899
|
+
export declare const createGrassGeometry: (segmentCount: number, bladeCount: number) => InstancedBufferGeometry;
|
|
1900
|
+
export declare const createGrassMaterial: ({ bladeHeight, bladeWidth, cameraGround, cellIndex, density, grassTrail, groundCapture, lightUniforms, rampTexture, ring, waterUniforms, windUniforms }: GrassOptions) => ToonNodeMaterial;
|
|
1901
|
+
export declare const createGrassTrail: () => GrassTrail;
|
|
1902
|
+
export declare const createGroundCapture: (size: number, resolution: number) => GroundCapture;
|
|
1903
|
+
export declare const createPlantCulling: ({ attribute, bounds: { bottom, halfWidth, height }, clipFromModel, drawDistance, eye, indexCount }: PlantCullingOptions) => InstanceCulling;
|
|
1904
|
+
export declare const renderGroundCapture: (renderer: Renderer, scene: Scene, { camera, center, material, renderTarget }: GroundCapture, { maxHeight }: Pick<TerrainOptions, "maxHeight">, worldCenter: Vector3Like, origin: Vector3Like) => void;
|
|
1905
|
+
export declare const stepGrassTrail: (trail: GrassTrail, position: Vector2, velocity: Vector2, delta: number) => void;
|
|
1906
|
+
export declare const RIVER_BEND_FOAM_ATTRIBUTE = "bendFoam";
|
|
1907
|
+
export declare const BEND_FOAM_FULL_RADIUS_WIDTHS = 2;
|
|
1908
|
+
export declare const createRiverGeometry: (course: readonly RiverCoursePoint[]) => BufferGeometry;
|
|
1909
|
+
export declare const createUnderwaterFogState: () => UnderwaterFogState;
|
|
1910
|
+
export declare const createWaterfallGeometry: ({ across, drop, lip, width }: WaterfallSheet) => BufferGeometry;
|
|
1911
|
+
export declare const createWaterFlowUniforms: () => WaterFlow;
|
|
1912
|
+
export declare const createWaterUniforms: () => WaterUniforms;
|
|
1913
|
+
export declare const updateUnderwaterFog: (eyeHeight: number, { level, underwaterFogColor, underwaterFogDensity }: Pick<WaterUniforms, "level" | "underwaterFogColor" | "underwaterFogDensity">, { color, density, heightFalloff, maxOpacity, startDistance }: FogUniforms, underwaterFogState: UnderwaterFogState) => void;
|
|
1914
|
+
export declare const createWindUniforms: () => WindUniforms;
|
|
1915
|
+
export declare const computeOriginShift: (cameraPosition: Vector3, threshold: number, step: number, shift: Vector3) => boolean;
|
|
1916
|
+
export declare const computeOutlineDistance: (outline: readonly GroundPoint[], x: number, z: number) => number;
|
|
1917
|
+
export { CliffFeature, GaussianHill, GaussianHills, GroundBand, GroundLayer, GroundLayerColors, GroundLayerField, GroundLayers, GroundPaint, GroundPathSegment, PlateauFeature, RidgeFeature, ScatterOptions, TerrainFeature, TerrainFeatureKind, TerrainOptions, TerrainResidual, TerrainResidualClearing, TerrainResidualFade, TerrainShape, TerrainTile, TerrainTileOptions, computeScatterPoints, computeTerrainTile, createGroundLayerWeights, createGroundPaintColor, createSeededRandom, createTerrainShapeHeight, getTerrainTileColumn, getTerrainTileLevel, getTerrainTileRow };
|