Params#

Params are plain values that tune the projection and the draw: how far each Gaussian is drawn, blur, culling, depth of field, and the CPU sort's guard band. They are copied into uniforms before each dispatch and draw, so changing one compiles nothing and can happen every frame.

Code: src/render/splatParams.ts.

// Every splat this renderer draws
splatRenderer.params.maxStdDev = 3;
// The default for every object
splatRenderer.objectParams.blurAmount = 0.1;
// One viewpoint
splatRenderer.viewFor(thumbCamera, { objectParams: { minPixelRadius: 1 } });
// One object
const crisp = SplatCollection.arrays(splats, { params: { blurAmount: 0 } });

Two groups#

The renderer's params and objectParams are complete objects, changed in place. A view's params and objectParams and an object's params are partial: the fields they set override the next level, and unset fields fall back to it.

All params#

ParamGroupDefaultWhat it does
maxStdDevview√8 ≈ 2.83how far each Gaussian is drawn, in standard deviations: the quad's extent
minAlphaview0.5 / 255fragments, and whole splats, below this alpha are dropped
falloffview11: Gaussian falloff; 0: flat discs
lodInflateobjecttrueLoD opacities above 1 (merged LoD splats) grow the splat instead of its opacity
blurAmountobject0.3anti-aliasing blur, in pixel area units, with opacity compensation (a splat blurred wider gets fainter)
preBlurAmountobject0blur in pixel area units, without opacity compensation
clipXYobject1.4splats whose center is farther outside the frustum than this (in NDC) are culled
minPixelRadiusobject0splats smaller than this on screen (in pixels, along both axes) are culled
maxPixelRadiusobject512the largest on-screen radius, in pixels
minContributionobject0ewa only: splats whose drawn weight (opacity × the 2D Gaussian's area in pixels, 2π √det) is below this are culled; 0 keeps them all
focalDistanceobject0depth of field: the distance to the focal plane
apertureTanobject0depth of field: the tangent of half the aperture angle. Depth of field is off while either is 0
sortGuardobject0CPU sort only: splats farther outside the head's view than this (in NDC, plus each splat's extent) get the invalid sort key, so the sort and the draw skip them; 0 keeps them all (Sorting)
maxShDegreeobject4the highest spherical-harmonics band drawn (0 to 4), up to the generator's degree; 0 draws base colors only (Spherical harmonics)

Notes on each#

Gotchas#

Source: docs/params.md