Skip to content

Commit 1e697b3

Browse files
authored
Use FullScreenQuad instead of custom setup (#121)
1 parent f114f73 commit 1e697b3

File tree

2 files changed

+10
-16
lines changed

2 files changed

+10
-16
lines changed

src/PackedSplats.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as THREE from "three";
2+
import { FullScreenQuad } from "three/addons/postprocessing/Pass.js";
23

34
import type { GsplatGenerator } from "./SplatGenerator";
45
import { type SplatFileType, SplatLoader, unpackSplats } from "./SplatLoader";
@@ -498,7 +499,7 @@ export class PackedSplats {
498499

499500
// Prepare and update our material we'll use to render the Gsplats
500501
const material = program.prepareMaterial();
501-
PackedSplats.mesh.material = material;
502+
PackedSplats.fullScreenQuad.material = material;
502503
return { program, material };
503504
}
504505

@@ -579,7 +580,7 @@ export class PackedSplats {
579580
renderer.setRenderTarget(this.target, layer);
580581
renderer.xr.enabled = false;
581582
renderer.autoClear = false;
582-
renderer.render(PackedSplats.scene, PackedSplats.camera);
583+
PackedSplats.fullScreenQuad.render(renderer);
583584

584585
base += SPLAT_TEX_WIDTH * (layerYEnd - layerYStart);
585586
}
@@ -593,14 +594,10 @@ export class PackedSplats {
593594
// Cache for GsplatGenerator programs
594595
static generatorProgram = new Map<GsplatGenerator, DynoProgram>();
595596

596-
// Static Three.js objects for pseudo-compute shader rendering
597-
static geometry = new THREE.PlaneGeometry(2, 2);
598-
static mesh = new THREE.Mesh(
599-
PackedSplats.geometry,
597+
// Static full-screen quad for pseudo-compute shader rendering
598+
static fullScreenQuad = new FullScreenQuad(
600599
new THREE.RawShaderMaterial({ visible: false }),
601600
);
602-
static scene = new THREE.Scene().add(PackedSplats.mesh);
603-
static camera = new THREE.Camera();
604601
}
605602

606603
// You can use a PackedSplats as a dyno block using the function

src/Readback.ts

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import * as THREE from "three";
2+
import { FullScreenQuad } from "three/addons/postprocessing/Pass.js";
23

34
import { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from "./defines";
45
import { type Dyno, OutputRgba8, dynoBlock } from "./dyno";
@@ -124,7 +125,7 @@ export class Readback {
124125
}
125126

126127
const material = program.prepareMaterial();
127-
Readback.mesh.material = material;
128+
Readback.fullScreenQuad.material = material;
128129
return { program, material };
129130
}
130131

@@ -181,7 +182,7 @@ export class Readback {
181182
renderer.setRenderTarget(this.target, layer);
182183
renderer.xr.enabled = false;
183184
renderer.autoClear = false;
184-
renderer.render(Readback.scene, Readback.camera);
185+
Readback.fullScreenQuad.render(renderer);
185186

186187
baseIndex += SPLAT_TEX_WIDTH * layerYEnd;
187188
}
@@ -330,12 +331,8 @@ export class Readback {
330331
// Cache for Rgba8Readback programs
331332
static readbackProgram = new Map<Rgba8Readback, DynoProgram>();
332333

333-
// Static Three.js objects for pseudo-compute shader rendering
334-
static geometry = new THREE.PlaneGeometry(2, 2);
335-
static mesh = new THREE.Mesh(
336-
Readback.geometry,
334+
// Static full-screen quad for pseudo-compute shader rendering
335+
static fullScreenQuad = new FullScreenQuad(
337336
new THREE.RawShaderMaterial({ visible: false }),
338337
);
339-
static scene = new THREE.Scene().add(Readback.mesh);
340-
static camera = new THREE.Camera();
341338
}

0 commit comments

Comments
 (0)