Skip to content

Add fog support for Gaussian splat rendering#8583

Merged
mvaligursky merged 2 commits intomainfrom
mv-gsplat-fog
Apr 9, 2026
Merged

Add fog support for Gaussian splat rendering#8583
mvaligursky merged 2 commits intomainfrom
mv-gsplat-fog

Conversation

@mvaligursky
Copy link
Copy Markdown
Contributor

@mvaligursky mvaligursky commented Apr 8, 2026

Adds scene fog to both GSplat rendering paths (quad renderer and compute rasterizer), applied per-splat in linear color space.

Changes:

  • Add fog to GSplat quad renderer vertex shader via prepareOutputFromGamma, which now accepts a depth parameter and applies fog in linear space between decode and tonemapping
  • Add per-splat fog to compute GSplat rasterizer during the projCache-to-shared-memory load, with proper gamma decode/encode
  • Create shared fogMathPS WGSL chunk with pure math functions (evaluateFogFactorLinear, evaluateFogFactorExp, evaluateFogFactorExp2) reusable by both fragment/vertex and compute shaders
  • Refactor WGSL fogPS chunk to use fogMathPS and support vertex shader usage via VERTEXSHADER conditional
  • Resolve fog parameters from camera override (camera.fogParams) or scene default (scene.fog) in GSplat manager
  • Add fog type as an additive shader variant key in the compute dispatch set
  • Add GSplatParams.useFog property to allow disabling fog on splats even when the scene has fog enabled

API Changes:

  • GSplatParams.useFog (boolean, default true): When set to false, Gaussian splats ignore scene/camera fog settings

Examples:

  • Weather example: add fog density/exposure sliders, "Splat Fog" toggle, exposure and fog per preset (None/Snow/Rain), fix preset property application
  • LOD streaming example: add fog density slider

Performance:

  • No overhead when fog is disabled — shader variants without fog remain unchanged
  • Fog uniforms only added to compute uniform buffer when fog is active

Adds scene fog to both GSplat rendering paths (quad renderer and compute
rasterizer), applied per-splat in linear color space. Creates shared
fogMathPS WGSL chunk for reuse across fragment/vertex and compute shaders.

Updates weather and LOD streaming examples with fog density controls.
@mvaligursky mvaligursky merged commit 1a1b2c4 into main Apr 9, 2026
8 checks passed
@mvaligursky mvaligursky deleted the mv-gsplat-fog branch April 9, 2026 08:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant