Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 5 additions & 8 deletions src/PackedSplats.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as THREE from "three";
import { FullScreenQuad } from "three/addons/postprocessing/Pass.js";

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

// Prepare and update our material we'll use to render the Gsplats
const material = program.prepareMaterial();
PackedSplats.mesh.material = material;
PackedSplats.fullScreenQuad.material = material;
return { program, material };
}

Expand Down Expand Up @@ -579,7 +580,7 @@ export class PackedSplats {
renderer.setRenderTarget(this.target, layer);
renderer.xr.enabled = false;
renderer.autoClear = false;
renderer.render(PackedSplats.scene, PackedSplats.camera);
PackedSplats.fullScreenQuad.render(renderer);

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

// Static Three.js objects for pseudo-compute shader rendering
static geometry = new THREE.PlaneGeometry(2, 2);
static mesh = new THREE.Mesh(
PackedSplats.geometry,
// Static full-screen quad for pseudo-compute shader rendering
static fullScreenQuad = new FullScreenQuad(
new THREE.RawShaderMaterial({ visible: false }),
);
static scene = new THREE.Scene().add(PackedSplats.mesh);
static camera = new THREE.Camera();
}

// You can use a PackedSplats as a dyno block using the function
Expand Down
13 changes: 5 additions & 8 deletions src/Readback.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import * as THREE from "three";
import { FullScreenQuad } from "three/addons/postprocessing/Pass.js";

import { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from "./defines";
import { type Dyno, OutputRgba8, dynoBlock } from "./dyno";
Expand Down Expand Up @@ -124,7 +125,7 @@ export class Readback {
}

const material = program.prepareMaterial();
Readback.mesh.material = material;
Readback.fullScreenQuad.material = material;
return { program, material };
}

Expand Down Expand Up @@ -181,7 +182,7 @@ export class Readback {
renderer.setRenderTarget(this.target, layer);
renderer.xr.enabled = false;
renderer.autoClear = false;
renderer.render(Readback.scene, Readback.camera);
Readback.fullScreenQuad.render(renderer);

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

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