From 8db3bead13441a5882d8689dfc6a9f09c82375d9 Mon Sep 17 00:00:00 2001 From: Maze Winther Date: Wed, 25 Mar 2026 16:47:22 +0100 Subject: feat: masks, properties refactor, shaders, storage migrations, and more --- .../services/renderer/nodes/effect-layer-node.ts | 29 +++++++++++----------- 1 file changed, 14 insertions(+), 15 deletions(-) (limited to 'apps/web/src/services/renderer/nodes/effect-layer-node.ts') diff --git a/apps/web/src/services/renderer/nodes/effect-layer-node.ts b/apps/web/src/services/renderer/nodes/effect-layer-node.ts index 3d84be2b..82aee1b3 100644 --- a/apps/web/src/services/renderer/nodes/effect-layer-node.ts +++ b/apps/web/src/services/renderer/nodes/effect-layer-node.ts @@ -1,14 +1,14 @@ import type { CanvasRenderer } from "../canvas-renderer"; -import { getEffect } from "@/lib/effects"; -import type { EffectParamValues } from "@/types/effects"; +import { effectsRegistry, resolveEffectPasses } from "@/lib/effects"; +import type { ParamValues } from "@/lib/params"; import { BaseNode } from "./base-node"; -import { webglEffectRenderer } from "../webgl-effect-renderer"; +import { webglEffectRenderer } from "../webgl/webgl-effect-renderer"; const TIME_EPSILON = 1e-6; export type EffectLayerNodeParams = { effectType: string; - effectParams: EffectParamValues; + effectParams: ParamValues; timeOffset: number; duration: number; }; @@ -49,18 +49,17 @@ export class EffectLayerNode extends BaseNode { const source = renderer.context.canvas as CanvasImageSource; - const effectDefinition = getEffect({ - effectType: this.params.effectType, - }); + const effectDefinition = effectsRegistry.get(this.params.effectType); - const passes = effectDefinition.renderer.passes.map((pass) => ({ - fragmentShader: pass.fragmentShader, - uniforms: pass.uniforms({ - effectParams: this.params.effectParams, - width: renderer.width, - height: renderer.height, - }), - })); + const passes = resolveEffectPasses({ + definition: effectDefinition, + effectParams: this.params.effectParams, + width: renderer.width, + height: renderer.height, + }); + if (passes.length === 0) { + return; + } const effectResult = webglEffectRenderer.applyEffect({ source, width: renderer.width, -- cgit v1.3.1