@layoutit/polycss-core 0.2.6 → 0.2.7

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 CHANGED
@@ -82,6 +82,29 @@ interface PolyDirectionalLight {
82
82
  /** Scalar multiplier on the directional contribution. Default 1. */
83
83
  intensity?: number;
84
84
  }
85
+ /**
86
+ * Point light — radiates from a world-space position. Contributes per-face
87
+ * Lambert like a directional light, but the light direction is computed
88
+ * per polygon (face centroid → light position) rather than being global.
89
+ *
90
+ * DIRECTION-ONLY by design: there is no distance falloff (no `decay`/
91
+ * `distance`). A point light differs from a directional light only in that
92
+ * its direction varies per face. To emulate in three.js for parity, use
93
+ * `new THREE.PointLight(color, intensity, 0, 0)` (distance 0, decay 0 →
94
+ * no attenuation). Shading is flat per face (the centroid direction), so it
95
+ * approximates three.js's per-fragment gradient — exact for small faces /
96
+ * distant lights, never a CSS gradient.
97
+ */
98
+ interface PolyPointLight {
99
+ /** World-space position the light radiates from. */
100
+ position: Vec3;
101
+ /** Light tint, hex string. White by default. */
102
+ color?: string;
103
+ /** Scalar multiplier on the contribution. Default 1. */
104
+ intensity?: number;
105
+ /** When true, this light casts shadows (radial projection). Default false. */
106
+ castShadow?: boolean;
107
+ }
85
108
  /**
86
109
  * Ambient light — uniform fill that adds to every polygon regardless of
87
110
  * orientation. Mirrors three.js's `AmbientLight`. Decoupled from the
@@ -1455,6 +1478,29 @@ declare const BAKED_SHADOW_MIN_UP = 0.01;
1455
1478
  * already in unit-less form (matrix3d entries must be dimensionless).
1456
1479
  */
1457
1480
  declare function buildBakedShadowProjectionMatrix(lightDir: Vec3, groundCssZ: number): number[];
1481
+ /**
1482
+ * Radial variant of `projectCssVertexToGround` for a point light at a fixed
1483
+ * CSS-frame position. The shadow ray travels FROM the light THROUGH the
1484
+ * vertex and onto the ground plane `z = groundCssZ`, so each vertex projects
1485
+ * along its own direction (a true perspective projection) rather than the
1486
+ * single parallel direction a directional light uses.
1487
+ *
1488
+ * Returns `null` when no valid forward intersection exists — the vertex sits
1489
+ * on the light's side of the ground plane, or the ray runs parallel to it.
1490
+ * The caller drops that vertex (and any polygon that loses ≥1 vertex falls
1491
+ * back to a degenerate projection it can skip).
1492
+ *
1493
+ * `lightPos` and `cssVertex` are both in the dimensionless CSS frame (after
1494
+ * the world→CSS axis swap + tile scale), matching `projectCssVertexToGround`.
1495
+ */
1496
+ declare function projectCssVertexToGroundFromPoint(cssVertex: Vec3, lightPos: Vec3, groundCssZ: number): [number, number] | null;
1497
+ /**
1498
+ * Point-light variant of `isBakedShadowCaster`. A polygon casts shadow when
1499
+ * its outward normal points away from the light — i.e. the ray from the
1500
+ * light to the polygon centroid runs into the back of the face. `centroid`
1501
+ * and `lightPos` are CSS-frame; `normal` is the CSS-frame outward normal.
1502
+ */
1503
+ declare function isPointShadowCaster(centroid: Vec3, normal: Vec3, lightPos: Vec3): boolean;
1458
1504
  /**
1459
1505
  * Decides whether a polygon should cast a shadow given its outward
1460
1506
  * normal and the light's travel direction.
@@ -1500,6 +1546,73 @@ declare function ensureCcw2D(vertices: ReadonlyArray<readonly [number, number]>)
1500
1546
  */
1501
1547
  declare function projectCssVertexToGround(cssVertex: Vec3, lightDir: Vec3, groundCssZ: number): [number, number];
1502
1548
 
1549
+ /**
1550
+ * Build the parametric silhouette loop for a caster lit by a directional light.
1551
+ *
1552
+ * @param worldVerts Every caster vertex in the same world-CSS frame the
1553
+ * receiver projector works in (e.g. `CasterPolyItem.wv`).
1554
+ * @param lightDir Directional light vector (to-source) in that frame.
1555
+ * @param definition Max loop points. The convex hull is decimated down to this
1556
+ * by repeatedly dropping the lowest-area vertex (shape-
1557
+ * preserving). `<= 2` is treated as 3.
1558
+ * @returns A closed 3D loop (the silhouette vertices), or `null` if degenerate.
1559
+ */
1560
+ declare function computeParametricShadowSilhouette(worldVerts: ReadonlyArray<Vec3>, lightDir: Vec3, definition: number): Vec3[] | null;
1561
+
1562
+ /**
1563
+ * Build concave coverage-contour silhouette loops for a caster lit by a
1564
+ * directional light.
1565
+ *
1566
+ * @param polysWorldVerts Each caster polygon's vertices in the world-CSS frame
1567
+ * (e.g. `CasterPolyItem.wv`).
1568
+ * @param lightDir Directional light vector (to-source) in that frame.
1569
+ * @param definition Detail knob → coverage mask resolution.
1570
+ * @param layers Depth bands along the light. 1 (default) = one flat
1571
+ * outline (cross-mesh casting). >1 = depth-stratified
1572
+ * outlines for correct self-shadow.
1573
+ * @returns Closed 3D loops, or `null`.
1574
+ */
1575
+ declare function computeCoverageShadowSilhouette(polysWorldVerts: ReadonlyArray<ReadonlyArray<Vec3>>, lightDir: Vec3, definition: number, layers?: number, mode?: "contour" | "pixel"): Vec3[][] | null;
1576
+
1577
+ /** True when every caster vertex lies in a single plane (a ground quad, a
1578
+ * billboard, etc.). Such casters have no coverage volume for the parametric
1579
+ * proxy — their tilted proxy would project garbage onto a coplanar receiver —
1580
+ * so the caller routes them through the exact path instead. */
1581
+ declare function isFlatCaster(polysWv: ReadonlyArray<ReadonlyArray<Vec3>>): boolean;
1582
+ /** Rubric: a CONVEX caster self-shadows nothing. The depth-band proxy still
1583
+ * leaks a little false self-shadow on convex meshes, so detect convexity and
1584
+ * skip self-shadow for them. Capped at `maxPolys` (O(faces × verts), and large
1585
+ * meshes are essentially never convex — they early-exit on the first concave
1586
+ * face anyway). */
1587
+ declare function isConvexCaster(polysWv: ReadonlyArray<ReadonlyArray<Vec3>>, maxPolys?: number): boolean;
1588
+ interface ParametricOverrideInput {
1589
+ /** Caster polygons, each a vertex list in the world-CSS frame. */
1590
+ polysWorldVerts: ReadonlyArray<ReadonlyArray<Vec3>>;
1591
+ /** Directional light (to-source) in the world-CSS frame. */
1592
+ lightDir: Vec3;
1593
+ /** Effective definition (caller folds in per-mesh override + drag cap). */
1594
+ definition: number;
1595
+ /** True when the caster is also the receiver (self-shadow). */
1596
+ isSelf: boolean;
1597
+ /** `"pixel"` greedy-meshes the coverage into voxel rects; default contour. */
1598
+ style?: "vector" | "pixel";
1599
+ /** Shadow-casting point lights (CSS position + index in `allPointLights`). */
1600
+ pointLights?: ReadonlyArray<{
1601
+ position: Vec3;
1602
+ index: number;
1603
+ }>;
1604
+ }
1605
+ interface ParametricOverrideResult {
1606
+ /** Directional override loops, or undefined to use the exact path. */
1607
+ overrideSilhouette?: Vec3[][];
1608
+ /** Per-point-light radial override loops (indexed by point light index). */
1609
+ overridePointSilhouettes?: Array<Vec3[][] | undefined>;
1610
+ }
1611
+ /** Build the parametric override(s) for one caster — directional plus one
1612
+ * radial silhouette per shadow-casting point light. Returns empty overrides
1613
+ * (use the exact path) for flat casters and convex self-shadow. */
1614
+ declare function buildParametricCasterOverride(input: ParametricOverrideInput): ParametricOverrideResult;
1615
+
1503
1616
  type Pt = readonly [number, number];
1504
1617
  /**
1505
1618
  * Clips `subject` against the convex polygon `clip`. Both polygons are
@@ -1690,18 +1803,6 @@ declare function buildEdgeOwners(polygons: readonly Polygon[]): Map<string, Edge
1690
1803
  * TRAVELS in direction L, polygons are CCW-from-outside). Matches the
1691
1804
  * light-backface cull's sign convention. */
1692
1805
  declare function classifyFacing(planeNormals: Array<Vec3 | null>, lightDir: Vec3): boolean[];
1693
- /**
1694
- * Walk silhouette edges into closed loops. An edge is silhouette iff
1695
- * its two adjacent polygons disagree on `facing`. Boundary edges
1696
- * (polyB === null) are silhouette iff their owner is front-facing —
1697
- * the boundary is where the lit side ends.
1698
- *
1699
- * Returns one closed loop per connected silhouette cycle, each as a
1700
- * Vec3[] sequence (last vertex equals first vertex implicitly; not
1701
- * duplicated). For non-manifold or open meshes some edges may not form
1702
- * a clean cycle; those edges are dropped and the remaining cycles are
1703
- * returned best-effort.
1704
- */
1705
1806
  declare function extractSilhouetteLoops(edgeOwners: ReadonlyMap<string, EdgeOwners>, facing: boolean[]): Vec3[][];
1706
1807
 
1707
1808
  /**
@@ -1774,6 +1875,15 @@ interface ReceiverCasterInput<T = unknown> {
1774
1875
  * array is sized correctly even when atlas-plan / dedup filters drop
1775
1876
  * some polygons from `items`. */
1776
1877
  casterPolygonCount?: number;
1878
+ /** Parametric-shadow override: a precomputed world-frame silhouette loop set
1879
+ * (see `computeParametricShadowSilhouette`). When present it is projected
1880
+ * directly — skipping per-poly and silhouette extraction — so a cheap,
1881
+ * low-resolution outline casts onto every receiver via the normal pipeline. */
1882
+ overrideSilhouette?: Vec3[][];
1883
+ /** Per-point-light parametric override (indexed by the point light's index in
1884
+ * `allPointLights`). A point pass uses this RADIAL silhouette instead of the
1885
+ * directional `overrideSilhouette`; an undefined entry → exact point path. */
1886
+ overridePointSilhouettes?: Array<Vec3[][] | undefined>;
1777
1887
  }
1778
1888
  /**
1779
1889
  * Build a polygon-adjacency map: polygonIndex → set of polygonIndex that
@@ -1815,6 +1925,15 @@ interface ReceiverShadowFaceSpec<T = unknown> {
1815
1925
  * if applicable). */
1816
1926
  opacity: number;
1817
1927
  paths: Array<ReceiverShadowPath<T>>;
1928
+ /** Full-lit face color C (all lights), for the multi-light merge: callers
1929
+ * multiply C by each pass's `fill/C` factor so overlaps composite to the
1930
+ * both-blocked color. Empty string for textured receivers (per-pixel base,
1931
+ * multiply can't be uniform — those fall back to cumulative-alpha). */
1932
+ fullLitFill: string;
1933
+ /** Every clipped caster polygon for this pass in absolute face-(u,v) space
1934
+ * (NOT offset by the tight bbox). The multi-light merge re-bases these to a
1935
+ * shared per-face bbox so all lights' shadows live in one SVG. */
1936
+ facePolysUv: Array<Array<[number, number]>>;
1818
1937
  }
1819
1938
  /**
1820
1939
  * Build silhouette `edgeOwners` for a caster mesh in world-CSS frame.
@@ -1859,8 +1978,29 @@ interface ComputeReceiverShadowFacesInput<T = unknown> {
1859
1978
  receiverHasTexture: boolean;
1860
1979
  /** Per-caster items + caller id, in caller-defined order. */
1861
1980
  casters: ReceiverCasterInput<T>[];
1862
- /** Directional light vector in CSS frame. */
1981
+ /** Light direction in CSS frame, pointing TOWARD the light (to-source).
1982
+ * For a point light this is a representative direction (used only for the
1983
+ * textured-receiver opacity ratio); per-vertex directions come from
1984
+ * `lightPos`. */
1863
1985
  lightDir: Vec3;
1986
+ /** When set, the light is a point light at this CSS-frame position. The
1987
+ * shadow projection becomes radial (per-vertex direction from the light)
1988
+ * and the silhouette fast path is disabled (facing is per-polygon). */
1989
+ lightPos?: Vec3;
1990
+ /** Every point light in the scene (CSS-frame absolute positions), used to
1991
+ * compute the SHADED shadow color — a shadow shows the receiver lit by all
1992
+ * lights EXCEPT the blocked one, so a spot shadowed from one colored light
1993
+ * still shows the others' color (Three.js parity). Includes non-shadow-
1994
+ * casting lights, since they still illuminate the shadowed region. */
1995
+ allPointLights?: ReadonlyArray<{
1996
+ position: Vec3;
1997
+ color?: string;
1998
+ intensity?: number;
1999
+ }>;
2000
+ /** For a point-light pass, the index into `allPointLights` of the light
2001
+ * being shadowed (excluded from the remaining-light fill). Undefined for
2002
+ * the directional pass (which instead excludes the directional light). */
2003
+ thisPointIndex?: number;
1864
2004
  /** Camera cull rotation (rotX/rotY + receiver mesh rotation) so back-
1865
2005
  * facing receiver faces can be skipped. */
1866
2006
  cameraRot: CameraCullRotation;
@@ -1881,6 +2021,73 @@ interface ComputeReceiverShadowFacesInput<T = unknown> {
1881
2021
  * back-facing faces. Caller mounts SVGs per spec.
1882
2022
  */
1883
2023
  declare function computeReceiverShadowFaces<T = unknown>(input: ComputeReceiverShadowFacesInput<T>): ReceiverShadowFaceSpec<T>[];
2024
+ /** One path inside a merged face SVG. */
2025
+ interface MergedShadowLayer {
2026
+ /** Path data (`M…L…Z`, already offset to the SVG's tight bbox). */
2027
+ d: string;
2028
+ /** Fill color (remaining-light color for a single layer, multiply factor for
2029
+ * a merged solid layer, dark shadow color for textured). */
2030
+ fill: string;
2031
+ /** Apply `mix-blend-mode: multiply` (merged solid layers only). */
2032
+ multiply: boolean;
2033
+ /** Per-path opacity (1 for merged solid layers, which carry strength on the
2034
+ * SVG; the pass's own opacity otherwise). */
2035
+ opacity: number;
2036
+ }
2037
+ /** One receiver FACE's merged shadow, ready to mount as a single SVG. */
2038
+ interface MergedShadowFace {
2039
+ faceIndex: number;
2040
+ memberPolyIndices: number[];
2041
+ matrixCss: string;
2042
+ width: number;
2043
+ height: number;
2044
+ /** SVG-level opacity (shadow strength for merged solid faces, else 1). */
2045
+ svgOpacity: number;
2046
+ /** Full-lit base path (merged solid faces only); null otherwise. */
2047
+ baseFill: string | null;
2048
+ baseD: string | null;
2049
+ layers: MergedShadowLayer[];
2050
+ }
2051
+ /** Inputs for `computeMergedReceiverShadows` — the full light set for one
2052
+ * receiver, plus its prepared face planes and casters. */
2053
+ interface MergedReceiverShadowInput<T = unknown> {
2054
+ receiverPlanes: ReceiverFacePlane[];
2055
+ receiverPolygons: readonly Polygon[];
2056
+ receiverHasTexture: boolean;
2057
+ casters: ReceiverCasterInput<T>[];
2058
+ /** Directional light vector in CSS frame (to-source). */
2059
+ lightDir: Vec3;
2060
+ /** Run the directional pass (caller gates on a real, nonzero-intensity
2061
+ * directional light). */
2062
+ runDirectional: boolean;
2063
+ /** One pass per shadow-casting point light: CSS position + index into
2064
+ * `allPointLights`. Empty in dynamic mode (point lights are baked-only). */
2065
+ pointPasses: ReadonlyArray<{
2066
+ lightPos: Vec3;
2067
+ index: number;
2068
+ }>;
2069
+ /** All point lights (CSS positions) for the shaded shadow color; empty in
2070
+ * dynamic mode. */
2071
+ allPointLights?: ReadonlyArray<{
2072
+ position: Vec3;
2073
+ color?: string;
2074
+ intensity?: number;
2075
+ }>;
2076
+ cameraRot: CameraCullRotation;
2077
+ ambientLight?: PolyAmbientLight;
2078
+ directionalLight?: PolyDirectionalLight;
2079
+ shadow?: {
2080
+ color?: string;
2081
+ opacity?: number;
2082
+ maxExtend?: number;
2083
+ };
2084
+ }
2085
+ /**
2086
+ * Run every light pass for one receiver and merge each face's passes into a
2087
+ * single SVG descriptor. Shared by all three renderers so multi-light shadow
2088
+ * overlap is identical everywhere.
2089
+ */
2090
+ declare function computeMergedReceiverShadows<T = unknown>(input: MergedReceiverShadowInput<T>): MergedShadowFace[];
1884
2091
 
1885
2092
  /**
1886
2093
  * PolyAnimationMixer — three.js-shaped animation API for polycss.
@@ -2570,6 +2777,10 @@ interface SolidTrianglePlanOptions {
2570
2777
  tileSize?: number;
2571
2778
  layerElevation?: number;
2572
2779
  directionalLight?: PolyDirectionalLight;
2780
+ /** Point lights in MESH-LOCAL frame (renderer pre-transforms each scene
2781
+ * point light by inverse-rotate(worldPos - meshPos) so positions match
2782
+ * the local cssPoints frame). Direction-only, per-face Lambert. */
2783
+ pointLights?: PolyPointLight[];
2573
2784
  ambientLight?: PolyAmbientLight;
2574
2785
  textureLighting?: PolyTextureLightingMode;
2575
2786
  solidPaintDefaults?: SolidPaintDefaults;
@@ -2602,6 +2813,10 @@ interface ComputeTextureAtlasPlanOptions {
2602
2813
  tileSize?: number;
2603
2814
  layerElevation?: number;
2604
2815
  directionalLight?: PolyDirectionalLight;
2816
+ /** Point lights in MESH-LOCAL frame (renderer pre-transforms each scene
2817
+ * point light by inverse-rotate(worldPos - meshPos) so positions match
2818
+ * the local cssPoints frame). Direction-only, per-face Lambert. */
2819
+ pointLights?: PolyPointLight[];
2605
2820
  ambientLight?: PolyAmbientLight;
2606
2821
  /** Shared-edge set returned by {@link buildTextureEdgeRepairSets}. */
2607
2822
  textureEdgeRepairEdges?: Set<number>;
@@ -2674,9 +2889,20 @@ declare function rgbToHex({ r, g, b }: RGB): string;
2674
2889
  * (see applyTextureTint in the renderer). `directScale` is already
2675
2890
  * `intensity × max(n·L, 0)` (computed by the caller).
2676
2891
  */
2677
- declare function textureTintFactors(directScale: number, lightColor: string, ambientColor: string, ambientIntensity: number): RGBFactors;
2892
+ /**
2893
+ * One point light's per-face contribution to a polygon: its color and the
2894
+ * scalar `intensity × max(0, n·L̂)` already computed by the caller against the
2895
+ * face normal + centroid (point lights are direction-only — no distance
2896
+ * falloff). Multiple lights of different colours can't fold into one scalar,
2897
+ * so the shading functions accumulate these per channel in linear space.
2898
+ */
2899
+ interface PointLightContrib {
2900
+ color: string;
2901
+ scale: number;
2902
+ }
2903
+ declare function textureTintFactors(directScale: number, lightColor: string, ambientColor: string, ambientIntensity: number, pointContribs?: readonly PointLightContrib[]): RGBFactors;
2678
2904
  declare function tintToCss({ r, g, b }: RGBFactors): string;
2679
- declare function shadePolygon(baseColor: string, directScale: number, lightColor: string, ambientColor: string, ambientIntensity: number): string;
2905
+ declare function shadePolygon(baseColor: string, directScale: number, lightColor: string, ambientColor: string, ambientIntensity: number, pointContribs?: readonly PointLightContrib[]): string;
2680
2906
  declare function quantizeCssColor(input: string, steps: number): string;
2681
2907
  declare function rgbEqual(a: RGB | undefined, b: RGB | undefined): boolean;
2682
2908
  declare function stepRgbToward(current: RGB, target: RGB, maxStep: number): RGB;
@@ -2852,4 +3078,4 @@ declare function packTextureAtlasPlansWithScaleCore(plans: Array<TextureAtlasPla
2852
3078
  atlasCanonicalSize: number;
2853
3079
  };
2854
3080
 
2855
- export { ASYNC_RENDER_BUDGET_MS, ATLAS_CANONICAL_SIZE_AUTO_DESKTOP, ATLAS_CANONICAL_SIZE_EXPLICIT, ATLAS_MAX_SIZE, ATLAS_PADDING, AUTO_ATLAS_LOW_AREA, AUTO_ATLAS_MAX_BITMAP_SIDE, AUTO_ATLAS_MAX_DECODED_BYTES_DESKTOP, AUTO_ATLAS_MAX_DECODED_BYTES_MOBILE, AUTO_ATLAS_MEDIUM_AREA, AUTO_ATLAS_SCALE_GUARD, type ArrowPolygonsOptions, type AutoRotateConfig, type AutoRotateOption, type AxesHelperOptions, BAKED_SHADOW_MIN_UP, BAKED_SHADOW_Z_SQUASH, BASE_TILE, BASIS_EPS, BORDER_SHAPE_BLEED, BORDER_SHAPE_CANONICAL_SIZE, BORDER_SHAPE_CENTER_PERCENT, BORDER_SHAPE_POINT_EPS, type BasisHint, type BasisOptions, type BorderShapeBounds, type BorderShapeGeometry, type BoxFace, type BoxFaceOptions, type BoxPolygonsOptions, CAMERA_BACKFACE_CULL_EPS, COLOR_PARSE_CACHE_MAX, CORNER_SHAPE_DUPLICATE_EPS, CORNER_SHAPE_POINT_EPS, type CameraCullNormalGroup, type CameraCullRotation, type CameraHandle, type CameraState, type CameraStyleInput, type CasterPolyItem, type ComputeReceiverShadowFacesInput, type ComputeTextureAtlasPlanOptions, type ConePolygonsOptions, type CornerShapeCorner, type CornerShapeGeometry, type CornerShapeRadius, type CornerShapeSide, type CoverPlanarPolygonsOptions, type CullInteriorOptions, type CylinderPolygonsOptions, DECIMAL_SCALES, DEFAULT_AMBIENT_COLOR, DEFAULT_AMBIENT_INTENSITY, DEFAULT_ATLAS_CSS_DECIMALS, DEFAULT_BORDER_SHAPE_DECIMALS, DEFAULT_CAMERA_STATE, DEFAULT_LIGHT_COLOR, DEFAULT_LIGHT_DIR, DEFAULT_LIGHT_INTENSITY, DEFAULT_MATRIX_DECIMALS, DEFAULT_PROJECTION, DEFAULT_SEAM_BLEED, DEFAULT_SEAM_FACET_SPLIT_OPTIONS, DEFAULT_SEAM_OVERLAP_OPTIONS, DEFAULT_TILE, type DedupeOverlappingPolygonsOptions, type DodecahedronPolygonsOptions, type EdgeOwners, type FilterAtlasPlansEnv, type GetSolidPaintDefaultsEnv, type GltfParseOptions, type IcosahedronPolygonsOptions, type InternalSolidTrianglePlanOptions, type LoadMeshOptions, type LocalBasis, type LoopMode, LoopOnce, LoopPingPong, LoopRepeat, MAX_ATLAS_SCALE, MIN_ATLAS_SCALE, type MeshResolution, type MtlParseResult, type NormalizeResult, type ObjParseOptions, type OctahedronPolygonsOptions, type OptimizeAnimatedMeshPolygonsOptions, type OptimizeMeshParseResultOptions, type OptimizeMeshPolygonsOptions, PROJECTIVE_QUAD_BLEED, PROJECTIVE_QUAD_DENOM_EPS, PROJECTIVE_QUAD_MAX_WEIGHT_RATIO, type PackedAtlas, type PackedPage, type PackedTextureAtlasEntry, type PackingPage, type PackingShelf, type ParseAnimationClip, type ParseAnimationController, type ParseResult, type ParseStlColor, type ParseStlSolid, type ParseStlTopology, type ParsedColor, type PlanePolygonsOptions, type PolyAmbientLight, type PolyAnimationAction, type ParseAnimationClip as PolyAnimationClip, type PolyAnimationMixer, type PolyAnimationTarget, type PolyCameraProjection, type PolyCameraSceneTransformOptions, type PolyCameraSnapshot, type PolyCameraSnapshotOptions, type PolyCameraSnapshotSource, type PolyDirectionalLight, type PolyMaterial, type PolyMeshTransformInput, type PolyRenderStrategiesOption, type PolyRenderStrategy, type PolySceneTransformInput, type PolySeamBleed, type PolySeamBleedEdgeValue, type PolySeamBleedEdges, type PolyTextureAlphaMode, type PolyTextureBackend, type PolyTextureImageLighting, type PolyTextureImageRendering, type PolyTextureImageSource, type PolyTextureLeafGeometry, type PolyTextureLeafResolverOptions, type PolyTextureLeafSizing, type PolyTextureLeafSourceRect, type PolyTextureLightingMode, type PolyTexturePresentation, type PolyTextureProjection, type PolyTextureWrap, type PolyTextureWrapMode, type PolyVoxelCell, type PolyVoxelSource, type Polygon, type PolygonBasisInfo, type PolygonFace, type ProjectiveQuadCoefficients, type ProjectiveQuadGuardGlobal, type ProjectiveQuadGuardOverrides, type ProjectiveQuadGuardSettings, QUAT_IDENTITY, type Quat, RECEIVER_NORMAL_TOL, RECEIVER_OFFSET_TOL, RECEIVER_OUTLINE_EXPAND, RECT_EPS, type RGB, type RGBFactors, type ReceiverCasterInput, type ReceiverFacePlane, type ReceiverPlaneGroup, type ReceiverShadowFaceSpec, type ReceiverShadowPath, type RectBrush, type RingPolygonsOptions, type RingQuadPolygonsOptions, SEAM_LIGHT_EPS, SOLID_QUAD_CANONICAL_SIZE, SOLID_TRIANGLE_BLEED, SOLID_TRIANGLE_CANONICAL_SIZE, SOLID_TRIANGLE_LARGE_BORDER_CANONICAL_SIZE, SURFACE_DISTANCE_EPS, SURFACE_NORMAL_EPS, type SceneBbox, type SceneContext, type SceneContextBuildArgs, type SceneContextBuildResult, type ScreenToWorldOptions, type SeamBleedInsets, type SeamFacetSplitCandidate, type SeamFacetSplitCandidateReason, type SeamFacetSplitOptions, type SeamFacetSplitReport, type SeamOverlapCandidate, type SeamOverlapCandidateKind, type SeamOverlapDiagnostics, type SeamOverlapOptions, type SimplifyTriangleMeshPolygonsOptions, type SolidPaintDefaults, type SolidTextureSampleOptions, type SolidTriangleBasis, type SolidTriangleColorPlan, type SolidTriangleComputeOptions, type SolidTriangleFrame, type SolidTrianglePlan, type SolidTrianglePlanOptions, type SolidTrianglePrimitive, type SpherePolygonsOptions, type StablePlanBasis, type StableTriangleColorState, type StlParseOptions, TEXTURE_EDGE_REPAIR_ALPHA_MIN, TEXTURE_EDGE_REPAIR_RADIUS, TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN, TEXTURE_TRIANGLE_BLEED, type TetrahedronPolygonsOptions, type TextureAtlasPage, type TextureAtlasPlan, type TexturePaintMetrics, type TexturePaintMetricsOptions, type TextureQuality, type TextureTriangle, type TextureTrianglePlan, type TorusPolygonsOptions, type UvAffine, type UvSampleRect, VOXEL_CAMERA_CULL_AXIS_EPS, VOXEL_CAMERA_CULL_NORMAL_LIMIT, type Vec2, type Vec3, type VoxParseOptions, applyPackedAtlasCanonicalSize, applyPackedAtlasLeafSizing, arrowPolygons, atlasArea, atlasBitmapMaxSide, atlasCanonicalSizeForEntry, atlasCanonicalSizeForTextureQuality, atlasDecodedBytes, atlasPadding, autoAtlasBudgetFactor, autoAtlasMaxDecodedBytes, autoAtlasScale, autoAtlasScaleCap, axesHelperPolygons, bakeSolidTextureSampledPolygons, bakeSolidTextureSamples, basisAxisKey, borderShapeBoundsFromPoints, borderShapeGeometryForPlan, boxPolygons, buildBakedShadowProjectionMatrix, buildBasisHints, buildEdgeOwners, buildPolyCameraSceneTransform, buildPolyMeshTransform, buildPolySceneTransform, buildSceneContext, buildSeamBleedPolygonEdges, buildSeamBleedPolygonSet, buildSharedEdgeMap, buildTextureEdgeRepairSets, cachedParsePureColor, cameraCullNormalGroups, cameraCullNormalGroupsFromPolygons, cameraCullNormalKey, cameraCullVisibleSignature, cameraFacingDepth, capturePolyCameraSnapshot, chooseIslandXAxis, chooseLocalBasis, clampChannel, classifyFacing, clipPolygonToConvex2D, colorErrorScore, compatibleBleedSurface, compatibleSurface, computeLightVisibility, computePlanSeamBleedEdgeAmounts, computeProjectiveQuadCoefficients, computeProjectiveQuadMatrix, computeReceiverShadowFaces, computeSceneBbox, computeSeamBleedInsets, computeShapeLighting, computeSolidTriangleColorPlan, computeSolidTriangleColorPlanFromNormal, computeSolidTrianglePlan, computeSolidTrianglePlanFromCssPoints, computeSurfaceNormal, computeTextureAtlasPlan, computeTextureAtlasPlanPublic, computeTexturePaintMetrics, computeUvAffine, computeUvSampleRect, conePolygons, convexHull2D, cornerShapeDiagonal, cornerShapeGeometryForPlan, cornerShapePointSides, coverPlanarPolygons, createIsometricCamera, createPolyAnimationMixer, crossVec, cssBorderShapeForGeometry, cssBorderShapeForPlan, cssDistanceToWorld, cssPoints, cssPositionToWorld, cullInteriorPolygons, cylinderPolygons, dedupeOverlappingPolygons, dodecahedronPolygons, dominantCountKey, dotVec, ensureCcw2D, eulerXYZFromQuat, evaluateIslandAxis, expandClipPoints, expandConvexHullOutward, extractSilhouetteLoops, filterAtlasPlans, findOverlappingPolygonDuplicates, formatAffineMatrix3dColumns, formatAffineMatrix3dScalars, formatAffineMatrix3dTransformScalars, formatAtlasMatrix, formatBorderShapeElementStyle, formatBorderShapeEntryMatrix, formatBorderShapeMatrix, formatColor, formatCornerShapeElementStyle, formatCssLength, formatCssLengthPx, formatMatrix3d, formatMatrix3dValues, formatPercent, formatScaledMatrixFromPlan, formatSolidQuadEntryMatrix, formatSolidQuadMatrix, fullRectBounds, getPolygonBasisInfo, getSolidPaintDefaultsForPlansCore, groupReceiverFaceGroups, icosahedronPolygons, incrementCount, intersect2DLines, intersect2DLinesRaw, inverseRotateVec3, isAxisAlignedSurfaceNormal, isBakedShadowCaster, isBasisOptimizable, isConvexPolygonPoints, isFullRectBasis, isFullRectSolid, isProjectiveQuadPlan, isSolidTrianglePlan, isVoxelCameraCullableNormalGroups, loadMesh, makeLocalBasis, mergePolygons, meshScaleVec3, normalFacesCamera, normalizeAtlasScale, normalizeInvertMultiplier, normalizePolygons, normalizedSeamBleed, octahedronPolygons, offsetConvexPolygonPoints, offsetConvexPolygonPointsByEdgeAmounts, offsetStableTrianglePoints, offsetTrianglePoints, optimizeAnimatedMeshPolygons, optimizeMeshParseResult, optimizeMeshPolygons, packTextureAtlasPlans, packTextureAtlasPlansWithScaleCore, parseAlpha, parseColor, parseGltf, parseHex, parseHexColor, parseMtl, parseObj, parsePureColor, parseRgbColor, parseStl, parseVox, planePolygons, polyCameraTargetToCss, polyCssDistanceToWorld, polyCssPositionToWorld, polygonContainsPoint, polygonCssSurfaceNormal, polygonFaces, polygonFacesCamera, polygonSignedArea2D, prepareCasterEdgeOwners, prepareCasterPolyItems, prepareReceiverFacePlanes, projectCssVertexToGround, projectTextureTriangle, quantizeCssColor, quatFromAxisAngle, quatFromEulerXYZ, quatMultiply, repairMeshSeams, resolveAtlasLeafBox, resolveBleedRatio, resolvePolyCameraAppliedPerspectiveStyle, resolvePolyTextureImageRendering, resolvePolyTextureImageSource, resolvePolyTextureLeafGeometry, resolvePolyTexturePresentation, resolvePolyTextureUrl, resolveProjectiveQuadGuards, resolveSeamBleed, rgbEqual, rgbKey, rgbToCss, rgbToHex, ringPolygons, ringQuadPolygons, rotateVec3, rotateVec3InWrapperCssFrame, roundDecimal, safariCssProjectiveUnsupported, safePlanSeamBleedAmount, screenToWorldOnSphere, screenToWorldRay, seamBleedAmountArray, seamFacetSplitPolygons, seamFacetSplitReport, seamLightBrightness, seamOverlapDiagnostics, seamOverlapPolygons, seamOverlapReport, shadeColor, shadePolygon, sharedCornerShapeSide, signedArea2D, simplifyCornerShapePoints, simplifyTriangleMeshPolygons, spherePolygons, stableBasisFromPlan, stableTriangleMatrixDecimals, stepRgbToward, tetrahedronPolygons, textureTintFactors, tintToCss, torusPolygons, worldCssForMesh, worldDirectionToCss, worldDirectionToPolyCss, worldDirectionalLightToCss, worldDirectionalLightToPolyCss, worldDistanceToCss, worldDistanceToPolyCss, worldPositionToCss, worldPositionToPolyCss };
3081
+ export { ASYNC_RENDER_BUDGET_MS, ATLAS_CANONICAL_SIZE_AUTO_DESKTOP, ATLAS_CANONICAL_SIZE_EXPLICIT, ATLAS_MAX_SIZE, ATLAS_PADDING, AUTO_ATLAS_LOW_AREA, AUTO_ATLAS_MAX_BITMAP_SIDE, AUTO_ATLAS_MAX_DECODED_BYTES_DESKTOP, AUTO_ATLAS_MAX_DECODED_BYTES_MOBILE, AUTO_ATLAS_MEDIUM_AREA, AUTO_ATLAS_SCALE_GUARD, type ArrowPolygonsOptions, type AutoRotateConfig, type AutoRotateOption, type AxesHelperOptions, BAKED_SHADOW_MIN_UP, BAKED_SHADOW_Z_SQUASH, BASE_TILE, BASIS_EPS, BORDER_SHAPE_BLEED, BORDER_SHAPE_CANONICAL_SIZE, BORDER_SHAPE_CENTER_PERCENT, BORDER_SHAPE_POINT_EPS, type BasisHint, type BasisOptions, type BorderShapeBounds, type BorderShapeGeometry, type BoxFace, type BoxFaceOptions, type BoxPolygonsOptions, CAMERA_BACKFACE_CULL_EPS, COLOR_PARSE_CACHE_MAX, CORNER_SHAPE_DUPLICATE_EPS, CORNER_SHAPE_POINT_EPS, type CameraCullNormalGroup, type CameraCullRotation, type CameraHandle, type CameraState, type CameraStyleInput, type CasterPolyItem, type ComputeReceiverShadowFacesInput, type ComputeTextureAtlasPlanOptions, type ConePolygonsOptions, type CornerShapeCorner, type CornerShapeGeometry, type CornerShapeRadius, type CornerShapeSide, type CoverPlanarPolygonsOptions, type CullInteriorOptions, type CylinderPolygonsOptions, DECIMAL_SCALES, DEFAULT_AMBIENT_COLOR, DEFAULT_AMBIENT_INTENSITY, DEFAULT_ATLAS_CSS_DECIMALS, DEFAULT_BORDER_SHAPE_DECIMALS, DEFAULT_CAMERA_STATE, DEFAULT_LIGHT_COLOR, DEFAULT_LIGHT_DIR, DEFAULT_LIGHT_INTENSITY, DEFAULT_MATRIX_DECIMALS, DEFAULT_PROJECTION, DEFAULT_SEAM_BLEED, DEFAULT_SEAM_FACET_SPLIT_OPTIONS, DEFAULT_SEAM_OVERLAP_OPTIONS, DEFAULT_TILE, type DedupeOverlappingPolygonsOptions, type DodecahedronPolygonsOptions, type EdgeOwners, type FilterAtlasPlansEnv, type GetSolidPaintDefaultsEnv, type GltfParseOptions, type IcosahedronPolygonsOptions, type InternalSolidTrianglePlanOptions, type LoadMeshOptions, type LocalBasis, type LoopMode, LoopOnce, LoopPingPong, LoopRepeat, MAX_ATLAS_SCALE, MIN_ATLAS_SCALE, type MergedReceiverShadowInput, type MergedShadowFace, type MergedShadowLayer, type MeshResolution, type MtlParseResult, type NormalizeResult, type ObjParseOptions, type OctahedronPolygonsOptions, type OptimizeAnimatedMeshPolygonsOptions, type OptimizeMeshParseResultOptions, type OptimizeMeshPolygonsOptions, PROJECTIVE_QUAD_BLEED, PROJECTIVE_QUAD_DENOM_EPS, PROJECTIVE_QUAD_MAX_WEIGHT_RATIO, type PackedAtlas, type PackedPage, type PackedTextureAtlasEntry, type PackingPage, type PackingShelf, type ParametricOverrideInput, type ParametricOverrideResult, type ParseAnimationClip, type ParseAnimationController, type ParseResult, type ParseStlColor, type ParseStlSolid, type ParseStlTopology, type ParsedColor, type PlanePolygonsOptions, type PolyAmbientLight, type PolyAnimationAction, type ParseAnimationClip as PolyAnimationClip, type PolyAnimationMixer, type PolyAnimationTarget, type PolyCameraProjection, type PolyCameraSceneTransformOptions, type PolyCameraSnapshot, type PolyCameraSnapshotOptions, type PolyCameraSnapshotSource, type PolyDirectionalLight, type PolyMaterial, type PolyMeshTransformInput, type PolyPointLight, type PolyRenderStrategiesOption, type PolyRenderStrategy, type PolySceneTransformInput, type PolySeamBleed, type PolySeamBleedEdgeValue, type PolySeamBleedEdges, type PolyTextureAlphaMode, type PolyTextureBackend, type PolyTextureImageLighting, type PolyTextureImageRendering, type PolyTextureImageSource, type PolyTextureLeafGeometry, type PolyTextureLeafResolverOptions, type PolyTextureLeafSizing, type PolyTextureLeafSourceRect, type PolyTextureLightingMode, type PolyTexturePresentation, type PolyTextureProjection, type PolyTextureWrap, type PolyTextureWrapMode, type PolyVoxelCell, type PolyVoxelSource, type Polygon, type PolygonBasisInfo, type PolygonFace, type ProjectiveQuadCoefficients, type ProjectiveQuadGuardGlobal, type ProjectiveQuadGuardOverrides, type ProjectiveQuadGuardSettings, QUAT_IDENTITY, type Quat, RECEIVER_NORMAL_TOL, RECEIVER_OFFSET_TOL, RECEIVER_OUTLINE_EXPAND, RECT_EPS, type RGB, type RGBFactors, type ReceiverCasterInput, type ReceiverFacePlane, type ReceiverPlaneGroup, type ReceiverShadowFaceSpec, type ReceiverShadowPath, type RectBrush, type RingPolygonsOptions, type RingQuadPolygonsOptions, SEAM_LIGHT_EPS, SOLID_QUAD_CANONICAL_SIZE, SOLID_TRIANGLE_BLEED, SOLID_TRIANGLE_CANONICAL_SIZE, SOLID_TRIANGLE_LARGE_BORDER_CANONICAL_SIZE, SURFACE_DISTANCE_EPS, SURFACE_NORMAL_EPS, type SceneBbox, type SceneContext, type SceneContextBuildArgs, type SceneContextBuildResult, type ScreenToWorldOptions, type SeamBleedInsets, type SeamFacetSplitCandidate, type SeamFacetSplitCandidateReason, type SeamFacetSplitOptions, type SeamFacetSplitReport, type SeamOverlapCandidate, type SeamOverlapCandidateKind, type SeamOverlapDiagnostics, type SeamOverlapOptions, type SimplifyTriangleMeshPolygonsOptions, type SolidPaintDefaults, type SolidTextureSampleOptions, type SolidTriangleBasis, type SolidTriangleColorPlan, type SolidTriangleComputeOptions, type SolidTriangleFrame, type SolidTrianglePlan, type SolidTrianglePlanOptions, type SolidTrianglePrimitive, type SpherePolygonsOptions, type StablePlanBasis, type StableTriangleColorState, type StlParseOptions, TEXTURE_EDGE_REPAIR_ALPHA_MIN, TEXTURE_EDGE_REPAIR_RADIUS, TEXTURE_EDGE_REPAIR_SOURCE_ALPHA_MIN, TEXTURE_TRIANGLE_BLEED, type TetrahedronPolygonsOptions, type TextureAtlasPage, type TextureAtlasPlan, type TexturePaintMetrics, type TexturePaintMetricsOptions, type TextureQuality, type TextureTriangle, type TextureTrianglePlan, type TorusPolygonsOptions, type UvAffine, type UvSampleRect, VOXEL_CAMERA_CULL_AXIS_EPS, VOXEL_CAMERA_CULL_NORMAL_LIMIT, type Vec2, type Vec3, type VoxParseOptions, applyPackedAtlasCanonicalSize, applyPackedAtlasLeafSizing, arrowPolygons, atlasArea, atlasBitmapMaxSide, atlasCanonicalSizeForEntry, atlasCanonicalSizeForTextureQuality, atlasDecodedBytes, atlasPadding, autoAtlasBudgetFactor, autoAtlasMaxDecodedBytes, autoAtlasScale, autoAtlasScaleCap, axesHelperPolygons, bakeSolidTextureSampledPolygons, bakeSolidTextureSamples, basisAxisKey, borderShapeBoundsFromPoints, borderShapeGeometryForPlan, boxPolygons, buildBakedShadowProjectionMatrix, buildBasisHints, buildEdgeOwners, buildParametricCasterOverride, buildPolyCameraSceneTransform, buildPolyMeshTransform, buildPolySceneTransform, buildSceneContext, buildSeamBleedPolygonEdges, buildSeamBleedPolygonSet, buildSharedEdgeMap, buildTextureEdgeRepairSets, cachedParsePureColor, cameraCullNormalGroups, cameraCullNormalGroupsFromPolygons, cameraCullNormalKey, cameraCullVisibleSignature, cameraFacingDepth, capturePolyCameraSnapshot, chooseIslandXAxis, chooseLocalBasis, clampChannel, classifyFacing, clipPolygonToConvex2D, colorErrorScore, compatibleBleedSurface, compatibleSurface, computeCoverageShadowSilhouette, computeLightVisibility, computeMergedReceiverShadows, computeParametricShadowSilhouette, computePlanSeamBleedEdgeAmounts, computeProjectiveQuadCoefficients, computeProjectiveQuadMatrix, computeReceiverShadowFaces, computeSceneBbox, computeSeamBleedInsets, computeShapeLighting, computeSolidTriangleColorPlan, computeSolidTriangleColorPlanFromNormal, computeSolidTrianglePlan, computeSolidTrianglePlanFromCssPoints, computeSurfaceNormal, computeTextureAtlasPlan, computeTextureAtlasPlanPublic, computeTexturePaintMetrics, computeUvAffine, computeUvSampleRect, conePolygons, convexHull2D, cornerShapeDiagonal, cornerShapeGeometryForPlan, cornerShapePointSides, coverPlanarPolygons, createIsometricCamera, createPolyAnimationMixer, crossVec, cssBorderShapeForGeometry, cssBorderShapeForPlan, cssDistanceToWorld, cssPoints, cssPositionToWorld, cullInteriorPolygons, cylinderPolygons, dedupeOverlappingPolygons, dodecahedronPolygons, dominantCountKey, dotVec, ensureCcw2D, eulerXYZFromQuat, evaluateIslandAxis, expandClipPoints, expandConvexHullOutward, extractSilhouetteLoops, filterAtlasPlans, findOverlappingPolygonDuplicates, formatAffineMatrix3dColumns, formatAffineMatrix3dScalars, formatAffineMatrix3dTransformScalars, formatAtlasMatrix, formatBorderShapeElementStyle, formatBorderShapeEntryMatrix, formatBorderShapeMatrix, formatColor, formatCornerShapeElementStyle, formatCssLength, formatCssLengthPx, formatMatrix3d, formatMatrix3dValues, formatPercent, formatScaledMatrixFromPlan, formatSolidQuadEntryMatrix, formatSolidQuadMatrix, fullRectBounds, getPolygonBasisInfo, getSolidPaintDefaultsForPlansCore, groupReceiverFaceGroups, icosahedronPolygons, incrementCount, intersect2DLines, intersect2DLinesRaw, inverseRotateVec3, isAxisAlignedSurfaceNormal, isBakedShadowCaster, isBasisOptimizable, isConvexCaster, isConvexPolygonPoints, isFlatCaster, isFullRectBasis, isFullRectSolid, isPointShadowCaster, isProjectiveQuadPlan, isSolidTrianglePlan, isVoxelCameraCullableNormalGroups, loadMesh, makeLocalBasis, mergePolygons, meshScaleVec3, normalFacesCamera, normalizeAtlasScale, normalizeInvertMultiplier, normalizePolygons, normalizedSeamBleed, octahedronPolygons, offsetConvexPolygonPoints, offsetConvexPolygonPointsByEdgeAmounts, offsetStableTrianglePoints, offsetTrianglePoints, optimizeAnimatedMeshPolygons, optimizeMeshParseResult, optimizeMeshPolygons, packTextureAtlasPlans, packTextureAtlasPlansWithScaleCore, parseAlpha, parseColor, parseGltf, parseHex, parseHexColor, parseMtl, parseObj, parsePureColor, parseRgbColor, parseStl, parseVox, planePolygons, polyCameraTargetToCss, polyCssDistanceToWorld, polyCssPositionToWorld, polygonContainsPoint, polygonCssSurfaceNormal, polygonFaces, polygonFacesCamera, polygonSignedArea2D, prepareCasterEdgeOwners, prepareCasterPolyItems, prepareReceiverFacePlanes, projectCssVertexToGround, projectCssVertexToGroundFromPoint, projectTextureTriangle, quantizeCssColor, quatFromAxisAngle, quatFromEulerXYZ, quatMultiply, repairMeshSeams, resolveAtlasLeafBox, resolveBleedRatio, resolvePolyCameraAppliedPerspectiveStyle, resolvePolyTextureImageRendering, resolvePolyTextureImageSource, resolvePolyTextureLeafGeometry, resolvePolyTexturePresentation, resolvePolyTextureUrl, resolveProjectiveQuadGuards, resolveSeamBleed, rgbEqual, rgbKey, rgbToCss, rgbToHex, ringPolygons, ringQuadPolygons, rotateVec3, rotateVec3InWrapperCssFrame, roundDecimal, safariCssProjectiveUnsupported, safePlanSeamBleedAmount, screenToWorldOnSphere, screenToWorldRay, seamBleedAmountArray, seamFacetSplitPolygons, seamFacetSplitReport, seamLightBrightness, seamOverlapDiagnostics, seamOverlapPolygons, seamOverlapReport, shadeColor, shadePolygon, sharedCornerShapeSide, signedArea2D, simplifyCornerShapePoints, simplifyTriangleMeshPolygons, spherePolygons, stableBasisFromPlan, stableTriangleMatrixDecimals, stepRgbToward, tetrahedronPolygons, textureTintFactors, tintToCss, torusPolygons, worldCssForMesh, worldDirectionToCss, worldDirectionToPolyCss, worldDirectionalLightToCss, worldDirectionalLightToPolyCss, worldDistanceToCss, worldDistanceToPolyCss, worldPositionToCss, worldPositionToPolyCss };