Skip to content

Commit 0d49d54

Browse files
mvaligurskyMartin Valigursky
andauthored
Refactor gsplat shader chunks for tree-shaking (#8115)
* Refactor gsplat shader chunks for tree-shaking * lint --------- Co-authored-by: Martin Valigursky <[email protected]>
1 parent 23e9538 commit 0d49d54

File tree

5 files changed

+106
-92
lines changed

5 files changed

+106
-92
lines changed

src/framework/components/gsplat/system.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ import { ComponentSystem } from '../system.js';
66
import { GSplatComponent } from './component.js';
77
import { GSplatComponentData } from './data.js';
88
import { GSplatAssetLoader } from './gsplat-asset-loader.js';
9+
import { gsplatChunksGLSL } from '../../../scene/shader-lib/glsl/collections/gsplat-chunks-glsl.js';
10+
import { gsplatChunksWGSL } from '../../../scene/shader-lib/wgsl/collections/gsplat-chunks-wgsl.js';
11+
import { SHADERLANGUAGE_GLSL, SHADERLANGUAGE_WGSL } from '../../../platform/graphics/constants.js';
12+
import { ShaderChunks } from '../../../scene/shader-lib/shader-chunks.js';
913

1014
/**
1115
* @import { AppBase } from '../../app-base.js'
@@ -73,6 +77,10 @@ class GSplatComponentSystem extends ComponentSystem {
7377
const gsplatAssetLoader = new GSplatAssetLoader(app.assets);
7478
app.renderer.gsplatDirector = new GSplatDirector(app.graphicsDevice, app.renderer, app.scene, gsplatAssetLoader, this);
7579

80+
// register gsplat shader chunks
81+
ShaderChunks.get(app.graphicsDevice, SHADERLANGUAGE_GLSL).add(gsplatChunksGLSL);
82+
ShaderChunks.get(app.graphicsDevice, SHADERLANGUAGE_WGSL).add(gsplatChunksWGSL);
83+
7684
this.on('beforeremove', this.onRemove, this);
7785
}
7886

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import gsplatCenterVS from '../chunks/gsplat/vert/gsplatCenter.js';
2+
import gsplatColorVS from '../chunks/gsplat/vert/gsplatColor.js';
3+
import gsplatCommonVS from '../chunks/gsplat/vert/gsplatCommon.js';
4+
import gsplatCompressedDataVS from '../chunks/gsplat/vert/gsplatCompressedData.js';
5+
import gsplatCompressedSHVS from '../chunks/gsplat/vert/gsplatCompressedSH.js';
6+
import gsplatCustomizeVS from '../chunks/gsplat/vert/gsplatCustomize.js';
7+
import gsplatEvalSHVS from '../chunks/gsplat/vert/gsplatEvalSH.js';
8+
import gsplatHelpersVS from '../chunks/gsplat/vert/gsplatHelpers.js';
9+
import gsplatQuatToMat3VS from '../chunks/gsplat/vert/gsplatQuatToMat3.js';
10+
import gsplatSogsColorVS from '../chunks/gsplat/vert/gsplatSogsColor.js';
11+
import gsplatSogsDataVS from '../chunks/gsplat/vert/gsplatSogsData.js';
12+
import gsplatSogsSHVS from '../chunks/gsplat/vert/gsplatSogsSH.js';
13+
import gsplatSourceFormatVS from '../chunks/gsplat/vert/gsplatSourceFormat.js';
14+
import gsplatStructsVS from '../chunks/gsplat/vert/gsplatStructs.js';
15+
import gsplatCornerVS from '../chunks/gsplat/vert/gsplatCorner.js';
16+
import gsplatDataVS from '../chunks/gsplat/vert/gsplatData.js';
17+
import gsplatOutputVS from '../chunks/gsplat/vert/gsplatOutput.js';
18+
import gsplatPS from '../chunks/gsplat/frag/gsplat.js';
19+
import gsplatSHVS from '../chunks/gsplat/vert/gsplatSH.js';
20+
import gsplatSourceVS from '../chunks/gsplat/vert/gsplatSource.js';
21+
import gsplatVS from '../chunks/gsplat/vert/gsplat.js';
22+
import gsplatWorkBufferVS from '../chunks/gsplat/vert/gsplatWorkBuffer.js';
23+
import gsplatPackingPS from '../chunks/gsplat/frag/gsplatPacking.js';
24+
25+
export const gsplatChunksGLSL = {
26+
gsplatCenterVS,
27+
gsplatCornerVS,
28+
gsplatColorVS,
29+
gsplatCommonVS,
30+
gsplatCompressedDataVS,
31+
gsplatCompressedSHVS,
32+
gsplatCustomizeVS,
33+
gsplatEvalSHVS,
34+
gsplatHelpersVS,
35+
gsplatQuatToMat3VS,
36+
gsplatSogsColorVS,
37+
gsplatSogsDataVS,
38+
gsplatSogsSHVS,
39+
gsplatSourceFormatVS,
40+
gsplatStructsVS,
41+
gsplatDataVS,
42+
gsplatOutputVS,
43+
gsplatPS,
44+
gsplatSHVS,
45+
gsplatSourceVS,
46+
gsplatVS,
47+
gsplatWorkBufferVS,
48+
gsplatPackingPS
49+
};

src/scene/shader-lib/glsl/collections/shader-chunks-glsl.js

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -45,29 +45,6 @@ import gammaPS from '../chunks/common/frag/gamma.js';
4545
import gles3PS from '../../../../platform/graphics/shader-chunks/frag/gles3.js';
4646
import gles3VS from '../../../../platform/graphics/shader-chunks/vert/gles3.js';
4747
import glossPS from '../chunks/standard/frag/gloss.js';
48-
import gsplatCenterVS from '../chunks/gsplat/vert/gsplatCenter.js';
49-
import gsplatColorVS from '../chunks/gsplat/vert/gsplatColor.js';
50-
import gsplatCommonVS from '../chunks/gsplat/vert/gsplatCommon.js';
51-
import gsplatCompressedDataVS from '../chunks/gsplat/vert/gsplatCompressedData.js';
52-
import gsplatCompressedSHVS from '../chunks/gsplat/vert/gsplatCompressedSH.js';
53-
import gsplatCustomizeVS from '../chunks/gsplat/vert/gsplatCustomize.js';
54-
import gsplatEvalSHVS from '../chunks/gsplat/vert/gsplatEvalSH.js';
55-
import gsplatHelpersVS from '../chunks/gsplat/vert/gsplatHelpers.js';
56-
import gsplatQuatToMat3VS from '../chunks/gsplat/vert/gsplatQuatToMat3.js';
57-
import gsplatSogsColorVS from '../chunks/gsplat/vert/gsplatSogsColor.js';
58-
import gsplatSogsDataVS from '../chunks/gsplat/vert/gsplatSogsData.js';
59-
import gsplatSogsSHVS from '../chunks/gsplat/vert/gsplatSogsSH.js';
60-
import gsplatSourceFormatVS from '../chunks/gsplat/vert/gsplatSourceFormat.js';
61-
import gsplatStructsVS from '../chunks/gsplat/vert/gsplatStructs.js';
62-
import gsplatCornerVS from '../chunks/gsplat/vert/gsplatCorner.js';
63-
import gsplatDataVS from '../chunks/gsplat/vert/gsplatData.js';
64-
import gsplatOutputVS from '../chunks/gsplat/vert/gsplatOutput.js';
65-
import gsplatPS from '../chunks/gsplat/frag/gsplat.js';
66-
import gsplatSHVS from '../chunks/gsplat/vert/gsplatSH.js';
67-
import gsplatSourceVS from '../chunks/gsplat/vert/gsplatSource.js';
68-
import gsplatVS from '../chunks/gsplat/vert/gsplat.js';
69-
import gsplatWorkBufferVS from '../chunks/gsplat/vert/gsplatWorkBuffer.js';
70-
import gsplatPackingPS from '../chunks/gsplat/frag/gsplatPacking.js';
7148
import quadVS from '../chunks/common/vert/quad.js';
7249
import immediateLinePS from '../chunks/internal/frag/immediateLine.js';
7350
import immediateLineVS from '../chunks/internal/vert/immediateLine.js';
@@ -230,29 +207,6 @@ const shaderChunksGLSL = {
230207
gles3PS,
231208
gles3VS,
232209
glossPS,
233-
gsplatCenterVS,
234-
gsplatCornerVS,
235-
gsplatColorVS,
236-
gsplatCommonVS,
237-
gsplatCompressedDataVS,
238-
gsplatCompressedSHVS,
239-
gsplatCustomizeVS,
240-
gsplatEvalSHVS,
241-
gsplatHelpersVS,
242-
gsplatQuatToMat3VS,
243-
gsplatSogsColorVS,
244-
gsplatSogsDataVS,
245-
gsplatSogsSHVS,
246-
gsplatSourceFormatVS,
247-
gsplatStructsVS,
248-
gsplatDataVS,
249-
gsplatOutputVS,
250-
gsplatPS,
251-
gsplatSHVS,
252-
gsplatSourceVS,
253-
gsplatVS,
254-
gsplatWorkBufferVS,
255-
gsplatPackingPS,
256210
quadVS,
257211
immediateLinePS,
258212
immediateLineVS,
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import gsplatCenterVS from '../chunks/gsplat/vert/gsplatCenter.js';
2+
import gsplatColorVS from '../chunks/gsplat/vert/gsplatColor.js';
3+
import gsplatCommonVS from '../chunks/gsplat/vert/gsplatCommon.js';
4+
import gsplatCompressedDataVS from '../chunks/gsplat/vert/gsplatCompressedData.js';
5+
import gsplatCompressedSHVS from '../chunks/gsplat/vert/gsplatCompressedSH.js';
6+
import gsplatCustomizeVS from '../chunks/gsplat/vert/gsplatCustomize.js';
7+
import gsplatEvalSHVS from '../chunks/gsplat/vert/gsplatEvalSH.js';
8+
import gsplatHelpersVS from '../chunks/gsplat/vert/gsplatHelpers.js';
9+
import gsplatQuatToMat3VS from '../chunks/gsplat/vert/gsplatQuatToMat3.js';
10+
import gsplatSogsColorVS from '../chunks/gsplat/vert/gsplatSogsColor.js';
11+
import gsplatSogsDataVS from '../chunks/gsplat/vert/gsplatSogsData.js';
12+
import gsplatSogsSHVS from '../chunks/gsplat/vert/gsplatSogsSH.js';
13+
import gsplatSourceFormatVS from '../chunks/gsplat/vert/gsplatSourceFormat.js';
14+
import gsplatStructsVS from '../chunks/gsplat/vert/gsplatStructs.js';
15+
import gsplatCornerVS from '../chunks/gsplat/vert/gsplatCorner.js';
16+
import gsplatDataVS from '../chunks/gsplat/vert/gsplatData.js';
17+
import gsplatOutputVS from '../chunks/gsplat/vert/gsplatOutput.js';
18+
import gsplatPS from '../chunks/gsplat/frag/gsplat.js';
19+
import gsplatSHVS from '../chunks/gsplat/vert/gsplatSH.js';
20+
import gsplatSourceVS from '../chunks/gsplat/vert/gsplatSource.js';
21+
import gsplatVS from '../chunks/gsplat/vert/gsplat.js';
22+
import gsplatWorkBufferVS from '../chunks/gsplat/vert/gsplatWorkBuffer.js';
23+
import gsplatPackingPS from '../chunks/gsplat/frag/gsplatPacking.js';
24+
25+
export const gsplatChunksWGSL = {
26+
gsplatCenterVS,
27+
gsplatCornerVS,
28+
gsplatColorVS,
29+
gsplatCommonVS,
30+
gsplatCompressedDataVS,
31+
gsplatCompressedSHVS,
32+
gsplatCustomizeVS,
33+
gsplatEvalSHVS,
34+
gsplatHelpersVS,
35+
gsplatSourceFormatVS,
36+
gsplatStructsVS,
37+
gsplatQuatToMat3VS,
38+
gsplatSogsColorVS,
39+
gsplatSogsDataVS,
40+
gsplatSogsSHVS,
41+
gsplatDataVS,
42+
gsplatOutputVS,
43+
gsplatPS,
44+
gsplatSHVS,
45+
gsplatSourceVS,
46+
gsplatVS,
47+
gsplatWorkBufferVS,
48+
gsplatPackingPS
49+
};

src/scene/shader-lib/wgsl/collections/shader-chunks-wgsl.js

Lines changed: 0 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -43,29 +43,6 @@ import fresnelSchlickPS from '../chunks/lit/frag/fresnelSchlick.js';
4343
import fullscreenQuadVS from '../chunks/common/vert/fullscreenQuad.js';
4444
import gammaPS from '../chunks/common/frag/gamma.js';
4545
import glossPS from '../chunks/standard/frag/gloss.js';
46-
import gsplatCenterVS from '../chunks/gsplat/vert/gsplatCenter.js';
47-
import gsplatColorVS from '../chunks/gsplat/vert/gsplatColor.js';
48-
import gsplatCommonVS from '../chunks/gsplat/vert/gsplatCommon.js';
49-
import gsplatCompressedDataVS from '../chunks/gsplat/vert/gsplatCompressedData.js';
50-
import gsplatCompressedSHVS from '../chunks/gsplat/vert/gsplatCompressedSH.js';
51-
import gsplatCustomizeVS from '../chunks/gsplat/vert/gsplatCustomize.js';
52-
import gsplatEvalSHVS from '../chunks/gsplat/vert/gsplatEvalSH.js';
53-
import gsplatHelpersVS from '../chunks/gsplat/vert/gsplatHelpers.js';
54-
import gsplatQuatToMat3VS from '../chunks/gsplat/vert/gsplatQuatToMat3.js';
55-
import gsplatSogsColorVS from '../chunks/gsplat/vert/gsplatSogsColor.js';
56-
import gsplatSogsDataVS from '../chunks/gsplat/vert/gsplatSogsData.js';
57-
import gsplatSogsSHVS from '../chunks/gsplat/vert/gsplatSogsSH.js';
58-
import gsplatSourceFormatVS from '../chunks/gsplat/vert/gsplatSourceFormat.js';
59-
import gsplatStructsVS from '../chunks/gsplat/vert/gsplatStructs.js';
60-
import gsplatCornerVS from '../chunks/gsplat/vert/gsplatCorner.js';
61-
import gsplatDataVS from '../chunks/gsplat/vert/gsplatData.js';
62-
import gsplatOutputVS from '../chunks/gsplat/vert/gsplatOutput.js';
63-
import gsplatPS from '../chunks/gsplat/frag/gsplat.js';
64-
import gsplatSHVS from '../chunks/gsplat/vert/gsplatSH.js';
65-
import gsplatSourceVS from '../chunks/gsplat/vert/gsplatSource.js';
66-
import gsplatVS from '../chunks/gsplat/vert/gsplat.js';
67-
import gsplatWorkBufferVS from '../chunks/gsplat/vert/gsplatWorkBuffer.js';
68-
import gsplatPackingPS from '../chunks/gsplat/frag/gsplatPacking.js';
6946
import quadVS from '../chunks/common/vert/quad.js';
7047
import indirectCoreCS from '../chunks/common/comp/indirect-core.js';
7148
import immediateLinePS from '../chunks/internal/frag/immediateLine.js';
@@ -227,29 +204,6 @@ const shaderChunksWGSL = {
227204
fullscreenQuadVS,
228205
gammaPS,
229206
glossPS,
230-
gsplatCenterVS,
231-
gsplatCornerVS,
232-
gsplatColorVS,
233-
gsplatCommonVS,
234-
gsplatCompressedDataVS,
235-
gsplatCompressedSHVS,
236-
gsplatCustomizeVS,
237-
gsplatEvalSHVS,
238-
gsplatHelpersVS,
239-
gsplatSourceFormatVS,
240-
gsplatStructsVS,
241-
gsplatQuatToMat3VS,
242-
gsplatSogsColorVS,
243-
gsplatSogsDataVS,
244-
gsplatSogsSHVS,
245-
gsplatDataVS,
246-
gsplatOutputVS,
247-
gsplatPS,
248-
gsplatSHVS,
249-
gsplatSourceVS,
250-
gsplatVS,
251-
gsplatWorkBufferVS,
252-
gsplatPackingPS,
253207
quadVS,
254208
indirectCoreCS,
255209
immediateLinePS,

0 commit comments

Comments
 (0)