feat(Gsplat): IBL shadows support for Gaussian Splats#18331
feat(Gsplat): IBL shadows support for Gaussian Splats#18331RaananW merged 29 commits intoBabylonJS:masterfrom
Conversation
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Please make sure to label your PR with "bug", "new feature" or "breaking change" label(s). |
|
Snapshot stored with reference name: Test environment: To test a playground add it to the URL, for example: https://snapshots-cvgtc2eugrd3cgfd.z01.azurefd.net/refs/pull/18331/merge/index.html#WGZLGJ#4600 Links to test your changes to core in the published versions of the Babylon tools (does not contain changes you made to the tools themselves): https://playground.babylonjs.com/?snapshot=refs/pull/18331/merge To test the snapshot in the playground with a playground ID add it after the snapshot query string: https://playground.babylonjs.com/?snapshot=refs/pull/18331/merge#BCU1XR#0 If you made changes to the sandbox or playground in this PR, additional comments will be generated soon containing links to the dev versions of those tools. |
|
WebGL2 visualization test reporter: |
|
Visualization tests for WebGPU |
Summary
This PR extends the IBL shadow voxelizer to support
GaussianSplattingMeshon WebGL and WebGPU.Splats are rasterized as quads; edge-on quads produce no fragments, so they can’t be voxelized like triangle meshes in one pass. Splats are drawn three times (one per world axis) so each splat is face-on from at least one direction.
computeVoxelSplatWorldPos(shared GLSL/WGSL) orients each quad from the current view using splat rotation/scale data.Opt-in memory: voxelization needs extra rotation/scale textures. Set
needsRotationScaleTextures = truewhen loading splats if you want to enable this GSplat IBL shadow feature (playground #DAID4Q). We'll log an error and early exit if neitherkeepInRam = truenorneedsRotationScaleTextures = trueis set when enabling the IBL shadow and adding the GSplat as a caster.Changes (high level)
gaussianSplattingVoxelvertex/fragment (GLSL + WGSL); WGSL targetstexture_storage_3d.gaussianSplattinginclude addscomputeVoxelSplatWorldPosand struct fields behindIS_FOR_VOXELIZATION.GaussianSplattingMaterial.makeVoxelRenderingMaterial(); mesh/baseneedsRotationScaleTextures;SPLATLoadingOptions.needsRotationScaleTexturesfor load-time allocation.iblShadowsVoxelRenderercustom render path + shared tri-axis view matrices;iblShadowsRenderPipelinetoggles the flag when splat casters are added/removed.