genshin-engine 4.5.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/dist/index.d.ts +19 -2
- package/dist/index.js +155 -10
- package/package.json +6 -6
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,6 @@ import { IndirectStorageBufferAttribute, LightingModel, LightingModelDirectInput
|
|
|
4
4
|
import { CSMShadowNode, CSMShadowNodeData } from "three/examples/jsm/csm/CSMShadowNode.js";
|
|
5
5
|
import { Capsule } from "three/examples/jsm/math/Capsule.js";
|
|
6
6
|
import GTAONode from "three/examples/jsm/tsl/display/GTAONode.js";
|
|
7
|
-
import BloomNode from "three/examples/jsm/tsl/display/BloomNode.js";
|
|
8
7
|
import GodraysNode from "three/examples/jsm/tsl/display/GodraysNode.js";
|
|
9
8
|
export interface SkyUniforms {
|
|
10
9
|
cloudCoverage: UniformNode<"float", number>;
|
|
@@ -1358,6 +1357,18 @@ export interface PlantCullingOptions {
|
|
|
1358
1357
|
}
|
|
1359
1358
|
export declare const createOutlineMaterial: (colorNode: Node<"vec4">, thicknessNode: Node<"float">, instanceMatrix?: Node<"mat4">) => NodeMaterial;
|
|
1360
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
|
+
}
|
|
1361
1372
|
export declare const getGameOutlineOffset: (viewPosition: Vector3, blue: number, blockBChannel: number, size: number) => Vector3;
|
|
1362
1373
|
export interface Impostor {
|
|
1363
1374
|
albedoTarget: RenderTarget;
|
|
@@ -1486,7 +1497,6 @@ export interface GradeOptions {
|
|
|
1486
1497
|
size: number;
|
|
1487
1498
|
}
|
|
1488
1499
|
export interface PostPipeline {
|
|
1489
|
-
bloomNode?: BloomNode;
|
|
1490
1500
|
compileAsync: () => Promise<void>;
|
|
1491
1501
|
dispose: () => void;
|
|
1492
1502
|
godraysNode?: GodraysNode;
|
|
@@ -1576,6 +1586,7 @@ export interface TileStreamer<TTile> {
|
|
|
1576
1586
|
fail: (key: number) => boolean;
|
|
1577
1587
|
get: (key: number) => TTile | undefined;
|
|
1578
1588
|
has: (key: number) => boolean;
|
|
1589
|
+
pendingCount: () => number;
|
|
1579
1590
|
receive: (key: number, tile: TTile) => void;
|
|
1580
1591
|
refresh: (checkIsChanged: (key: number) => boolean) => void;
|
|
1581
1592
|
update: (wanted: TerrainSelection, drawn: TerrainSelection, surrounding: TerrainSelection) => void;
|
|
@@ -1768,6 +1779,7 @@ export declare const createSimplexNoise: (seed: number) => ((x: number, y: numbe
|
|
|
1768
1779
|
export declare const getSpectralBin: (column: number, row: number, width: number, height: number) => number | undefined;
|
|
1769
1780
|
export declare const synthesizeSpectralNoise: ({ channels, height, width }: SpectralNoiseProfile, random: () => number) => Float32Array[];
|
|
1770
1781
|
export declare const transformFourierGrid: (real: Float64Array, imaginary: Float64Array, width: number, height: number) => void;
|
|
1782
|
+
export declare const computeBloomPrefilter: (channel: number) => number;
|
|
1771
1783
|
export declare const computeGradeLut: ({ contrast, highlightTint, saturation, shadowTint, size }: GradeOptions) => Uint8Array;
|
|
1772
1784
|
export declare const computeWhiteBalance: ({ temperature, tint }: WhiteBalance, whiteBalance?: Matrix3) => Matrix3;
|
|
1773
1785
|
export declare const createFogUniforms: () => FogUniforms;
|
|
@@ -1790,6 +1802,11 @@ export declare const GENSHIN_TONE_EXPOSURE = 1;
|
|
|
1790
1802
|
export declare const TONE_CONTRAST_OFFSET = .01;
|
|
1791
1803
|
export declare const TONE_CURVE_LIFT = 1e-4;
|
|
1792
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[];
|
|
1793
1810
|
export declare const createGenshinRenderer: (canvas: HTMLCanvasElement) => WebGPURenderer;
|
|
1794
1811
|
export declare const createInstancedMesh: <TGeometry extends BufferGeometry, TMaterial extends Material | Material[]>(geometry: TGeometry, material: TMaterial, count: number) => InstancedMesh<TGeometry, TMaterial>;
|
|
1795
1812
|
export declare const getScreenDirection: ({ aspect, fov, pitch, yaw }: ScreenCamera, [x, y]: [number, number]) => Vector3;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { A as TERRAIN_RING_INITIAL_TILE_COUNT, C as getTerrainTileColumn, D as TERRAIN_CELL_SIZE, E as GAUSSIAN_REACH_WIDTHS, F as GroundLayer, I as GroundLayers, L as createSeededRandom, M as TILE_INDEX_SPAN, N as createSimplexNoise, O as TERRAIN_HEIGHT_PADDING, P as TerrainFeatureKind, S as getTerrainTileRow, T as getTerrainTileLevel, _ as getSegmentBounds, a as createTerrainFeaturesBlend, b as fileByCell, c as getPlateauBlend, d as createResidualHeight, f as sampleTerrainResidualFade, g as measureSegment, h as sampleGroundLayerField, i as createTerrainFeaturesHeight, j as TILE_INDEX_OFFSET, k as TERRAIN_LAYER, l as getCliffBlend, m as createGroundLayerWeights, n as createTerrainShapeHeight, o as TerrainFeatureKindBlendMap, p as createGroundPaintColor, r as getTerrainShapeLevel, s as getRidgeBlend, t as computeScatterPoints, u as getTerrainFeatureBounds, v as createGaussianHillsHeight, w as blendGridNodes, x as computeTerrainTile, y as getGaussianHillBlend } from "./terrainWorker-JpiYqzu_.js";
|
|
2
2
|
import { AdditiveBlending, BackSide, Bone, Box3, BoxGeometry, BufferAttribute, BufferGeometry, CanvasTexture, ClampToEdgeWrapping, Color, CylinderGeometry, Data3DTexture, DataTexture, DataUtils, DirectionalLight, DoubleSide, Euler, Float32BufferAttribute, FloatType, FrontSide, HalfFloatType, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, InterleavedBufferAttribute, LinearFilter, LinearMipmapLinearFilter, MathUtils, Matrix3, Matrix4, Mesh, NearestFilter, NoColorSpace, NoToneMapping, OrthographicCamera, PerspectiveCamera, Quaternion, RGBAFormat, RedFormat, RepeatWrapping, SRGBColorSpace, Scene, Skeleton, SkinnedMesh, Sphere, Sprite, Texture, UnsignedByteType, Vector2, Vector3 } from "three";
|
|
3
|
-
import { Fn, If, abs, acos, asin, atan, atomicAdd, atomicStore, attribute, cameraFar, cameraNear, cameraPosition, cameraProjectionMatrix, cameraViewMatrix, clamp, color, cos, cross, diffuseColor, distance, dot, exp, exp2, float, fract, getNormalFromDepth, getViewPosition, hash, instanceIndex, instancedBufferAttribute, interleavedGradientNoise, luminance, mat4, max, min, mix, mod, modelViewMatrix, modelWorldMatrix, modelWorldMatrixInverse, mrt, mx_cell_noise_float, mx_fractal_noise_float, mx_noise_float, normalGeometry, normalLocal, normalView, normalViewGeometry, normalWorld, normalWorldGeometry, normalize, output, pass, perspectiveDepthToViewZ, positionGeometry, positionLocal, positionView, positionViewDirection, positionWorld, pow, reflect, renderOutput, sample, saturate, screenCoordinate, screenUV, select, sin, smoothstep, step, storage, tangentLocal, texture, texture3D, time, transformNormal, transformNormalToView, uint, uniform, uniformArray, uv, varying, vec2, vec3, vec4, velocity, vertexColor, viewportDepthTexture, viewportSharedTexture } from "three/tsl";
|
|
4
|
-
import { IndirectStorageBufferAttribute, LightingModel, MeshBasicNodeMaterial, MeshToonNodeMaterial, NodeMaterial, RenderPipeline, RenderTarget, SpriteNodeMaterial, StorageBufferAttribute, StorageInstancedBufferAttribute, ToonOutlinePassNode, WebGPURenderer } from "three/webgpu";
|
|
3
|
+
import { Fn, If, abs, acos, asin, atan, atomicAdd, atomicStore, attribute, cameraFar, cameraNear, cameraPosition, cameraProjectionMatrix, cameraViewMatrix, clamp, color, context, cos, cross, diffuseColor, distance, dot, exp, exp2, float, fract, getNormalFromDepth, getViewPosition, hash, instanceIndex, instancedBufferAttribute, interleavedGradientNoise, luminance, mat4, max, min, mix, mod, modelViewMatrix, modelWorldMatrix, modelWorldMatrixInverse, mrt, mx_cell_noise_float, mx_fractal_noise_float, mx_noise_float, normalGeometry, normalLocal, normalView, normalViewGeometry, normalWorld, normalWorldGeometry, normalize, output, pass, perspectiveDepthToViewZ, positionGeometry, positionLocal, positionView, positionViewDirection, positionWorld, pow, reflect, renderOutput, sample, saturate, screenCoordinate, screenUV, select, sin, smoothstep, step, storage, tangentLocal, texture, texture3D, time, transformNormal, transformNormalToView, uint, uniform, uniformArray, uv, varying, vec2, vec3, vec4, velocity, vertexColor, viewportDepthTexture, viewportSharedTexture } from "three/tsl";
|
|
4
|
+
import { IndirectStorageBufferAttribute, LightingModel, MeshBasicNodeMaterial, MeshToonNodeMaterial, Node, NodeMaterial, NodeUpdateType, QuadMesh, RenderPipeline, RenderTarget, RendererUtils, SpriteNodeMaterial, StorageBufferAttribute, StorageInstancedBufferAttribute, ToonOutlinePassNode, WebGPURenderer } from "three/webgpu";
|
|
5
5
|
import { CSMShadowNode } from "three/examples/jsm/csm/CSMShadowNode.js";
|
|
6
6
|
import { MeshBVH } from "three-mesh-bvh";
|
|
7
7
|
import { Capsule } from "three/examples/jsm/math/Capsule.js";
|
|
@@ -10,7 +10,6 @@ import { mergeGeometries } from "three/examples/jsm/utils/BufferGeometryUtils.js
|
|
|
10
10
|
import { voronoi2d } from "three/examples/jsm/tsl/math/voronoiNoise.js";
|
|
11
11
|
import GTAONode from "three/examples/jsm/tsl/display/GTAONode.js";
|
|
12
12
|
import { bilateralBlur } from "three/examples/jsm/tsl/display/BilateralBlurNode.js";
|
|
13
|
-
import { bloom } from "three/examples/jsm/tsl/display/BloomNode.js";
|
|
14
13
|
import { depthAwareBlend } from "three/examples/jsm/tsl/display/depthAwareBlend.js";
|
|
15
14
|
import { godrays } from "three/examples/jsm/tsl/display/GodraysNode.js";
|
|
16
15
|
import { lut3D } from "three/examples/jsm/tsl/display/Lut3DNode.js";
|
|
@@ -221,6 +220,16 @@ const GENSHIN_TONE_EXPOSURE = 1;
|
|
|
221
220
|
const TONE_CONTRAST_OFFSET = .01;
|
|
222
221
|
const TONE_CURVE_LIFT = 1e-4;
|
|
223
222
|
const TONE_CURVE_FLOOR = -Math.log2(1.0001) / 1;
|
|
223
|
+
const GENSHIN_BLOOM_THRESHOLD = .75;
|
|
224
|
+
const GENSHIN_BLOOM_SCALER = 2.5;
|
|
225
|
+
const GENSHIN_BLOOM_INTENSITY = .75;
|
|
226
|
+
const GENSHIN_BLOOM_WEIGHTS = [
|
|
227
|
+
.3,
|
|
228
|
+
.3,
|
|
229
|
+
.26,
|
|
230
|
+
.15
|
|
231
|
+
];
|
|
232
|
+
const BLOOM_BLUR_TEXELS = [.25, .96];
|
|
224
233
|
// src/post/toSceneColor.ts
|
|
225
234
|
const toSceneChannel = (channel) => -Math.log2(1.0001 - Math.min(Math.max(channel, 0), 1) ** (1 / .51)) / 1;
|
|
226
235
|
const toSceneColor = (displayColor, sceneColor = new Color()) => sceneColor.setRGB(toSceneChannel(displayColor.r), toSceneChannel(displayColor.g), toSceneChannel(displayColor.b));
|
|
@@ -4342,6 +4351,135 @@ const createGameOutlineMaterial = (colorNode, widthNode, offsetNode) => {
|
|
|
4342
4351
|
material.colorNode = colorNode;
|
|
4343
4352
|
return material;
|
|
4344
4353
|
};
|
|
4354
|
+
// src/models/nodes/GameBloomNode.ts
|
|
4355
|
+
const BLUR_TAP_WEIGHT = 1 / (2 * BLOOM_BLUR_TEXELS.length);
|
|
4356
|
+
const DOWNSAMPLE_TAP_OFFSETS = [
|
|
4357
|
+
[-.5, -.5],
|
|
4358
|
+
[.5, -.5],
|
|
4359
|
+
[-.5, .5],
|
|
4360
|
+
[.5, .5]
|
|
4361
|
+
];
|
|
4362
|
+
const BLUR_ROW_DIRECTION = new Vector2(1, 0);
|
|
4363
|
+
const BLUR_COLUMN_DIRECTION = new Vector2(0, 1);
|
|
4364
|
+
const createRenderTarget = (name) => {
|
|
4365
|
+
const renderTarget = new RenderTarget(1, 1, {
|
|
4366
|
+
depthBuffer: false,
|
|
4367
|
+
type: HalfFloatType
|
|
4368
|
+
});
|
|
4369
|
+
renderTarget.texture.name = name;
|
|
4370
|
+
renderTarget.texture.generateMipmaps = false;
|
|
4371
|
+
return renderTarget;
|
|
4372
|
+
};
|
|
4373
|
+
var GameBloomNode = class extends Node {
|
|
4374
|
+
#blurDirection = uniform(new Vector2(1, 0));
|
|
4375
|
+
#blurInverseSize = uniform(new Vector2());
|
|
4376
|
+
#blurMaterial = new NodeMaterial();
|
|
4377
|
+
#blurTexture = texture();
|
|
4378
|
+
#composeMaterial = new NodeMaterial();
|
|
4379
|
+
#composeTarget = createRenderTarget("GameBloom.compose");
|
|
4380
|
+
#downsampleInverseSize = uniform(new Vector2());
|
|
4381
|
+
#downsampleMaterial = new NodeMaterial();
|
|
4382
|
+
#downsampleTexture = texture();
|
|
4383
|
+
#levels;
|
|
4384
|
+
#materials;
|
|
4385
|
+
#output;
|
|
4386
|
+
#prefilterMaterial = new NodeMaterial();
|
|
4387
|
+
#prefilterTarget = createRenderTarget("GameBloom.prefilter");
|
|
4388
|
+
#quad = new QuadMesh(new NodeMaterial());
|
|
4389
|
+
#rendererState;
|
|
4390
|
+
#size = new Vector2();
|
|
4391
|
+
constructor(inputNode) {
|
|
4392
|
+
super("vec4");
|
|
4393
|
+
this.updateBeforeType = NodeUpdateType.FRAME;
|
|
4394
|
+
this.#levels = GENSHIN_BLOOM_WEIGHTS.map((weight, index) => ({
|
|
4395
|
+
blurred: createRenderTarget(`GameBloom.blurred${index}`),
|
|
4396
|
+
downsampled: createRenderTarget(`GameBloom.downsampled${index}`),
|
|
4397
|
+
horizontal: createRenderTarget(`GameBloom.horizontal${index}`),
|
|
4398
|
+
sampled: texture(),
|
|
4399
|
+
weight
|
|
4400
|
+
}));
|
|
4401
|
+
const prefilter = max(inputNode.rgb.sub(float(GENSHIN_BLOOM_THRESHOLD)), vec3(0)).mul(float(GENSHIN_BLOOM_SCALER));
|
|
4402
|
+
this.#prefilterMaterial.fragmentNode = vec4(prefilter, 1);
|
|
4403
|
+
const downsampled = DOWNSAMPLE_TAP_OFFSETS.map(([x, y]) => this.#downsampleTexture.sample(uv().add(this.#downsampleInverseSize.mul(vec2(x, y)))).rgb).reduce((sum, tap) => sum.add(tap)).mul(float(1 / DOWNSAMPLE_TAP_OFFSETS.length));
|
|
4404
|
+
this.#downsampleMaterial.fragmentNode = vec4(downsampled, 1);
|
|
4405
|
+
const blurred = BLOOM_BLUR_TEXELS.flatMap((distance) => [distance, -distance]).map((distance) => this.#blurTexture.sample(uv().add(this.#blurDirection.mul(this.#blurInverseSize).mul(float(distance)))).rgb).reduce((sum, tap) => sum.add(tap)).mul(float(BLUR_TAP_WEIGHT));
|
|
4406
|
+
this.#blurMaterial.fragmentNode = vec4(blurred, 1);
|
|
4407
|
+
const composed = this.#levels.map(({ sampled, weight }) => sampled.sample(uv()).rgb.mul(float(weight))).reduce((sum, level) => sum.add(level)).mul(float(GENSHIN_BLOOM_INTENSITY));
|
|
4408
|
+
this.#composeMaterial.fragmentNode = vec4(composed, 0);
|
|
4409
|
+
this.#materials = [
|
|
4410
|
+
this.#prefilterMaterial,
|
|
4411
|
+
this.#downsampleMaterial,
|
|
4412
|
+
this.#blurMaterial,
|
|
4413
|
+
this.#composeMaterial
|
|
4414
|
+
];
|
|
4415
|
+
}
|
|
4416
|
+
dispose() {
|
|
4417
|
+
super.dispose();
|
|
4418
|
+
for (const renderTarget of [
|
|
4419
|
+
this.#prefilterTarget,
|
|
4420
|
+
this.#composeTarget,
|
|
4421
|
+
...this.#levels.flatMap(({ blurred, downsampled, horizontal }) => [
|
|
4422
|
+
blurred,
|
|
4423
|
+
downsampled,
|
|
4424
|
+
horizontal
|
|
4425
|
+
])
|
|
4426
|
+
]) renderTarget.dispose();
|
|
4427
|
+
for (const material of this.#materials) material.dispose();
|
|
4428
|
+
}
|
|
4429
|
+
setup(builder) {
|
|
4430
|
+
const sharedContext = context(builder.getSharedContext());
|
|
4431
|
+
for (const material of this.#materials) {
|
|
4432
|
+
material.contextNode = sharedContext;
|
|
4433
|
+
material.needsUpdate = true;
|
|
4434
|
+
}
|
|
4435
|
+
this.#output ??= texture(this.#composeTarget.texture);
|
|
4436
|
+
return this.#output;
|
|
4437
|
+
}
|
|
4438
|
+
updateBefore(frame) {
|
|
4439
|
+
const { renderer } = frame;
|
|
4440
|
+
if (!renderer) return void 0;
|
|
4441
|
+
this.#rendererState = RendererUtils.saveRendererState(renderer, this.#rendererState);
|
|
4442
|
+
const size = renderer.getDrawingBufferSize(this.#size);
|
|
4443
|
+
this.#setSize(size.width, size.height);
|
|
4444
|
+
this.#renderPass(renderer, this.#prefilterTarget, this.#prefilterMaterial);
|
|
4445
|
+
let input = this.#prefilterTarget;
|
|
4446
|
+
for (const level of this.#levels) {
|
|
4447
|
+
this.#downsampleTexture.value = input.texture;
|
|
4448
|
+
this.#downsampleInverseSize.value.set(1 / input.width, 1 / input.height);
|
|
4449
|
+
this.#renderPass(renderer, level.downsampled, this.#downsampleMaterial);
|
|
4450
|
+
this.#renderBlur(renderer, level.downsampled, level.horizontal, BLUR_ROW_DIRECTION);
|
|
4451
|
+
this.#renderBlur(renderer, level.horizontal, level.blurred, BLUR_COLUMN_DIRECTION);
|
|
4452
|
+
input = level.blurred;
|
|
4453
|
+
}
|
|
4454
|
+
for (const level of this.#levels) level.sampled.value = level.blurred.texture;
|
|
4455
|
+
this.#renderPass(renderer, this.#composeTarget, this.#composeMaterial);
|
|
4456
|
+
RendererUtils.restoreRendererState(renderer, this.#rendererState);
|
|
4457
|
+
}
|
|
4458
|
+
#renderBlur(renderer, source, target, direction) {
|
|
4459
|
+
this.#blurTexture.value = source.texture;
|
|
4460
|
+
this.#blurDirection.value.copy(direction);
|
|
4461
|
+
this.#blurInverseSize.value.set(1 / source.width, 1 / source.height);
|
|
4462
|
+
this.#renderPass(renderer, target, this.#blurMaterial);
|
|
4463
|
+
}
|
|
4464
|
+
#renderPass(renderer, target, material) {
|
|
4465
|
+
this.#quad.material = material;
|
|
4466
|
+
renderer.setRenderTarget(target);
|
|
4467
|
+
this.#quad.render(renderer);
|
|
4468
|
+
}
|
|
4469
|
+
#setSize(width, height) {
|
|
4470
|
+
this.#prefilterTarget.setSize(width, height);
|
|
4471
|
+
this.#composeTarget.setSize(width, height);
|
|
4472
|
+
let levelWidth = width;
|
|
4473
|
+
let levelHeight = height;
|
|
4474
|
+
for (const level of this.#levels) {
|
|
4475
|
+
levelWidth = Math.max(1, Math.floor(levelWidth / 2));
|
|
4476
|
+
levelHeight = Math.max(1, Math.floor(levelHeight / 2));
|
|
4477
|
+
level.downsampled.setSize(levelWidth, levelHeight);
|
|
4478
|
+
level.horizontal.setSize(levelWidth, levelHeight);
|
|
4479
|
+
level.blurred.setSize(levelWidth, levelHeight);
|
|
4480
|
+
}
|
|
4481
|
+
}
|
|
4482
|
+
};
|
|
4345
4483
|
// src/models/nodes/getGameOutlineOffset.ts
|
|
4346
4484
|
const getGameOutlineOffset = (viewPosition, blue, blockBChannel, size) => {
|
|
4347
4485
|
const scale = blockBChannel < .5 ? blue - .5 : 1;
|
|
@@ -5041,6 +5179,8 @@ const setObjectSurface = (object, color, detail) => {
|
|
|
5041
5179
|
const texelsPerMetre = detail ? 1 / detail.metresPerTexel : 0;
|
|
5042
5180
|
object.userData[OBJECT_SURFACE_KEY] = new ObjectSurface(new Color(color), amplitudes, texelsPerMetre);
|
|
5043
5181
|
};
|
|
5182
|
+
// src/post/computeBloomPrefilter.ts
|
|
5183
|
+
const computeBloomPrefilter = (channel) => Math.max(channel - GENSHIN_BLOOM_THRESHOLD, 0) * GENSHIN_BLOOM_SCALER;
|
|
5044
5184
|
// src/post/computeGradeLut.ts
|
|
5045
5185
|
const RED_LUMINANCE = .2126;
|
|
5046
5186
|
const GREEN_LUMINANCE = .7152;
|
|
@@ -5184,9 +5324,6 @@ const createSightNode = (colorNode, depthNode, camera, litPass, { origin, radius
|
|
|
5184
5324
|
// src/post/toneMapGenshinNode.ts
|
|
5185
5325
|
const toneMapGenshinNode = (sceneColor) => min(max(vec3(1.0001).sub(exp2(sceneColor.mul(-1))), 0).pow(.51), 1);
|
|
5186
5326
|
// src/post/createPostPipeline.ts
|
|
5187
|
-
const BLOOM_STRENGTH = .35;
|
|
5188
|
-
const BLOOM_RADIUS = .4;
|
|
5189
|
-
const BLOOM_THRESHOLD = .85;
|
|
5190
5327
|
const MIN_VIEW_DISTANCE = .001;
|
|
5191
5328
|
const createPostPipeline = ({ camera, fogUniforms, godraysLight, gradeLutTexture, isBloomed = true, occlusionRadius, postUniforms: { godraysColor, gradeIntensity, outlineColor, outlineFadeDistance, outlineThickness, whiteBalance }, qualityTierSettings: { antialiasingMode, godraysStepCount, isBloomEnabled, isOcclusionEnabled }, renderer, scene, sight, stoneLight }) => {
|
|
5192
5329
|
const renderPipeline = new RenderPipeline(renderer);
|
|
@@ -5237,10 +5374,9 @@ const createPostPipeline = ({ camera, fogUniforms, godraysLight, gradeLutTexture
|
|
|
5237
5374
|
}
|
|
5238
5375
|
let bloomedNode = sightedNode;
|
|
5239
5376
|
if (isBloomed && isBloomEnabled) {
|
|
5240
|
-
const bloomNode =
|
|
5377
|
+
const bloomNode = new GameBloomNode(sightedNode);
|
|
5241
5378
|
passNodes.push(bloomNode);
|
|
5242
5379
|
bloomedNode = sightedNode.add(bloomNode);
|
|
5243
|
-
postPipeline.bloomNode = bloomNode;
|
|
5244
5380
|
}
|
|
5245
5381
|
let resolvedNode = bloomedNode;
|
|
5246
5382
|
if (isTraa) {
|
|
@@ -5366,6 +5502,7 @@ const createTileStreamer = ({ disposeTile, maxCachedCount, maxPendingCount, requ
|
|
|
5366
5502
|
const pendingWantedFrameMap = /* @__PURE__ */ new Map();
|
|
5367
5503
|
const failedAttemptMap = /* @__PURE__ */ new Map();
|
|
5368
5504
|
const givenUpKeySet = /* @__PURE__ */ new Set();
|
|
5505
|
+
const retryKeySet = /* @__PURE__ */ new Set();
|
|
5369
5506
|
const stalePendingKeySet = /* @__PURE__ */ new Set();
|
|
5370
5507
|
let frame = 0;
|
|
5371
5508
|
let isDisposed = false;
|
|
@@ -5396,6 +5533,7 @@ const createTileStreamer = ({ disposeTile, maxCachedCount, maxPendingCount, requ
|
|
|
5396
5533
|
pendingWantedFrameMap.clear();
|
|
5397
5534
|
failedAttemptMap.clear();
|
|
5398
5535
|
givenUpKeySet.clear();
|
|
5536
|
+
retryKeySet.clear();
|
|
5399
5537
|
stalePendingKeySet.clear();
|
|
5400
5538
|
},
|
|
5401
5539
|
fail: (key) => {
|
|
@@ -5403,12 +5541,16 @@ const createTileStreamer = ({ disposeTile, maxCachedCount, maxPendingCount, requ
|
|
|
5403
5541
|
stalePendingKeySet.delete(key);
|
|
5404
5542
|
const attempts = (failedAttemptMap.get(key) ?? 0) + 1;
|
|
5405
5543
|
failedAttemptMap.set(key, attempts);
|
|
5406
|
-
if (attempts < 3)
|
|
5544
|
+
if (attempts < 3) {
|
|
5545
|
+
retryKeySet.add(key);
|
|
5546
|
+
return false;
|
|
5547
|
+
}
|
|
5407
5548
|
givenUpKeySet.add(key);
|
|
5408
5549
|
return true;
|
|
5409
5550
|
},
|
|
5410
5551
|
get: (key) => cachedTileMap.get(key)?.tile,
|
|
5411
5552
|
has: (key) => cachedTileMap.has(key),
|
|
5553
|
+
pendingCount: () => pendingWantedFrameMap.size + retryKeySet.size,
|
|
5412
5554
|
receive: (key, tile) => {
|
|
5413
5555
|
const lastWantedFrame = pendingWantedFrameMap.get(key) ?? frame;
|
|
5414
5556
|
pendingWantedFrameMap.delete(key);
|
|
@@ -5432,6 +5574,8 @@ const createTileStreamer = ({ disposeTile, maxCachedCount, maxPendingCount, requ
|
|
|
5432
5574
|
},
|
|
5433
5575
|
update: (wanted, drawn, surrounding) => {
|
|
5434
5576
|
frame++;
|
|
5577
|
+
const failedKeys = [...retryKeySet];
|
|
5578
|
+
retryKeySet.clear();
|
|
5435
5579
|
for (const { count, keys } of [
|
|
5436
5580
|
wanted,
|
|
5437
5581
|
drawn,
|
|
@@ -5455,6 +5599,7 @@ const createTileStreamer = ({ disposeTile, maxCachedCount, maxPendingCount, requ
|
|
|
5455
5599
|
requestTile(key);
|
|
5456
5600
|
}
|
|
5457
5601
|
}
|
|
5602
|
+
for (const key of failedKeys) if ([wanted, surrounding].some(({ count, keys }) => keys.subarray(0, count).includes(key)) && !checkIsSettled(key) && !pendingWantedFrameMap.has(key)) retryKeySet.add(key);
|
|
5458
5603
|
}
|
|
5459
5604
|
};
|
|
5460
5605
|
};
|
|
@@ -6452,4 +6597,4 @@ const computeOutlineDistance = (outline, x, z) => {
|
|
|
6452
6597
|
}
|
|
6453
6598
|
return isInside ? 0 : Math.sqrt(nearestSquared);
|
|
6454
6599
|
};
|
|
6455
|
-
export { A4_FREQUENCY, A4_PITCH, AIR_LOCOMOTION_STATES, AnchoredCascadeShadowNode, AntialiasingMode, BEND_FOAM_FULL_RADIUS_WIDTHS, CLIMB_JUMP_STAMINA_COST, CLIMB_LOCOMOTION_STATES, CLIMB_REGRAB_SECONDS, CLIMB_STAMINA_PER_SECOND, CLIMB_START_STAMINA, COOL_RAMP_ROW_BASE, CULLING_FRUSTUM_MARGIN, CULLING_INDEX_COUNT_INDEX, CULLING_INDIRECT_ARGUMENT_COUNT, CULLING_INSTANCE_COUNT_INDEX, CULLING_MATRIX_COLUMN_COUNT, CULLING_MATRIX_ELEMENT_COUNT, CULLING_MIN_SIZE, CharacterMaterialKind, DASH_STAMINA_COST, DEFAULT_LIGHT_AREA, DEFAULT_RAMP_WIDTH, DEFAULT_SKY_GRADIENT, DEFAULT_SKY_SHAPE, DESATURATION_WEIGHTS, EMISSION_ALPHA_FLOOR, FIELD_SELECTOR, FLAT_LIGHT_MAP, FLOWER_BEND_PER_WIND, FLOWER_COLOR_ATTRIBUTE_NAME, FLOWER_MATRIX_ATTRIBUTE_NAMES, FOCUS_KEY_CODES, FOLLOW_CAMERA_ARM_STEP, FOLLOW_CAMERA_CLEARANCE, FOLLOW_CAMERA_DEFAULT_SETTINGS, FOLLOW_CAMERA_DISTANCE_PER_ZOOM_STEP, FOLLOW_CAMERA_EASE_OUT_SPEED, FOLLOW_CAMERA_FOV, FOLLOW_CAMERA_MAX_DISTANCE, FOLLOW_CAMERA_MAX_PITCH, FOLLOW_CAMERA_MIN_DISTANCE, FOLLOW_CAMERA_MIN_PITCH, FOLLOW_CAMERA_NEUTRAL_SENSITIVITY, FOLLOW_CAMERA_PIVOT_SHARE, FOLLOW_CAMERA_SLOPE_PITCH_SPEED, FREE_CAMERA_BASE_SPEED, FREE_CAMERA_CLEARANCE, FREE_CAMERA_MAX_PITCH, FREE_CAMERA_SPEED_PER_HEIGHT, GAMEPAD_BUTTONS, GAMEPAD_LOOK_RADIANS_PER_SECOND, GAMEPAD_STICK_DEADZONE, GAME_MINUTES_PER_SECOND, GAUSSIAN_REACH_WIDTHS, GENSHIN_TONE_CONTRAST, GENSHIN_TONE_EXPOSURE, GENSHIN_TONE_MAPPING, GLIDE_STAMINA_PER_SECOND, GRASS_BEND_PER_WIND, GRASS_DIP_PER_BEND, GRASS_TRAIL_BEND_SHARE, GRASS_TRAIL_EXTENT, GRASS_TRAIL_FADE_END_SHARE, GRASS_TRAIL_FADE_SECONDS, GRASS_TRAIL_FADE_START_SHARE, GRASS_TRAIL_STAMP_RADIUS, GRASS_TRAIL_TEXELS, GRASS_TRAIL_TEXEL_SIZE, GROUND_CONTACT_DISTANCE, GROUND_LOCOMOTION_STATES, GROUND_NORMAL_SPAN, GROUND_PRESS_SPEED, GamepadButton, GroundLayer, GroundLayers, HALF_LAMBERT_OFFSET, HALF_LAMBERT_SCALE, IMPOSTOR_CROSSFADE_SHARE, IMPOSTOR_RESOLUTION, IMPOSTOR_SWITCH_HEIGHTS, InputAction, InputActionBindingMap, InputActions, KEY_CODE_BACKWARD, KEY_CODE_DOWN, KEY_CODE_FORWARD, KEY_CODE_LEFT, KEY_CODE_RIGHT, KEY_CODE_UP, LEAF_SHAPE_KEPT_SHARE, LEAF_SHAPE_WIDTH, LEAST_DIVISOR, LIGHTNING_BOLT_BRIGHTNESS, LIGHTNING_BOLT_COLOR, LIGHTNING_BOLT_OPTIONS, LIGHTNING_FLASH_AMBIENT, LIGHTNING_FLASH_COLOR, LIGHTNING_FLASH_DECAY_SECONDS, LIGHTNING_FLASH_END, LIGHTNING_FLASH_PULSES, LIGHTNING_FLASH_SKY, LIGHTNING_MAX_DISTANCE, LIGHTNING_MIN_DISTANCE, LocomotionState, MAXIMUM_FACE_THRESHOLD, MAXIMUM_WINDOW_FLOOR, MAX_BYTE, MAX_STEPS_PER_FRAME, MAX_TILE_ATTEMPTS, MIDI_VELOCITY_MAX, MINIMUM_FACE_THRESHOLD, MINIMUM_OUTLINE_KNOT_SPAN, MINIMUM_RAMP_WIDTH_VERTEX, MINUTES_PER_DAY, MMD_BONE_NAME_MAP, MOUSE_BUTTONS, MOUSE_LOOK_MAX_PIXELS_PER_EVENT, MOUSE_LOOK_RADIANS_PER_PIXEL, MUSIC_EXPRESSION_WINDOW_SECONDS, MUSIC_LOOKAHEAD_SECONDS, MUSIC_NOISE_BAND_CENTRES, MUSIC_NOISE_LENGTH, MUSIC_SCHEDULE_INTERVAL_MS, MmdBoneName, MouseButton, NEUTRAL_LIGHT_MAP_GREEN, OBJECT_FADE_KEY, OBJECT_SURFACE_KEY, OUTLINE_MAIN_TEXTURE_SHARE, OUTLINE_PROJECTION_SCALE, OUTLINE_WIDTH_SCALE, ObjectSurface, POSE_AIR_STANCES, POSE_ARM_BEND_RADIANS, POSE_ARM_CHAINS, POSE_ARM_LOWER_RADIANS, POSE_BREATH_SECONDS, POSE_CHEST_BREATH_RADIANS, POSE_CROSSFADE_SECONDS, POSE_GAITS, POSE_SHOULDER_BREATH_RADIANS, PRECIPITATION_COUNT, PRECIPITATION_SETTINGS_MAP, PRECIPITATION_SWAY_SPEED, PRECIPITATION_VOLUME_HEIGHT, PRECIPITATION_VOLUME_SIZE, PmxBoneFlag, PmxJointKind, PmxMaterialFlag, PmxMorphKind, PmxPhysicsMode, PmxReader, PmxRigidBodyShape, PmxSphereMode, PmxTextEncoding, PmxWeightDeform, PrecipitationKind, QualityTier, QualityTierSettingsMap, RAMP_ROW_BASE, RAMP_ROW_STEP, REGION_FLOORS, RELEASE_TIME_CONSTANTS, RIVER_BEND_FOAM_ATTRIBUTE, RampLayout, RoofKind, SHARED_TOON_RAMP_SHADES, SOUND_EFFECT_BAND_EDGES, SOUND_EFFECT_FRAME_LENGTH, SPECTRAL_ANGULAR_BIN_COUNT, SPECTRAL_RADIAL_BIN_COUNT, SPHERE_CAST_STRIDE_SHARE, SPLASH_COUNT, SPLASH_LIFETIME, SPLASH_LIFT, SPLASH_OPACITY, SPLASH_RADIUS, SPLASH_SIZE, SPRINT_STAMINA_PER_SECOND, STAMINA_MAX, STAMINA_REFILL_DELAY_SECONDS, STAMINA_REFILL_PER_SECOND, STAMINA_REFILL_STATES, STEEP_SLIDE_SPEED, STONE_DARKENING_TOP, STONE_HARMONIC_COUNT, STONE_HEIGHT_FALLOFF, STONE_MASK_OUTPUT, STONE_RAMP_KNOT_COUNT, STONE_SHADOW_EXPONENT, SUN_REDRAW_COSINE, SURFACE_DETAIL_BAND_SIGMAS, SURFACE_OCTAVE_RESPONSES, SURFACE_OCTAVE_TEXEL_FREQUENCIES, SWIM_DASH_STAMINA_COST, SWIM_DASH_STAMINA_PER_SECOND, SWIM_STROKE_SECONDS, SWIM_STROKE_STAMINA_COST, SharedToonOutlinePassNode, StoneLightingModel, StoneNodeMaterial, TERRAIN_CELL_SIZE, TERRAIN_HEIGHT_PADDING, TERRAIN_LAYER, TERRAIN_RING_INITIAL_TILE_COUNT, TILE_INDEX_OFFSET, TILE_INDEX_SPAN, TONE_CONTRAST_OFFSET, TONE_CURVE_FLOOR, TONE_CURVE_LIFT, TOON_HIGH, TOON_LOW, TerrainFeatureKind, TerrainFeatureKindBlendMap, ToonNodeMaterial, UNIT_OUTLINE_WIDTH_KNOTS, WALK_MOVE_MAGNITUDE, WALL_PRESS_SPEED, WALL_PROBE_DISTANCE, WATER_LOCOMOTION_STATES, WEATHER_SETTINGS_MAP, WEATHER_TRANSITION_SECONDS, WET_DARKENING, WET_SHEEN_POWER, WET_SHEEN_STRENGTH, WeatherKind, addSmoothLoop, advanceGameClock, advanceStridePhase, applyLightningFlash, applyPrecipitationSettings, applySkyState, applyStoneLight, applyWeatherState, bakeImpostor, blendGridNodes, blendWeatherState, checkIsPmxSphereDrawn, checkSunTurned, checkTerrainBoundsOverlap, checkTerrainDrawsChanged, checkTerrainTileCasts, checkTransparentTexels, collectMusicNotes, collectMusicSegments, computeCharacterPose, computeGradeLut, computeGrassBlade, computeGrassTrailCell, computeGrassTrailTexel, computeGrassTrailTexelIndex, computeImpostorFade, computeLeafCards, computeLightningBolt, computeLightningFlash, computeLocomotionState, computeNoiseSamples, computeOriginShift, computeOutlineDistance, computeRampValues, computeScatterPoints, computeSoundEffectSamples, computeStatueSurface, computeStoneDarkening, computeStoneHarmonics, computeStoneRampCoordinate, computeSunDirection, computeSurfaceOctaves, computeTerrainIndices, computeTerrainTile, computeTreeTubes, computeWhiteBalance, computeWindGust, createBoxesGeometry, createBuildingGeometry, createCausticsNode, createCharacterController, createCharacterMaterial, createCharacterPoseRotations, createCharacterPoser, createCharacterShadingInputs, createCharacterShadingNode, createCloudAtlasTexture, createCloudBandSprite, createCloudLayerNode, createCloudLayerProfileTexture, createCloudLayerTexture, createCloudLayerTextures, createCloudLayerUniforms, createDitherFadeNode, createFaceDraw, createFaceShadeNode, createFixedStepLoop, createFlowerGeometry, createFlowerMaterial, createFlowerTileGeometry, createFogUniforms, createFollowCamera, createFreeCamera, createFrustumVisibility, createGameOutlineMaterial, createGaussianHillsHeight, createGenshinRenderer, createGodraysLight, createGradeLutTexture, createGrassBladePoint, createGrassCell, createGrassCulling, createGrassGeometry, createGrassMaterial, createGrassTrail, createGroundCapture, createGroundLayerWeights, createGroundPaintColor, createGroundQuery, createHeightFogNode, createIdleInputState, createImpostorMaterial, createIndexedGeometry, createInput, createInstanceCulling, createInstanceMatrixBuffer, createInstanceMatrixNode, createInstancedGeometry, createInstancedMesh, createInstrumentWave, createLandmarkCollider, createLatheStackGeometry, createLeafMaterial, createLeafShapeNode, createLightUniforms, createLightningBoltGeometry, createLightningBoltMaterial, createMaterialDetailNode, createMusicPlayer, createNoiseBuffer, createObjectFadeNode, createObjectSurfaceNode, createOcclusionNode, createOutlineColorNode, createOutlineMaterial, createOutlineScaleNode, createPavingGeometry, createPavingStoneGeometry, createPlantCulling, createPmxGeometry, createPmxMesh, createPmxSkeleton, createPmxTexture, createPmxToonTexture, createPostPipeline, createPostUniforms, createPrecipitationGeometry, createPrecipitationMaterial, createPrecipitationUniforms, createRampColumnNode, createRampTexture, createRampUvNode, createResidualHeight, createRimNode, createRiverGeometry, createRiverMaterial, createSeededRandom, createShadingRegionNode, createSightNode, createSightUniforms, createSimplexNoise, createSkyColorNode, createSkyGradientTexture, createSkyNode, createSkyState, createSkyUniforms, createSoundEffectBuffer, createSplashMaterial, createStamina, createStatueGeometries, createStoneGlowNode, createStoneLightUniforms, createStoneMaterial, createSunLight, createSunVisibilityNode, createSurfaceDetailNode, createSurvivorIndices, createTerrainFeaturesBlend, createTerrainFeaturesHeight, createTerrainMaterial, createTerrainRing, createTerrainSelection, createTerrainShapeHeight, createTerrainTileGeometry, createTileStreamer, createToneNode, createToonMaterial, createToonThresholdNode, createTreeGeometry, createUnderwaterFogState, createWaterFlowUniforms, createWaterMaterial, createWaterUniforms, createWaterfallGeometry, createWaterfallMaterial, createWetDarkeningNode, createWetSheenNode, createWindNode, createWindUniforms, fileByCell, findSkinnedMesh, getCliffBlend, getCloudAtlasColumns, getCloudSunColors, getDesaturatedColour, getGameOutlineOffset, getGaussianHillBlend, getMusicRecordingGain, getMusicRecordingRate, getOutlineDepth, getOutlineScale, getParentTerrainTileKey, getPlateauBlend, getRampColumn, getRampRow, getRampWidth, getRidgeBlend, getScreenDirection, getSegmentBounds, getShadingRegion, getSharedToonRamp, getSoundEffectBandBins, getSpectralBin, getTerrainFeatureBounds, getTerrainMorphStart, getTerrainOverlayBounds, getTerrainShapeLevel, getTerrainTileBounds, getTerrainTileColumn, getTerrainTileKey, getTerrainTileLevel, getTerrainTileRow, getToneColour, getToonThreshold, measureSegment, mergeGeometryParts, orderByViewDepth, parsePmx, parsePmxBones, parsePmxJoints, parsePmxMaterials, parsePmxMorphs, parsePmxRigidBodies, parsePmxVertices, placeCloudBand, renderGroundCapture, renderMusicSegment, resolveTerrainDraws, sampleGrassTrail, sampleGroundCapture, sampleGroundLayerField, sampleSkyState, sampleTerrainResidualFade, sampleTreeNormalField, scheduleMusicExpression, scheduleMusicNote, scheduleMusicRecording, selectMusicSample, selectRegionNode, selectTerrainTiles, setObjectFade, setObjectSurface, stepGrassTrail, synthesizeCloudLayerTextures, synthesizeSpectralNoise, toAxis, toClamped, toDeadzoned, toSceneColor, toneMapGenshin, toneMapGenshinNode, transformFourier, transformFourierGrid, updateFaceDraw, updateUnderwaterFog, writeCloudLayerTexture, writeQuadIndices, writeTerrainRingIndices, writeTerrainRingTile };
|
|
6600
|
+
export { A4_FREQUENCY, A4_PITCH, AIR_LOCOMOTION_STATES, AnchoredCascadeShadowNode, AntialiasingMode, BEND_FOAM_FULL_RADIUS_WIDTHS, BLOOM_BLUR_TEXELS, CLIMB_JUMP_STAMINA_COST, CLIMB_LOCOMOTION_STATES, CLIMB_REGRAB_SECONDS, CLIMB_STAMINA_PER_SECOND, CLIMB_START_STAMINA, COOL_RAMP_ROW_BASE, CULLING_FRUSTUM_MARGIN, CULLING_INDEX_COUNT_INDEX, CULLING_INDIRECT_ARGUMENT_COUNT, CULLING_INSTANCE_COUNT_INDEX, CULLING_MATRIX_COLUMN_COUNT, CULLING_MATRIX_ELEMENT_COUNT, CULLING_MIN_SIZE, CharacterMaterialKind, DASH_STAMINA_COST, DEFAULT_LIGHT_AREA, DEFAULT_RAMP_WIDTH, DEFAULT_SKY_GRADIENT, DEFAULT_SKY_SHAPE, DESATURATION_WEIGHTS, EMISSION_ALPHA_FLOOR, FIELD_SELECTOR, FLAT_LIGHT_MAP, FLOWER_BEND_PER_WIND, FLOWER_COLOR_ATTRIBUTE_NAME, FLOWER_MATRIX_ATTRIBUTE_NAMES, FOCUS_KEY_CODES, FOLLOW_CAMERA_ARM_STEP, FOLLOW_CAMERA_CLEARANCE, FOLLOW_CAMERA_DEFAULT_SETTINGS, FOLLOW_CAMERA_DISTANCE_PER_ZOOM_STEP, FOLLOW_CAMERA_EASE_OUT_SPEED, FOLLOW_CAMERA_FOV, FOLLOW_CAMERA_MAX_DISTANCE, FOLLOW_CAMERA_MAX_PITCH, FOLLOW_CAMERA_MIN_DISTANCE, FOLLOW_CAMERA_MIN_PITCH, FOLLOW_CAMERA_NEUTRAL_SENSITIVITY, FOLLOW_CAMERA_PIVOT_SHARE, FOLLOW_CAMERA_SLOPE_PITCH_SPEED, FREE_CAMERA_BASE_SPEED, FREE_CAMERA_CLEARANCE, FREE_CAMERA_MAX_PITCH, FREE_CAMERA_SPEED_PER_HEIGHT, GAMEPAD_BUTTONS, GAMEPAD_LOOK_RADIANS_PER_SECOND, GAMEPAD_STICK_DEADZONE, GAME_MINUTES_PER_SECOND, GAUSSIAN_REACH_WIDTHS, GENSHIN_BLOOM_INTENSITY, GENSHIN_BLOOM_SCALER, GENSHIN_BLOOM_THRESHOLD, GENSHIN_BLOOM_WEIGHTS, GENSHIN_TONE_CONTRAST, GENSHIN_TONE_EXPOSURE, GENSHIN_TONE_MAPPING, GLIDE_STAMINA_PER_SECOND, GRASS_BEND_PER_WIND, GRASS_DIP_PER_BEND, GRASS_TRAIL_BEND_SHARE, GRASS_TRAIL_EXTENT, GRASS_TRAIL_FADE_END_SHARE, GRASS_TRAIL_FADE_SECONDS, GRASS_TRAIL_FADE_START_SHARE, GRASS_TRAIL_STAMP_RADIUS, GRASS_TRAIL_TEXELS, GRASS_TRAIL_TEXEL_SIZE, GROUND_CONTACT_DISTANCE, GROUND_LOCOMOTION_STATES, GROUND_NORMAL_SPAN, GROUND_PRESS_SPEED, GameBloomNode, GamepadButton, GroundLayer, GroundLayers, HALF_LAMBERT_OFFSET, HALF_LAMBERT_SCALE, IMPOSTOR_CROSSFADE_SHARE, IMPOSTOR_RESOLUTION, IMPOSTOR_SWITCH_HEIGHTS, InputAction, InputActionBindingMap, InputActions, KEY_CODE_BACKWARD, KEY_CODE_DOWN, KEY_CODE_FORWARD, KEY_CODE_LEFT, KEY_CODE_RIGHT, KEY_CODE_UP, LEAF_SHAPE_KEPT_SHARE, LEAF_SHAPE_WIDTH, LEAST_DIVISOR, LIGHTNING_BOLT_BRIGHTNESS, LIGHTNING_BOLT_COLOR, LIGHTNING_BOLT_OPTIONS, LIGHTNING_FLASH_AMBIENT, LIGHTNING_FLASH_COLOR, LIGHTNING_FLASH_DECAY_SECONDS, LIGHTNING_FLASH_END, LIGHTNING_FLASH_PULSES, LIGHTNING_FLASH_SKY, LIGHTNING_MAX_DISTANCE, LIGHTNING_MIN_DISTANCE, LocomotionState, MAXIMUM_FACE_THRESHOLD, MAXIMUM_WINDOW_FLOOR, MAX_BYTE, MAX_STEPS_PER_FRAME, MAX_TILE_ATTEMPTS, MIDI_VELOCITY_MAX, MINIMUM_FACE_THRESHOLD, MINIMUM_OUTLINE_KNOT_SPAN, MINIMUM_RAMP_WIDTH_VERTEX, MINUTES_PER_DAY, MMD_BONE_NAME_MAP, MOUSE_BUTTONS, MOUSE_LOOK_MAX_PIXELS_PER_EVENT, MOUSE_LOOK_RADIANS_PER_PIXEL, MUSIC_EXPRESSION_WINDOW_SECONDS, MUSIC_LOOKAHEAD_SECONDS, MUSIC_NOISE_BAND_CENTRES, MUSIC_NOISE_LENGTH, MUSIC_SCHEDULE_INTERVAL_MS, MmdBoneName, MouseButton, NEUTRAL_LIGHT_MAP_GREEN, OBJECT_FADE_KEY, OBJECT_SURFACE_KEY, OUTLINE_MAIN_TEXTURE_SHARE, OUTLINE_PROJECTION_SCALE, OUTLINE_WIDTH_SCALE, ObjectSurface, POSE_AIR_STANCES, POSE_ARM_BEND_RADIANS, POSE_ARM_CHAINS, POSE_ARM_LOWER_RADIANS, POSE_BREATH_SECONDS, POSE_CHEST_BREATH_RADIANS, POSE_CROSSFADE_SECONDS, POSE_GAITS, POSE_SHOULDER_BREATH_RADIANS, PRECIPITATION_COUNT, PRECIPITATION_SETTINGS_MAP, PRECIPITATION_SWAY_SPEED, PRECIPITATION_VOLUME_HEIGHT, PRECIPITATION_VOLUME_SIZE, PmxBoneFlag, PmxJointKind, PmxMaterialFlag, PmxMorphKind, PmxPhysicsMode, PmxReader, PmxRigidBodyShape, PmxSphereMode, PmxTextEncoding, PmxWeightDeform, PrecipitationKind, QualityTier, QualityTierSettingsMap, RAMP_ROW_BASE, RAMP_ROW_STEP, REGION_FLOORS, RELEASE_TIME_CONSTANTS, RIVER_BEND_FOAM_ATTRIBUTE, RampLayout, RoofKind, SHARED_TOON_RAMP_SHADES, SOUND_EFFECT_BAND_EDGES, SOUND_EFFECT_FRAME_LENGTH, SPECTRAL_ANGULAR_BIN_COUNT, SPECTRAL_RADIAL_BIN_COUNT, SPHERE_CAST_STRIDE_SHARE, SPLASH_COUNT, SPLASH_LIFETIME, SPLASH_LIFT, SPLASH_OPACITY, SPLASH_RADIUS, SPLASH_SIZE, SPRINT_STAMINA_PER_SECOND, STAMINA_MAX, STAMINA_REFILL_DELAY_SECONDS, STAMINA_REFILL_PER_SECOND, STAMINA_REFILL_STATES, STEEP_SLIDE_SPEED, STONE_DARKENING_TOP, STONE_HARMONIC_COUNT, STONE_HEIGHT_FALLOFF, STONE_MASK_OUTPUT, STONE_RAMP_KNOT_COUNT, STONE_SHADOW_EXPONENT, SUN_REDRAW_COSINE, SURFACE_DETAIL_BAND_SIGMAS, SURFACE_OCTAVE_RESPONSES, SURFACE_OCTAVE_TEXEL_FREQUENCIES, SWIM_DASH_STAMINA_COST, SWIM_DASH_STAMINA_PER_SECOND, SWIM_STROKE_SECONDS, SWIM_STROKE_STAMINA_COST, SharedToonOutlinePassNode, StoneLightingModel, StoneNodeMaterial, TERRAIN_CELL_SIZE, TERRAIN_HEIGHT_PADDING, TERRAIN_LAYER, TERRAIN_RING_INITIAL_TILE_COUNT, TILE_INDEX_OFFSET, TILE_INDEX_SPAN, TONE_CONTRAST_OFFSET, TONE_CURVE_FLOOR, TONE_CURVE_LIFT, TOON_HIGH, TOON_LOW, TerrainFeatureKind, TerrainFeatureKindBlendMap, ToonNodeMaterial, UNIT_OUTLINE_WIDTH_KNOTS, WALK_MOVE_MAGNITUDE, WALL_PRESS_SPEED, WALL_PROBE_DISTANCE, WATER_LOCOMOTION_STATES, WEATHER_SETTINGS_MAP, WEATHER_TRANSITION_SECONDS, WET_DARKENING, WET_SHEEN_POWER, WET_SHEEN_STRENGTH, WeatherKind, addSmoothLoop, advanceGameClock, advanceStridePhase, applyLightningFlash, applyPrecipitationSettings, applySkyState, applyStoneLight, applyWeatherState, bakeImpostor, blendGridNodes, blendWeatherState, checkIsPmxSphereDrawn, checkSunTurned, checkTerrainBoundsOverlap, checkTerrainDrawsChanged, checkTerrainTileCasts, checkTransparentTexels, collectMusicNotes, collectMusicSegments, computeBloomPrefilter, computeCharacterPose, computeGradeLut, computeGrassBlade, computeGrassTrailCell, computeGrassTrailTexel, computeGrassTrailTexelIndex, computeImpostorFade, computeLeafCards, computeLightningBolt, computeLightningFlash, computeLocomotionState, computeNoiseSamples, computeOriginShift, computeOutlineDistance, computeRampValues, computeScatterPoints, computeSoundEffectSamples, computeStatueSurface, computeStoneDarkening, computeStoneHarmonics, computeStoneRampCoordinate, computeSunDirection, computeSurfaceOctaves, computeTerrainIndices, computeTerrainTile, computeTreeTubes, computeWhiteBalance, computeWindGust, createBoxesGeometry, createBuildingGeometry, createCausticsNode, createCharacterController, createCharacterMaterial, createCharacterPoseRotations, createCharacterPoser, createCharacterShadingInputs, createCharacterShadingNode, createCloudAtlasTexture, createCloudBandSprite, createCloudLayerNode, createCloudLayerProfileTexture, createCloudLayerTexture, createCloudLayerTextures, createCloudLayerUniforms, createDitherFadeNode, createFaceDraw, createFaceShadeNode, createFixedStepLoop, createFlowerGeometry, createFlowerMaterial, createFlowerTileGeometry, createFogUniforms, createFollowCamera, createFreeCamera, createFrustumVisibility, createGameOutlineMaterial, createGaussianHillsHeight, createGenshinRenderer, createGodraysLight, createGradeLutTexture, createGrassBladePoint, createGrassCell, createGrassCulling, createGrassGeometry, createGrassMaterial, createGrassTrail, createGroundCapture, createGroundLayerWeights, createGroundPaintColor, createGroundQuery, createHeightFogNode, createIdleInputState, createImpostorMaterial, createIndexedGeometry, createInput, createInstanceCulling, createInstanceMatrixBuffer, createInstanceMatrixNode, createInstancedGeometry, createInstancedMesh, createInstrumentWave, createLandmarkCollider, createLatheStackGeometry, createLeafMaterial, createLeafShapeNode, createLightUniforms, createLightningBoltGeometry, createLightningBoltMaterial, createMaterialDetailNode, createMusicPlayer, createNoiseBuffer, createObjectFadeNode, createObjectSurfaceNode, createOcclusionNode, createOutlineColorNode, createOutlineMaterial, createOutlineScaleNode, createPavingGeometry, createPavingStoneGeometry, createPlantCulling, createPmxGeometry, createPmxMesh, createPmxSkeleton, createPmxTexture, createPmxToonTexture, createPostPipeline, createPostUniforms, createPrecipitationGeometry, createPrecipitationMaterial, createPrecipitationUniforms, createRampColumnNode, createRampTexture, createRampUvNode, createResidualHeight, createRimNode, createRiverGeometry, createRiverMaterial, createSeededRandom, createShadingRegionNode, createSightNode, createSightUniforms, createSimplexNoise, createSkyColorNode, createSkyGradientTexture, createSkyNode, createSkyState, createSkyUniforms, createSoundEffectBuffer, createSplashMaterial, createStamina, createStatueGeometries, createStoneGlowNode, createStoneLightUniforms, createStoneMaterial, createSunLight, createSunVisibilityNode, createSurfaceDetailNode, createSurvivorIndices, createTerrainFeaturesBlend, createTerrainFeaturesHeight, createTerrainMaterial, createTerrainRing, createTerrainSelection, createTerrainShapeHeight, createTerrainTileGeometry, createTileStreamer, createToneNode, createToonMaterial, createToonThresholdNode, createTreeGeometry, createUnderwaterFogState, createWaterFlowUniforms, createWaterMaterial, createWaterUniforms, createWaterfallGeometry, createWaterfallMaterial, createWetDarkeningNode, createWetSheenNode, createWindNode, createWindUniforms, fileByCell, findSkinnedMesh, getCliffBlend, getCloudAtlasColumns, getCloudSunColors, getDesaturatedColour, getGameOutlineOffset, getGaussianHillBlend, getMusicRecordingGain, getMusicRecordingRate, getOutlineDepth, getOutlineScale, getParentTerrainTileKey, getPlateauBlend, getRampColumn, getRampRow, getRampWidth, getRidgeBlend, getScreenDirection, getSegmentBounds, getShadingRegion, getSharedToonRamp, getSoundEffectBandBins, getSpectralBin, getTerrainFeatureBounds, getTerrainMorphStart, getTerrainOverlayBounds, getTerrainShapeLevel, getTerrainTileBounds, getTerrainTileColumn, getTerrainTileKey, getTerrainTileLevel, getTerrainTileRow, getToneColour, getToonThreshold, measureSegment, mergeGeometryParts, orderByViewDepth, parsePmx, parsePmxBones, parsePmxJoints, parsePmxMaterials, parsePmxMorphs, parsePmxRigidBodies, parsePmxVertices, placeCloudBand, renderGroundCapture, renderMusicSegment, resolveTerrainDraws, sampleGrassTrail, sampleGroundCapture, sampleGroundLayerField, sampleSkyState, sampleTerrainResidualFade, sampleTreeNormalField, scheduleMusicExpression, scheduleMusicNote, scheduleMusicRecording, selectMusicSample, selectRegionNode, selectTerrainTiles, setObjectFade, setObjectSurface, stepGrassTrail, synthesizeCloudLayerTextures, synthesizeSpectralNoise, toAxis, toClamped, toDeadzoned, toSceneColor, toneMapGenshin, toneMapGenshinNode, transformFourier, transformFourierGrid, updateFaceDraw, updateUnderwaterFog, writeCloudLayerTexture, writeQuadIndices, writeTerrainRingIndices, writeTerrainRingTile };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "genshin-engine",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.6.0",
|
|
4
4
|
"description": "An anime-style open-world engine for the browser on three.js WebGPU — toon materials, outlines, post-processing, streamed terrain, parametric world kits and a Web Audio synthesizer, as plain TypeScript and TSL modules.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"anime",
|
|
@@ -54,15 +54,15 @@
|
|
|
54
54
|
"three-mesh-bvh": "^0.9.18"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@esposter/configuration": "4.
|
|
58
|
-
"@esposter/shared-node": "4.
|
|
57
|
+
"@esposter/configuration": "4.6.0",
|
|
58
|
+
"@esposter/shared-node": "4.6.0",
|
|
59
59
|
"@types/node": "^26.6.6",
|
|
60
60
|
"@types/three": "^0.187.0",
|
|
61
|
-
"tsdown": "^0.23.
|
|
62
|
-
"vite": "^8.3.
|
|
61
|
+
"tsdown": "^0.23.7",
|
|
62
|
+
"vite": "^8.3.6"
|
|
63
63
|
},
|
|
64
64
|
"peerDependencies": {
|
|
65
65
|
"three": "^0.187.0"
|
|
66
66
|
},
|
|
67
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "0ceea3ffbe12ca69413ea5db2d3cfad197a63cba"
|
|
68
68
|
}
|