mirror of
https://github.com/storytold/spark.git
synced 2026-10-11 21:40:48 +00:00
f60c2b0cf9
* Externalized SparkRenderer.maxPixelRadius and .minAlpha settings. Added to documentation. Added to examples/editor under Debug folder, moved sort32 there. * Added SplatEncoding concept, applied individually to SparkRenderer (rgbMin/Max, lnScaleMinMax), SplatMesh (additionally sh1Min/Max, sh2, sh3). Updated examples/editor to control settings via gui. Updated all related code to pipe along settings where needed. Added SparkRenderer.premultipliedAlpha to control blend mode and enable hyper-saturated color contributions by default. * Fix SplatLoader not passing along encoding. Complete renaming to splat encoding.
39 lines
1.7 KiB
TypeScript
39 lines
1.7 KiB
TypeScript
// LN_SCALE_MIN..LN_SCALE_MAX define the internal scale range of for Gsplats,
|
|
// covering approx 0.0001..8000 in range with discrete steps 7% apart.
|
|
// The value "0" is reserved for truly flat scales, indicating a 2DGS.
|
|
// If these values are changed, the corresponding values in splatDefines.glsl
|
|
// must also be updated to match.
|
|
|
|
export const LN_SCALE_MIN = -12.0;
|
|
export const LN_SCALE_MAX = 9.0;
|
|
export const SCALE_MIN = Math.exp(LN_SCALE_MIN);
|
|
export const SCALE_MAX = Math.exp(LN_SCALE_MAX);
|
|
|
|
export const LN_SCALE_ZERO = -30.0;
|
|
export const SCALE_ZERO = Math.exp(LN_SCALE_ZERO);
|
|
|
|
// Gsplats are stored in textures that are 2^11 x 2^11 x up to 2^11
|
|
// Most WebGL2 implementations support 2D textures up to 2^12 x 2^12 (max 16M Gsplats)
|
|
// 2D array textures and 3D textures up to 2^11 x 2^11 x 2^11 (max 8G Gsplats),
|
|
// so we use 2D array textures for our representation for higher limits.
|
|
|
|
export const SPLAT_TEX_WIDTH_BITS = 11;
|
|
export const SPLAT_TEX_HEIGHT_BITS = 11;
|
|
export const SPLAT_TEX_DEPTH_BITS = 11;
|
|
export const SPLAT_TEX_LAYER_BITS =
|
|
SPLAT_TEX_WIDTH_BITS + SPLAT_TEX_HEIGHT_BITS;
|
|
|
|
export const SPLAT_TEX_WIDTH = 1 << SPLAT_TEX_WIDTH_BITS; // 2048
|
|
export const SPLAT_TEX_HEIGHT = 1 << SPLAT_TEX_HEIGHT_BITS; // 2048
|
|
export const SPLAT_TEX_DEPTH = 1 << SPLAT_TEX_DEPTH_BITS; // 2048
|
|
export const SPLAT_TEX_MIN_HEIGHT = 1;
|
|
|
|
export const SPLAT_TEX_WIDTH_MASK = SPLAT_TEX_WIDTH - 1;
|
|
export const SPLAT_TEX_HEIGHT_MASK = SPLAT_TEX_HEIGHT - 1;
|
|
export const SPLAT_TEX_DEPTH_MASK = SPLAT_TEX_DEPTH - 1;
|
|
|
|
// Enable/disable Gsplat sorting via Rust WASM code. In testing the sorting
|
|
// time between pure JS and WASM are minimal and don't make a big difference.
|
|
|
|
export const WASM_SPLAT_SORT = true;
|