From e2afd7bf652ed24a4884d42a026ef73c6ec9aefa Mon Sep 17 00:00:00 2001 From: Noeri Huisman <8823461+mrxz@users.noreply.github.com> Date: Mon, 15 Dec 2025 17:09:31 +0100 Subject: [PATCH] Ensure splatDefines ShaderChunk is ready when using Readback before SparkRenderer --- src/PackedSplats.ts | 4 ++-- src/Readback.ts | 6 ++++-- src/shaders.ts | 4 ++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/PackedSplats.ts b/src/PackedSplats.ts index 327d3180..b94aaf1b 100644 --- a/src/PackedSplats.ts +++ b/src/PackedSplats.ts @@ -19,7 +19,7 @@ import { outputPackedSplat, } from "./dyno"; import { TPackedSplats, definePackedSplats } from "./dyno/splats"; -import computeUvec4Template from "./shaders/computeUvec4.glsl"; +import { getShaders } from "./shaders"; import { getTextureSize, setPackedSplat, unpackSplat } from "./utils"; export type SplatEncoding = { @@ -574,7 +574,7 @@ export class PackedSplats { ); if (!PackedSplats.programTemplate) { PackedSplats.programTemplate = new DynoProgramTemplate( - computeUvec4Template, + getShaders().computeUvec4Template, ); } // Create a program from the template and graph diff --git a/src/Readback.ts b/src/Readback.ts index a7a75781..faf716a7 100644 --- a/src/Readback.ts +++ b/src/Readback.ts @@ -4,7 +4,7 @@ import { FullScreenQuad } from "three/addons/postprocessing/Pass.js"; import { SPLAT_TEX_HEIGHT, SPLAT_TEX_WIDTH } from "./defines"; import { type Dyno, OutputRgba8, dynoBlock } from "./dyno"; import { DynoProgram, DynoProgramTemplate } from "./dyno/program"; -import computeVec4Template from "./shaders/computeVec4.glsl"; +import { getShaders } from "./shaders"; import { getTextureSize } from "./utils"; // Readback can be used to run a Dyno program that maps an index to a 32-bit @@ -107,7 +107,9 @@ export class Readback { }, ); if (!Readback.programTemplate) { - Readback.programTemplate = new DynoProgramTemplate(computeVec4Template); + Readback.programTemplate = new DynoProgramTemplate( + getShaders().computeVec4Template, + ); } // Create a program from the template and graph program = new DynoProgram({ diff --git a/src/shaders.ts b/src/shaders.ts index 8e03d7c7..e6013ff1 100644 --- a/src/shaders.ts +++ b/src/shaders.ts @@ -1,5 +1,7 @@ import * as THREE from "three"; +import computeUvec4Template from "./shaders/computeUvec4.glsl"; +import computeVec4Template from "./shaders/computeVec4.glsl"; import splatDefines from "./shaders/splatDefines.glsl"; import splatFragment from "./shaders/splatFragment.glsl"; import splatVertex from "./shaders/splatVertex.glsl"; @@ -13,6 +15,8 @@ export function getShaders(): Record { shaders = { splatVertex, splatFragment, + computeVec4Template, + computeUvec4Template, }; } return shaders;