@hello-terrain/three 0.0.0-alpha.7 → 0.0.0-alpha.9
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.cjs +372 -66
- package/dist/index.d.cts +60 -13
- package/dist/index.d.mts +60 -13
- package/dist/index.d.ts +60 -13
- package/dist/index.mjs +366 -68
- package/package.json +4 -4
package/dist/index.d.cts
CHANGED
|
@@ -404,6 +404,8 @@ interface TerrainFieldStorage {
|
|
|
404
404
|
readonly texture: StorageArrayTexture | StorageTexture;
|
|
405
405
|
uv(ix: Node, iy: Node, tileIndex: Node): Node;
|
|
406
406
|
texel(ix: Node, iy: Node, tileIndex: Node): Node;
|
|
407
|
+
/** UV-based filtered sample. `u, v` in [0, 1] tile-local space. */
|
|
408
|
+
sample(u: Node, v: Node, tileIndex: Node): Node;
|
|
407
409
|
resize(width: number, height: number, tileCount: number): void;
|
|
408
410
|
}
|
|
409
411
|
declare function ArrayTextureBackend(edgeVertexCount: number, tileCount: number, options: Required<Pick<TerrainFieldStorageOptions, "format" | "filter">>): TerrainFieldStorage;
|
|
@@ -418,6 +420,13 @@ declare function storeTerrainField(storage: TerrainFieldStorage, ix: Node, iy: N
|
|
|
418
420
|
declare function loadTerrainField(storage: TerrainFieldStorage, ix: Node, iy: Node, tileIndex: Node): Node;
|
|
419
421
|
declare function loadTerrainFieldElevation(storage: TerrainFieldStorage, ix: Node, iy: Node, tileIndex: Node): Node;
|
|
420
422
|
declare function loadTerrainFieldNormal(storage: TerrainFieldStorage, ix: Node, iy: Node, tileIndex: Node): Node;
|
|
423
|
+
/**
|
|
424
|
+
* UV-based filtered sample. `u, v` are in [0, 1] tile-local space.
|
|
425
|
+
* Respects the filter mode (nearest / linear) set on the storage.
|
|
426
|
+
*/
|
|
427
|
+
declare function sampleTerrainField(storage: TerrainFieldStorage, u: Node, v: Node, tileIndex: Node): Node;
|
|
428
|
+
declare function sampleTerrainFieldElevation(storage: TerrainFieldStorage, u: Node, v: Node, tileIndex: Node): Node;
|
|
429
|
+
declare function sampleTerrainFieldNormal(storage: TerrainFieldStorage, u: Node, v: Node, tileIndex: Node): Node;
|
|
421
430
|
declare function packTerrainFieldSample(height: Node, normalXZ: Node, extra?: Node): Node;
|
|
422
431
|
|
|
423
432
|
interface TerrainUniformsParams {
|
|
@@ -449,6 +458,41 @@ declare function createTileCompute(leafStorage: LeafStorageState, uniforms: Terr
|
|
|
449
458
|
tileVertexWorldPositionCompute: three_src_nodes_TSL_js.ShaderNodeFn<[number | Node, number | Node, number | Node]>;
|
|
450
459
|
};
|
|
451
460
|
|
|
461
|
+
interface ElevationParams {
|
|
462
|
+
worldPosition: Node$1;
|
|
463
|
+
rootSize: Node$1;
|
|
464
|
+
rootUV: Node$1;
|
|
465
|
+
tileUV: Node$1;
|
|
466
|
+
tileLevel: Node$1;
|
|
467
|
+
tileSize: Node$1;
|
|
468
|
+
tileOriginVec2: Node$1;
|
|
469
|
+
nodeIndex: Node$1;
|
|
470
|
+
}
|
|
471
|
+
type ElevationCallback = (params: ElevationParams) => Node$1;
|
|
472
|
+
|
|
473
|
+
interface GpuSpatialIndexContext {
|
|
474
|
+
data: Uint32Array<ArrayBuffer>;
|
|
475
|
+
size: number;
|
|
476
|
+
mask: number;
|
|
477
|
+
stampGen: UniformNode<number>;
|
|
478
|
+
attribute: StorageBufferAttribute;
|
|
479
|
+
node: StorageBufferNode;
|
|
480
|
+
}
|
|
481
|
+
interface TerrainSampler {
|
|
482
|
+
sampleElevation: (worldX: Node, worldZ: Node) => Node;
|
|
483
|
+
sampleNormal: (worldX: Node, worldZ: Node) => Node;
|
|
484
|
+
sampleTerrain: (worldX: Node, worldZ: Node) => Node;
|
|
485
|
+
sampleValidity: (worldX: Node, worldZ: Node) => Node;
|
|
486
|
+
evaluateElevation: (worldX: Node, worldZ: Node) => Node;
|
|
487
|
+
evaluateNormal: (worldX: Node, worldZ: Node, epsilon?: Node) => Node;
|
|
488
|
+
}
|
|
489
|
+
interface CreateTerrainSamplerParams {
|
|
490
|
+
terrainFieldStorage: TerrainFieldStorage;
|
|
491
|
+
spatialIndex: GpuSpatialIndexContext;
|
|
492
|
+
uniforms: TerrainUniformsContext;
|
|
493
|
+
elevationCallback: ElevationCallback;
|
|
494
|
+
}
|
|
495
|
+
|
|
452
496
|
interface QuadtreeConfigState {
|
|
453
497
|
state: QuadtreeState;
|
|
454
498
|
surface: Surface;
|
|
@@ -469,12 +513,15 @@ interface TerrainTasks {
|
|
|
469
513
|
surface: TaskRef<Surface>;
|
|
470
514
|
leafStorage: TaskRef<LeafStorageState>;
|
|
471
515
|
leafGpuBuffer: TaskRef<LeafGpuBufferState>;
|
|
516
|
+
gpuSpatialIndexStorage: TaskRef<GpuSpatialIndexContext>;
|
|
517
|
+
gpuSpatialIndexUpload: TaskRef<GpuSpatialIndexContext>;
|
|
472
518
|
createUniforms: TaskRef<TerrainUniformsContext>;
|
|
473
519
|
updateUniforms: TaskRef<TerrainUniformsContext>;
|
|
474
520
|
positionNode: TaskRef<ShaderCallNodeInternal>;
|
|
475
521
|
createElevationFieldContext: TaskRef<ElevationFieldContext>;
|
|
476
522
|
createTileNodes: TaskRef<ReturnType<typeof createTileCompute>>;
|
|
477
523
|
createTerrainFieldTexture: TaskRef<TerrainFieldStorage>;
|
|
524
|
+
createTerrainSampler: TaskRef<TerrainSampler>;
|
|
478
525
|
elevationFieldStage: TaskRef<ComputePipeline>;
|
|
479
526
|
terrainFieldStage: TaskRef<ComputePipeline>;
|
|
480
527
|
compileCompute: TaskRef<{
|
|
@@ -504,6 +551,9 @@ declare const tileNodesTask: _hello_terrain_work.Task<{
|
|
|
504
551
|
*/
|
|
505
552
|
declare const elevationFieldStageTask: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
506
553
|
|
|
554
|
+
declare const gpuSpatialIndexStorageTask: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
555
|
+
declare const gpuSpatialIndexUploadTask: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
556
|
+
|
|
507
557
|
/** Generates a unique instance ID per graph (cached once). */
|
|
508
558
|
declare const instanceIdTask: _hello_terrain_work.Task<`${string}-${string}-${string}-${string}-${string}`, string, unknown>;
|
|
509
559
|
|
|
@@ -520,17 +570,7 @@ declare const createTerrainFieldTextureTask: _hello_terrain_work.Task<any, strin
|
|
|
520
570
|
*/
|
|
521
571
|
declare const terrainFieldStageTask: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
522
572
|
|
|
523
|
-
|
|
524
|
-
worldPosition: Node$1;
|
|
525
|
-
rootSize: Node$1;
|
|
526
|
-
rootUV: Node$1;
|
|
527
|
-
tileUV: Node$1;
|
|
528
|
-
tileLevel: Node$1;
|
|
529
|
-
tileSize: Node$1;
|
|
530
|
-
tileOriginVec2: Node$1;
|
|
531
|
-
nodeIndex: Node$1;
|
|
532
|
-
}
|
|
533
|
-
type ElevationCallback = (params: ElevationParams) => Node$1;
|
|
573
|
+
declare const createTerrainSamplerTask: _hello_terrain_work.Task<TerrainSampler, string, unknown>;
|
|
534
574
|
|
|
535
575
|
/** Root tile size in world units. */
|
|
536
576
|
declare const rootSize: _hello_terrain_work.ParamRef<number>;
|
|
@@ -557,6 +597,8 @@ declare const maxLevel: _hello_terrain_work.ParamRef<number>;
|
|
|
557
597
|
declare const quadtreeUpdate: _hello_terrain_work.ParamRef<UpdateParams>;
|
|
558
598
|
/** Optional custom terrain surface; defaults to bounded flat surface when null. */
|
|
559
599
|
declare const surface: _hello_terrain_work.ParamRef<Surface | null>;
|
|
600
|
+
/** Terrain field texture filter mode. */
|
|
601
|
+
declare const terrainFieldFilter: _hello_terrain_work.ParamRef<"nearest" | "linear">;
|
|
560
602
|
/** Terrain elevation control function (per vertex, in gpu compute) */
|
|
561
603
|
declare const elevationFn: _hello_terrain_work.ParamRef<ElevationCallback>;
|
|
562
604
|
|
|
@@ -633,6 +675,8 @@ declare const terrainTasks: {
|
|
|
633
675
|
attribute: three_webgpu.StorageBufferAttribute;
|
|
634
676
|
node: three_webgpu.StorageBufferNode;
|
|
635
677
|
}, string, unknown>;
|
|
678
|
+
readonly gpuSpatialIndexStorage: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
679
|
+
readonly gpuSpatialIndexUpload: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
636
680
|
readonly createUniforms: _hello_terrain_work.Task<TerrainUniformsContext, string, unknown>;
|
|
637
681
|
readonly updateUniforms: _hello_terrain_work.Task<TerrainUniformsContext, string, unknown>;
|
|
638
682
|
readonly positionNode: _hello_terrain_work.Task<three_src_nodes_TSL_js.ShaderCallNodeInternal, string, unknown>;
|
|
@@ -651,6 +695,7 @@ declare const terrainTasks: {
|
|
|
651
695
|
readonly createTerrainFieldTexture: _hello_terrain_work.Task<any, string, {
|
|
652
696
|
renderer: WebGPURenderer;
|
|
653
697
|
}>;
|
|
698
|
+
readonly createTerrainSampler: _hello_terrain_work.Task<TerrainSampler, string, unknown>;
|
|
654
699
|
readonly elevationFieldStage: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
655
700
|
readonly terrainFieldStage: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
656
701
|
readonly compileCompute: _hello_terrain_work.Task<{
|
|
@@ -668,6 +713,8 @@ type ComputeDeviceLimits = {
|
|
|
668
713
|
};
|
|
669
714
|
declare function getDeviceComputeLimits(renderer: WebGPURenderer): ComputeDeviceLimits;
|
|
670
715
|
|
|
716
|
+
declare function createTerrainSampler(params: CreateTerrainSamplerParams): TerrainSampler;
|
|
717
|
+
|
|
671
718
|
/**
|
|
672
719
|
* Maps a value or node from texture space [0, 1] to vector space [-1, 1].
|
|
673
720
|
*
|
|
@@ -740,5 +787,5 @@ declare const voronoiCells: three_src_nodes_TSL_js.ShaderNodeFn<[three_tsl.Proxi
|
|
|
740
787
|
uv: Node;
|
|
741
788
|
}>]>;
|
|
742
789
|
|
|
743
|
-
export { ArrayTextureBackend, AtlasBackend, Dir, TerrainGeometry, TerrainMesh, Texture3DBackend, U32_EMPTY, allocLeafSet, allocSeamTable, beginUpdate, blendAngleCorrectedNormals, buildLeafIndex, buildSeams2to1, compileComputeTask, createComputePipelineTasks, createCubeSphereSurface, createElevationFieldContextTask, createFlatSurface, createInfiniteFlatSurface, createSpatialIndex, createState, createTerrainFieldStorage, createTerrainFieldTextureTask, createTerrainUniforms, createUniformsTask, deriveNormalZ, elevationFieldStageTask, elevationFn, elevationScale, executeComputeTask, getDeviceComputeLimits, innerTileSegments, instanceIdTask, isSkirtUV, isSkirtVertex, leafGpuBufferTask, leafStorageTask, loadTerrainField, loadTerrainFieldElevation, loadTerrainFieldNormal, maxLevel, maxNodes, origin, packTerrainFieldSample, positionNodeTask, quadtreeConfigTask, quadtreeUpdate, quadtreeUpdateTask, resetLeafSet, resetSeamTable, rootSize, skirtScale, storeTerrainField, surface, surfaceTask, terrainFieldStageTask, terrainGraph, terrainTasks, textureSpaceToVectorSpace, tileNodesTask, update, updateUniformsTask, vElevation, vGlobalVertexIndex, vectorSpaceToTextureSpace, voronoiCells };
|
|
744
|
-
export type { ComputePipeline, ComputeStageCallback, CubeSphereSurfaceConfig, ElevationCallback, ElevationFieldContext, ElevationParams, FlatSurfaceConfig, InfiniteFlatSurfaceConfig, IntNodeInput, LeafGpuBufferState, LeafSet, LeafStorageState, LodMode, QuadtreeConfig, QuadtreeConfigState, QuadtreeState, SeamTable, SpatialIndex, Surface, TerrainFieldStorage, TerrainFieldStorageBackendType, TerrainFieldStorageFormat, TerrainFieldStorageOptions, TerrainGraph, TerrainTasks, TerrainUniformsContext, TerrainUniformsParams, TileBounds, TileId, UpdateParams };
|
|
790
|
+
export { ArrayTextureBackend, AtlasBackend, Dir, TerrainGeometry, TerrainMesh, Texture3DBackend, U32_EMPTY, allocLeafSet, allocSeamTable, beginUpdate, blendAngleCorrectedNormals, buildLeafIndex, buildSeams2to1, compileComputeTask, createComputePipelineTasks, createCubeSphereSurface, createElevationFieldContextTask, createFlatSurface, createInfiniteFlatSurface, createSpatialIndex, createState, createTerrainFieldStorage, createTerrainFieldTextureTask, createTerrainSampler, createTerrainSamplerTask, createTerrainUniforms, createUniformsTask, deriveNormalZ, elevationFieldStageTask, elevationFn, elevationScale, executeComputeTask, getDeviceComputeLimits, gpuSpatialIndexStorageTask, gpuSpatialIndexUploadTask, innerTileSegments, instanceIdTask, isSkirtUV, isSkirtVertex, leafGpuBufferTask, leafStorageTask, loadTerrainField, loadTerrainFieldElevation, loadTerrainFieldNormal, maxLevel, maxNodes, origin, packTerrainFieldSample, positionNodeTask, quadtreeConfigTask, quadtreeUpdate, quadtreeUpdateTask, resetLeafSet, resetSeamTable, rootSize, sampleTerrainField, sampleTerrainFieldElevation, sampleTerrainFieldNormal, skirtScale, storeTerrainField, surface, surfaceTask, terrainFieldFilter, terrainFieldStageTask, terrainGraph, terrainTasks, textureSpaceToVectorSpace, tileNodesTask, update, updateUniformsTask, vElevation, vGlobalVertexIndex, vectorSpaceToTextureSpace, voronoiCells };
|
|
791
|
+
export type { ComputePipeline, ComputeStageCallback, CreateTerrainSamplerParams, CubeSphereSurfaceConfig, ElevationCallback, ElevationFieldContext, ElevationParams, FlatSurfaceConfig, GpuSpatialIndexContext, InfiniteFlatSurfaceConfig, IntNodeInput, LeafGpuBufferState, LeafSet, LeafStorageState, LodMode, QuadtreeConfig, QuadtreeConfigState, QuadtreeState, SeamTable, SpatialIndex, Surface, TerrainFieldStorage, TerrainFieldStorageBackendType, TerrainFieldStorageFormat, TerrainFieldStorageOptions, TerrainGraph, TerrainSampler, TerrainTasks, TerrainUniformsContext, TerrainUniformsParams, TileBounds, TileId, UpdateParams };
|
package/dist/index.d.mts
CHANGED
|
@@ -404,6 +404,8 @@ interface TerrainFieldStorage {
|
|
|
404
404
|
readonly texture: StorageArrayTexture | StorageTexture;
|
|
405
405
|
uv(ix: Node, iy: Node, tileIndex: Node): Node;
|
|
406
406
|
texel(ix: Node, iy: Node, tileIndex: Node): Node;
|
|
407
|
+
/** UV-based filtered sample. `u, v` in [0, 1] tile-local space. */
|
|
408
|
+
sample(u: Node, v: Node, tileIndex: Node): Node;
|
|
407
409
|
resize(width: number, height: number, tileCount: number): void;
|
|
408
410
|
}
|
|
409
411
|
declare function ArrayTextureBackend(edgeVertexCount: number, tileCount: number, options: Required<Pick<TerrainFieldStorageOptions, "format" | "filter">>): TerrainFieldStorage;
|
|
@@ -418,6 +420,13 @@ declare function storeTerrainField(storage: TerrainFieldStorage, ix: Node, iy: N
|
|
|
418
420
|
declare function loadTerrainField(storage: TerrainFieldStorage, ix: Node, iy: Node, tileIndex: Node): Node;
|
|
419
421
|
declare function loadTerrainFieldElevation(storage: TerrainFieldStorage, ix: Node, iy: Node, tileIndex: Node): Node;
|
|
420
422
|
declare function loadTerrainFieldNormal(storage: TerrainFieldStorage, ix: Node, iy: Node, tileIndex: Node): Node;
|
|
423
|
+
/**
|
|
424
|
+
* UV-based filtered sample. `u, v` are in [0, 1] tile-local space.
|
|
425
|
+
* Respects the filter mode (nearest / linear) set on the storage.
|
|
426
|
+
*/
|
|
427
|
+
declare function sampleTerrainField(storage: TerrainFieldStorage, u: Node, v: Node, tileIndex: Node): Node;
|
|
428
|
+
declare function sampleTerrainFieldElevation(storage: TerrainFieldStorage, u: Node, v: Node, tileIndex: Node): Node;
|
|
429
|
+
declare function sampleTerrainFieldNormal(storage: TerrainFieldStorage, u: Node, v: Node, tileIndex: Node): Node;
|
|
421
430
|
declare function packTerrainFieldSample(height: Node, normalXZ: Node, extra?: Node): Node;
|
|
422
431
|
|
|
423
432
|
interface TerrainUniformsParams {
|
|
@@ -449,6 +458,41 @@ declare function createTileCompute(leafStorage: LeafStorageState, uniforms: Terr
|
|
|
449
458
|
tileVertexWorldPositionCompute: three_src_nodes_TSL_js.ShaderNodeFn<[number | Node, number | Node, number | Node]>;
|
|
450
459
|
};
|
|
451
460
|
|
|
461
|
+
interface ElevationParams {
|
|
462
|
+
worldPosition: Node$1;
|
|
463
|
+
rootSize: Node$1;
|
|
464
|
+
rootUV: Node$1;
|
|
465
|
+
tileUV: Node$1;
|
|
466
|
+
tileLevel: Node$1;
|
|
467
|
+
tileSize: Node$1;
|
|
468
|
+
tileOriginVec2: Node$1;
|
|
469
|
+
nodeIndex: Node$1;
|
|
470
|
+
}
|
|
471
|
+
type ElevationCallback = (params: ElevationParams) => Node$1;
|
|
472
|
+
|
|
473
|
+
interface GpuSpatialIndexContext {
|
|
474
|
+
data: Uint32Array<ArrayBuffer>;
|
|
475
|
+
size: number;
|
|
476
|
+
mask: number;
|
|
477
|
+
stampGen: UniformNode<number>;
|
|
478
|
+
attribute: StorageBufferAttribute;
|
|
479
|
+
node: StorageBufferNode;
|
|
480
|
+
}
|
|
481
|
+
interface TerrainSampler {
|
|
482
|
+
sampleElevation: (worldX: Node, worldZ: Node) => Node;
|
|
483
|
+
sampleNormal: (worldX: Node, worldZ: Node) => Node;
|
|
484
|
+
sampleTerrain: (worldX: Node, worldZ: Node) => Node;
|
|
485
|
+
sampleValidity: (worldX: Node, worldZ: Node) => Node;
|
|
486
|
+
evaluateElevation: (worldX: Node, worldZ: Node) => Node;
|
|
487
|
+
evaluateNormal: (worldX: Node, worldZ: Node, epsilon?: Node) => Node;
|
|
488
|
+
}
|
|
489
|
+
interface CreateTerrainSamplerParams {
|
|
490
|
+
terrainFieldStorage: TerrainFieldStorage;
|
|
491
|
+
spatialIndex: GpuSpatialIndexContext;
|
|
492
|
+
uniforms: TerrainUniformsContext;
|
|
493
|
+
elevationCallback: ElevationCallback;
|
|
494
|
+
}
|
|
495
|
+
|
|
452
496
|
interface QuadtreeConfigState {
|
|
453
497
|
state: QuadtreeState;
|
|
454
498
|
surface: Surface;
|
|
@@ -469,12 +513,15 @@ interface TerrainTasks {
|
|
|
469
513
|
surface: TaskRef<Surface>;
|
|
470
514
|
leafStorage: TaskRef<LeafStorageState>;
|
|
471
515
|
leafGpuBuffer: TaskRef<LeafGpuBufferState>;
|
|
516
|
+
gpuSpatialIndexStorage: TaskRef<GpuSpatialIndexContext>;
|
|
517
|
+
gpuSpatialIndexUpload: TaskRef<GpuSpatialIndexContext>;
|
|
472
518
|
createUniforms: TaskRef<TerrainUniformsContext>;
|
|
473
519
|
updateUniforms: TaskRef<TerrainUniformsContext>;
|
|
474
520
|
positionNode: TaskRef<ShaderCallNodeInternal>;
|
|
475
521
|
createElevationFieldContext: TaskRef<ElevationFieldContext>;
|
|
476
522
|
createTileNodes: TaskRef<ReturnType<typeof createTileCompute>>;
|
|
477
523
|
createTerrainFieldTexture: TaskRef<TerrainFieldStorage>;
|
|
524
|
+
createTerrainSampler: TaskRef<TerrainSampler>;
|
|
478
525
|
elevationFieldStage: TaskRef<ComputePipeline>;
|
|
479
526
|
terrainFieldStage: TaskRef<ComputePipeline>;
|
|
480
527
|
compileCompute: TaskRef<{
|
|
@@ -504,6 +551,9 @@ declare const tileNodesTask: _hello_terrain_work.Task<{
|
|
|
504
551
|
*/
|
|
505
552
|
declare const elevationFieldStageTask: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
506
553
|
|
|
554
|
+
declare const gpuSpatialIndexStorageTask: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
555
|
+
declare const gpuSpatialIndexUploadTask: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
556
|
+
|
|
507
557
|
/** Generates a unique instance ID per graph (cached once). */
|
|
508
558
|
declare const instanceIdTask: _hello_terrain_work.Task<`${string}-${string}-${string}-${string}-${string}`, string, unknown>;
|
|
509
559
|
|
|
@@ -520,17 +570,7 @@ declare const createTerrainFieldTextureTask: _hello_terrain_work.Task<any, strin
|
|
|
520
570
|
*/
|
|
521
571
|
declare const terrainFieldStageTask: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
522
572
|
|
|
523
|
-
|
|
524
|
-
worldPosition: Node$1;
|
|
525
|
-
rootSize: Node$1;
|
|
526
|
-
rootUV: Node$1;
|
|
527
|
-
tileUV: Node$1;
|
|
528
|
-
tileLevel: Node$1;
|
|
529
|
-
tileSize: Node$1;
|
|
530
|
-
tileOriginVec2: Node$1;
|
|
531
|
-
nodeIndex: Node$1;
|
|
532
|
-
}
|
|
533
|
-
type ElevationCallback = (params: ElevationParams) => Node$1;
|
|
573
|
+
declare const createTerrainSamplerTask: _hello_terrain_work.Task<TerrainSampler, string, unknown>;
|
|
534
574
|
|
|
535
575
|
/** Root tile size in world units. */
|
|
536
576
|
declare const rootSize: _hello_terrain_work.ParamRef<number>;
|
|
@@ -557,6 +597,8 @@ declare const maxLevel: _hello_terrain_work.ParamRef<number>;
|
|
|
557
597
|
declare const quadtreeUpdate: _hello_terrain_work.ParamRef<UpdateParams>;
|
|
558
598
|
/** Optional custom terrain surface; defaults to bounded flat surface when null. */
|
|
559
599
|
declare const surface: _hello_terrain_work.ParamRef<Surface | null>;
|
|
600
|
+
/** Terrain field texture filter mode. */
|
|
601
|
+
declare const terrainFieldFilter: _hello_terrain_work.ParamRef<"nearest" | "linear">;
|
|
560
602
|
/** Terrain elevation control function (per vertex, in gpu compute) */
|
|
561
603
|
declare const elevationFn: _hello_terrain_work.ParamRef<ElevationCallback>;
|
|
562
604
|
|
|
@@ -633,6 +675,8 @@ declare const terrainTasks: {
|
|
|
633
675
|
attribute: three_webgpu.StorageBufferAttribute;
|
|
634
676
|
node: three_webgpu.StorageBufferNode;
|
|
635
677
|
}, string, unknown>;
|
|
678
|
+
readonly gpuSpatialIndexStorage: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
679
|
+
readonly gpuSpatialIndexUpload: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
636
680
|
readonly createUniforms: _hello_terrain_work.Task<TerrainUniformsContext, string, unknown>;
|
|
637
681
|
readonly updateUniforms: _hello_terrain_work.Task<TerrainUniformsContext, string, unknown>;
|
|
638
682
|
readonly positionNode: _hello_terrain_work.Task<three_src_nodes_TSL_js.ShaderCallNodeInternal, string, unknown>;
|
|
@@ -651,6 +695,7 @@ declare const terrainTasks: {
|
|
|
651
695
|
readonly createTerrainFieldTexture: _hello_terrain_work.Task<any, string, {
|
|
652
696
|
renderer: WebGPURenderer;
|
|
653
697
|
}>;
|
|
698
|
+
readonly createTerrainSampler: _hello_terrain_work.Task<TerrainSampler, string, unknown>;
|
|
654
699
|
readonly elevationFieldStage: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
655
700
|
readonly terrainFieldStage: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
656
701
|
readonly compileCompute: _hello_terrain_work.Task<{
|
|
@@ -668,6 +713,8 @@ type ComputeDeviceLimits = {
|
|
|
668
713
|
};
|
|
669
714
|
declare function getDeviceComputeLimits(renderer: WebGPURenderer): ComputeDeviceLimits;
|
|
670
715
|
|
|
716
|
+
declare function createTerrainSampler(params: CreateTerrainSamplerParams): TerrainSampler;
|
|
717
|
+
|
|
671
718
|
/**
|
|
672
719
|
* Maps a value or node from texture space [0, 1] to vector space [-1, 1].
|
|
673
720
|
*
|
|
@@ -740,5 +787,5 @@ declare const voronoiCells: three_src_nodes_TSL_js.ShaderNodeFn<[three_tsl.Proxi
|
|
|
740
787
|
uv: Node;
|
|
741
788
|
}>]>;
|
|
742
789
|
|
|
743
|
-
export { ArrayTextureBackend, AtlasBackend, Dir, TerrainGeometry, TerrainMesh, Texture3DBackend, U32_EMPTY, allocLeafSet, allocSeamTable, beginUpdate, blendAngleCorrectedNormals, buildLeafIndex, buildSeams2to1, compileComputeTask, createComputePipelineTasks, createCubeSphereSurface, createElevationFieldContextTask, createFlatSurface, createInfiniteFlatSurface, createSpatialIndex, createState, createTerrainFieldStorage, createTerrainFieldTextureTask, createTerrainUniforms, createUniformsTask, deriveNormalZ, elevationFieldStageTask, elevationFn, elevationScale, executeComputeTask, getDeviceComputeLimits, innerTileSegments, instanceIdTask, isSkirtUV, isSkirtVertex, leafGpuBufferTask, leafStorageTask, loadTerrainField, loadTerrainFieldElevation, loadTerrainFieldNormal, maxLevel, maxNodes, origin, packTerrainFieldSample, positionNodeTask, quadtreeConfigTask, quadtreeUpdate, quadtreeUpdateTask, resetLeafSet, resetSeamTable, rootSize, skirtScale, storeTerrainField, surface, surfaceTask, terrainFieldStageTask, terrainGraph, terrainTasks, textureSpaceToVectorSpace, tileNodesTask, update, updateUniformsTask, vElevation, vGlobalVertexIndex, vectorSpaceToTextureSpace, voronoiCells };
|
|
744
|
-
export type { ComputePipeline, ComputeStageCallback, CubeSphereSurfaceConfig, ElevationCallback, ElevationFieldContext, ElevationParams, FlatSurfaceConfig, InfiniteFlatSurfaceConfig, IntNodeInput, LeafGpuBufferState, LeafSet, LeafStorageState, LodMode, QuadtreeConfig, QuadtreeConfigState, QuadtreeState, SeamTable, SpatialIndex, Surface, TerrainFieldStorage, TerrainFieldStorageBackendType, TerrainFieldStorageFormat, TerrainFieldStorageOptions, TerrainGraph, TerrainTasks, TerrainUniformsContext, TerrainUniformsParams, TileBounds, TileId, UpdateParams };
|
|
790
|
+
export { ArrayTextureBackend, AtlasBackend, Dir, TerrainGeometry, TerrainMesh, Texture3DBackend, U32_EMPTY, allocLeafSet, allocSeamTable, beginUpdate, blendAngleCorrectedNormals, buildLeafIndex, buildSeams2to1, compileComputeTask, createComputePipelineTasks, createCubeSphereSurface, createElevationFieldContextTask, createFlatSurface, createInfiniteFlatSurface, createSpatialIndex, createState, createTerrainFieldStorage, createTerrainFieldTextureTask, createTerrainSampler, createTerrainSamplerTask, createTerrainUniforms, createUniformsTask, deriveNormalZ, elevationFieldStageTask, elevationFn, elevationScale, executeComputeTask, getDeviceComputeLimits, gpuSpatialIndexStorageTask, gpuSpatialIndexUploadTask, innerTileSegments, instanceIdTask, isSkirtUV, isSkirtVertex, leafGpuBufferTask, leafStorageTask, loadTerrainField, loadTerrainFieldElevation, loadTerrainFieldNormal, maxLevel, maxNodes, origin, packTerrainFieldSample, positionNodeTask, quadtreeConfigTask, quadtreeUpdate, quadtreeUpdateTask, resetLeafSet, resetSeamTable, rootSize, sampleTerrainField, sampleTerrainFieldElevation, sampleTerrainFieldNormal, skirtScale, storeTerrainField, surface, surfaceTask, terrainFieldFilter, terrainFieldStageTask, terrainGraph, terrainTasks, textureSpaceToVectorSpace, tileNodesTask, update, updateUniformsTask, vElevation, vGlobalVertexIndex, vectorSpaceToTextureSpace, voronoiCells };
|
|
791
|
+
export type { ComputePipeline, ComputeStageCallback, CreateTerrainSamplerParams, CubeSphereSurfaceConfig, ElevationCallback, ElevationFieldContext, ElevationParams, FlatSurfaceConfig, GpuSpatialIndexContext, InfiniteFlatSurfaceConfig, IntNodeInput, LeafGpuBufferState, LeafSet, LeafStorageState, LodMode, QuadtreeConfig, QuadtreeConfigState, QuadtreeState, SeamTable, SpatialIndex, Surface, TerrainFieldStorage, TerrainFieldStorageBackendType, TerrainFieldStorageFormat, TerrainFieldStorageOptions, TerrainGraph, TerrainSampler, TerrainTasks, TerrainUniformsContext, TerrainUniformsParams, TileBounds, TileId, UpdateParams };
|
package/dist/index.d.ts
CHANGED
|
@@ -404,6 +404,8 @@ interface TerrainFieldStorage {
|
|
|
404
404
|
readonly texture: StorageArrayTexture | StorageTexture;
|
|
405
405
|
uv(ix: Node, iy: Node, tileIndex: Node): Node;
|
|
406
406
|
texel(ix: Node, iy: Node, tileIndex: Node): Node;
|
|
407
|
+
/** UV-based filtered sample. `u, v` in [0, 1] tile-local space. */
|
|
408
|
+
sample(u: Node, v: Node, tileIndex: Node): Node;
|
|
407
409
|
resize(width: number, height: number, tileCount: number): void;
|
|
408
410
|
}
|
|
409
411
|
declare function ArrayTextureBackend(edgeVertexCount: number, tileCount: number, options: Required<Pick<TerrainFieldStorageOptions, "format" | "filter">>): TerrainFieldStorage;
|
|
@@ -418,6 +420,13 @@ declare function storeTerrainField(storage: TerrainFieldStorage, ix: Node, iy: N
|
|
|
418
420
|
declare function loadTerrainField(storage: TerrainFieldStorage, ix: Node, iy: Node, tileIndex: Node): Node;
|
|
419
421
|
declare function loadTerrainFieldElevation(storage: TerrainFieldStorage, ix: Node, iy: Node, tileIndex: Node): Node;
|
|
420
422
|
declare function loadTerrainFieldNormal(storage: TerrainFieldStorage, ix: Node, iy: Node, tileIndex: Node): Node;
|
|
423
|
+
/**
|
|
424
|
+
* UV-based filtered sample. `u, v` are in [0, 1] tile-local space.
|
|
425
|
+
* Respects the filter mode (nearest / linear) set on the storage.
|
|
426
|
+
*/
|
|
427
|
+
declare function sampleTerrainField(storage: TerrainFieldStorage, u: Node, v: Node, tileIndex: Node): Node;
|
|
428
|
+
declare function sampleTerrainFieldElevation(storage: TerrainFieldStorage, u: Node, v: Node, tileIndex: Node): Node;
|
|
429
|
+
declare function sampleTerrainFieldNormal(storage: TerrainFieldStorage, u: Node, v: Node, tileIndex: Node): Node;
|
|
421
430
|
declare function packTerrainFieldSample(height: Node, normalXZ: Node, extra?: Node): Node;
|
|
422
431
|
|
|
423
432
|
interface TerrainUniformsParams {
|
|
@@ -449,6 +458,41 @@ declare function createTileCompute(leafStorage: LeafStorageState, uniforms: Terr
|
|
|
449
458
|
tileVertexWorldPositionCompute: three_src_nodes_TSL_js.ShaderNodeFn<[number | Node, number | Node, number | Node]>;
|
|
450
459
|
};
|
|
451
460
|
|
|
461
|
+
interface ElevationParams {
|
|
462
|
+
worldPosition: Node$1;
|
|
463
|
+
rootSize: Node$1;
|
|
464
|
+
rootUV: Node$1;
|
|
465
|
+
tileUV: Node$1;
|
|
466
|
+
tileLevel: Node$1;
|
|
467
|
+
tileSize: Node$1;
|
|
468
|
+
tileOriginVec2: Node$1;
|
|
469
|
+
nodeIndex: Node$1;
|
|
470
|
+
}
|
|
471
|
+
type ElevationCallback = (params: ElevationParams) => Node$1;
|
|
472
|
+
|
|
473
|
+
interface GpuSpatialIndexContext {
|
|
474
|
+
data: Uint32Array<ArrayBuffer>;
|
|
475
|
+
size: number;
|
|
476
|
+
mask: number;
|
|
477
|
+
stampGen: UniformNode<number>;
|
|
478
|
+
attribute: StorageBufferAttribute;
|
|
479
|
+
node: StorageBufferNode;
|
|
480
|
+
}
|
|
481
|
+
interface TerrainSampler {
|
|
482
|
+
sampleElevation: (worldX: Node, worldZ: Node) => Node;
|
|
483
|
+
sampleNormal: (worldX: Node, worldZ: Node) => Node;
|
|
484
|
+
sampleTerrain: (worldX: Node, worldZ: Node) => Node;
|
|
485
|
+
sampleValidity: (worldX: Node, worldZ: Node) => Node;
|
|
486
|
+
evaluateElevation: (worldX: Node, worldZ: Node) => Node;
|
|
487
|
+
evaluateNormal: (worldX: Node, worldZ: Node, epsilon?: Node) => Node;
|
|
488
|
+
}
|
|
489
|
+
interface CreateTerrainSamplerParams {
|
|
490
|
+
terrainFieldStorage: TerrainFieldStorage;
|
|
491
|
+
spatialIndex: GpuSpatialIndexContext;
|
|
492
|
+
uniforms: TerrainUniformsContext;
|
|
493
|
+
elevationCallback: ElevationCallback;
|
|
494
|
+
}
|
|
495
|
+
|
|
452
496
|
interface QuadtreeConfigState {
|
|
453
497
|
state: QuadtreeState;
|
|
454
498
|
surface: Surface;
|
|
@@ -469,12 +513,15 @@ interface TerrainTasks {
|
|
|
469
513
|
surface: TaskRef<Surface>;
|
|
470
514
|
leafStorage: TaskRef<LeafStorageState>;
|
|
471
515
|
leafGpuBuffer: TaskRef<LeafGpuBufferState>;
|
|
516
|
+
gpuSpatialIndexStorage: TaskRef<GpuSpatialIndexContext>;
|
|
517
|
+
gpuSpatialIndexUpload: TaskRef<GpuSpatialIndexContext>;
|
|
472
518
|
createUniforms: TaskRef<TerrainUniformsContext>;
|
|
473
519
|
updateUniforms: TaskRef<TerrainUniformsContext>;
|
|
474
520
|
positionNode: TaskRef<ShaderCallNodeInternal>;
|
|
475
521
|
createElevationFieldContext: TaskRef<ElevationFieldContext>;
|
|
476
522
|
createTileNodes: TaskRef<ReturnType<typeof createTileCompute>>;
|
|
477
523
|
createTerrainFieldTexture: TaskRef<TerrainFieldStorage>;
|
|
524
|
+
createTerrainSampler: TaskRef<TerrainSampler>;
|
|
478
525
|
elevationFieldStage: TaskRef<ComputePipeline>;
|
|
479
526
|
terrainFieldStage: TaskRef<ComputePipeline>;
|
|
480
527
|
compileCompute: TaskRef<{
|
|
@@ -504,6 +551,9 @@ declare const tileNodesTask: _hello_terrain_work.Task<{
|
|
|
504
551
|
*/
|
|
505
552
|
declare const elevationFieldStageTask: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
506
553
|
|
|
554
|
+
declare const gpuSpatialIndexStorageTask: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
555
|
+
declare const gpuSpatialIndexUploadTask: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
556
|
+
|
|
507
557
|
/** Generates a unique instance ID per graph (cached once). */
|
|
508
558
|
declare const instanceIdTask: _hello_terrain_work.Task<`${string}-${string}-${string}-${string}-${string}`, string, unknown>;
|
|
509
559
|
|
|
@@ -520,17 +570,7 @@ declare const createTerrainFieldTextureTask: _hello_terrain_work.Task<any, strin
|
|
|
520
570
|
*/
|
|
521
571
|
declare const terrainFieldStageTask: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
522
572
|
|
|
523
|
-
|
|
524
|
-
worldPosition: Node$1;
|
|
525
|
-
rootSize: Node$1;
|
|
526
|
-
rootUV: Node$1;
|
|
527
|
-
tileUV: Node$1;
|
|
528
|
-
tileLevel: Node$1;
|
|
529
|
-
tileSize: Node$1;
|
|
530
|
-
tileOriginVec2: Node$1;
|
|
531
|
-
nodeIndex: Node$1;
|
|
532
|
-
}
|
|
533
|
-
type ElevationCallback = (params: ElevationParams) => Node$1;
|
|
573
|
+
declare const createTerrainSamplerTask: _hello_terrain_work.Task<TerrainSampler, string, unknown>;
|
|
534
574
|
|
|
535
575
|
/** Root tile size in world units. */
|
|
536
576
|
declare const rootSize: _hello_terrain_work.ParamRef<number>;
|
|
@@ -557,6 +597,8 @@ declare const maxLevel: _hello_terrain_work.ParamRef<number>;
|
|
|
557
597
|
declare const quadtreeUpdate: _hello_terrain_work.ParamRef<UpdateParams>;
|
|
558
598
|
/** Optional custom terrain surface; defaults to bounded flat surface when null. */
|
|
559
599
|
declare const surface: _hello_terrain_work.ParamRef<Surface | null>;
|
|
600
|
+
/** Terrain field texture filter mode. */
|
|
601
|
+
declare const terrainFieldFilter: _hello_terrain_work.ParamRef<"nearest" | "linear">;
|
|
560
602
|
/** Terrain elevation control function (per vertex, in gpu compute) */
|
|
561
603
|
declare const elevationFn: _hello_terrain_work.ParamRef<ElevationCallback>;
|
|
562
604
|
|
|
@@ -633,6 +675,8 @@ declare const terrainTasks: {
|
|
|
633
675
|
attribute: three_webgpu.StorageBufferAttribute;
|
|
634
676
|
node: three_webgpu.StorageBufferNode;
|
|
635
677
|
}, string, unknown>;
|
|
678
|
+
readonly gpuSpatialIndexStorage: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
679
|
+
readonly gpuSpatialIndexUpload: _hello_terrain_work.Task<GpuSpatialIndexContext, string, unknown>;
|
|
636
680
|
readonly createUniforms: _hello_terrain_work.Task<TerrainUniformsContext, string, unknown>;
|
|
637
681
|
readonly updateUniforms: _hello_terrain_work.Task<TerrainUniformsContext, string, unknown>;
|
|
638
682
|
readonly positionNode: _hello_terrain_work.Task<three_src_nodes_TSL_js.ShaderCallNodeInternal, string, unknown>;
|
|
@@ -651,6 +695,7 @@ declare const terrainTasks: {
|
|
|
651
695
|
readonly createTerrainFieldTexture: _hello_terrain_work.Task<any, string, {
|
|
652
696
|
renderer: WebGPURenderer;
|
|
653
697
|
}>;
|
|
698
|
+
readonly createTerrainSampler: _hello_terrain_work.Task<TerrainSampler, string, unknown>;
|
|
654
699
|
readonly elevationFieldStage: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
655
700
|
readonly terrainFieldStage: _hello_terrain_work.Task<ComputePipeline, string, unknown>;
|
|
656
701
|
readonly compileCompute: _hello_terrain_work.Task<{
|
|
@@ -668,6 +713,8 @@ type ComputeDeviceLimits = {
|
|
|
668
713
|
};
|
|
669
714
|
declare function getDeviceComputeLimits(renderer: WebGPURenderer): ComputeDeviceLimits;
|
|
670
715
|
|
|
716
|
+
declare function createTerrainSampler(params: CreateTerrainSamplerParams): TerrainSampler;
|
|
717
|
+
|
|
671
718
|
/**
|
|
672
719
|
* Maps a value or node from texture space [0, 1] to vector space [-1, 1].
|
|
673
720
|
*
|
|
@@ -740,5 +787,5 @@ declare const voronoiCells: three_src_nodes_TSL_js.ShaderNodeFn<[three_tsl.Proxi
|
|
|
740
787
|
uv: Node;
|
|
741
788
|
}>]>;
|
|
742
789
|
|
|
743
|
-
export { ArrayTextureBackend, AtlasBackend, Dir, TerrainGeometry, TerrainMesh, Texture3DBackend, U32_EMPTY, allocLeafSet, allocSeamTable, beginUpdate, blendAngleCorrectedNormals, buildLeafIndex, buildSeams2to1, compileComputeTask, createComputePipelineTasks, createCubeSphereSurface, createElevationFieldContextTask, createFlatSurface, createInfiniteFlatSurface, createSpatialIndex, createState, createTerrainFieldStorage, createTerrainFieldTextureTask, createTerrainUniforms, createUniformsTask, deriveNormalZ, elevationFieldStageTask, elevationFn, elevationScale, executeComputeTask, getDeviceComputeLimits, innerTileSegments, instanceIdTask, isSkirtUV, isSkirtVertex, leafGpuBufferTask, leafStorageTask, loadTerrainField, loadTerrainFieldElevation, loadTerrainFieldNormal, maxLevel, maxNodes, origin, packTerrainFieldSample, positionNodeTask, quadtreeConfigTask, quadtreeUpdate, quadtreeUpdateTask, resetLeafSet, resetSeamTable, rootSize, skirtScale, storeTerrainField, surface, surfaceTask, terrainFieldStageTask, terrainGraph, terrainTasks, textureSpaceToVectorSpace, tileNodesTask, update, updateUniformsTask, vElevation, vGlobalVertexIndex, vectorSpaceToTextureSpace, voronoiCells };
|
|
744
|
-
export type { ComputePipeline, ComputeStageCallback, CubeSphereSurfaceConfig, ElevationCallback, ElevationFieldContext, ElevationParams, FlatSurfaceConfig, InfiniteFlatSurfaceConfig, IntNodeInput, LeafGpuBufferState, LeafSet, LeafStorageState, LodMode, QuadtreeConfig, QuadtreeConfigState, QuadtreeState, SeamTable, SpatialIndex, Surface, TerrainFieldStorage, TerrainFieldStorageBackendType, TerrainFieldStorageFormat, TerrainFieldStorageOptions, TerrainGraph, TerrainTasks, TerrainUniformsContext, TerrainUniformsParams, TileBounds, TileId, UpdateParams };
|
|
790
|
+
export { ArrayTextureBackend, AtlasBackend, Dir, TerrainGeometry, TerrainMesh, Texture3DBackend, U32_EMPTY, allocLeafSet, allocSeamTable, beginUpdate, blendAngleCorrectedNormals, buildLeafIndex, buildSeams2to1, compileComputeTask, createComputePipelineTasks, createCubeSphereSurface, createElevationFieldContextTask, createFlatSurface, createInfiniteFlatSurface, createSpatialIndex, createState, createTerrainFieldStorage, createTerrainFieldTextureTask, createTerrainSampler, createTerrainSamplerTask, createTerrainUniforms, createUniformsTask, deriveNormalZ, elevationFieldStageTask, elevationFn, elevationScale, executeComputeTask, getDeviceComputeLimits, gpuSpatialIndexStorageTask, gpuSpatialIndexUploadTask, innerTileSegments, instanceIdTask, isSkirtUV, isSkirtVertex, leafGpuBufferTask, leafStorageTask, loadTerrainField, loadTerrainFieldElevation, loadTerrainFieldNormal, maxLevel, maxNodes, origin, packTerrainFieldSample, positionNodeTask, quadtreeConfigTask, quadtreeUpdate, quadtreeUpdateTask, resetLeafSet, resetSeamTable, rootSize, sampleTerrainField, sampleTerrainFieldElevation, sampleTerrainFieldNormal, skirtScale, storeTerrainField, surface, surfaceTask, terrainFieldFilter, terrainFieldStageTask, terrainGraph, terrainTasks, textureSpaceToVectorSpace, tileNodesTask, update, updateUniformsTask, vElevation, vGlobalVertexIndex, vectorSpaceToTextureSpace, voronoiCells };
|
|
791
|
+
export type { ComputePipeline, ComputeStageCallback, CreateTerrainSamplerParams, CubeSphereSurfaceConfig, ElevationCallback, ElevationFieldContext, ElevationParams, FlatSurfaceConfig, GpuSpatialIndexContext, InfiniteFlatSurfaceConfig, IntNodeInput, LeafGpuBufferState, LeafSet, LeafStorageState, LodMode, QuadtreeConfig, QuadtreeConfigState, QuadtreeState, SeamTable, SpatialIndex, Surface, TerrainFieldStorage, TerrainFieldStorageBackendType, TerrainFieldStorageFormat, TerrainFieldStorageOptions, TerrainGraph, TerrainSampler, TerrainTasks, TerrainUniformsContext, TerrainUniformsParams, TileBounds, TileId, UpdateParams };
|