diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-04-20 11:31:17 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-04-20 11:31:17 +0200 |
| commit | 3e89d2998588f8e35c524e523ba2ee853f0f6475 (patch) | |
| tree | 57221f96c1259b3b07e3ddf8c1adefc502b9d8eb /apps/web/src/effects/index.ts | |
| parent | 729d10592f4e802f91c555c309ff3ba4b119f843 (diff) | |
| download | opencut-3e89d2998588f8e35c524e523ba2ee853f0f6475.tar.gz | |
refactor: restructure files to their domains, new preview overlay system, and dep graph
Diffstat (limited to 'apps/web/src/effects/index.ts')
| -rw-r--r-- | apps/web/src/effects/index.ts | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/apps/web/src/effects/index.ts b/apps/web/src/effects/index.ts new file mode 100644 index 00000000..eebb8cbc --- /dev/null +++ b/apps/web/src/effects/index.ts @@ -0,0 +1,47 @@ +import { generateUUID } from "@/utils/id"; +import { buildDefaultParamValues } from "@/params/registry"; +import { effectsRegistry } from "./registry"; +import type { ParamValues } from "@/params"; +import type { Effect, EffectDefinition, EffectPass } from "@/effects/types"; +import { VISUAL_ELEMENT_TYPES } from "@/timeline"; + +export { effectsRegistry } from "./registry"; +export { registerDefaultEffects } from "./definitions"; + +export function resolveEffectPasses({ + definition, + effectParams, + width, + height, +}: { + definition: EffectDefinition; + effectParams: ParamValues; + width: number; + height: number; +}): EffectPass[] { + if (definition.renderer.buildPasses) { + return definition.renderer.buildPasses({ effectParams, width, height }); + } + return definition.renderer.passes.map((pass) => ({ + shader: pass.shader, + uniforms: pass.uniforms({ effectParams, width, height }), + })); +} + +export const EFFECT_TARGET_ELEMENT_TYPES = VISUAL_ELEMENT_TYPES; + +export function buildDefaultEffectInstance({ + effectType, +}: { + effectType: string; +}): Effect { + const definition = effectsRegistry.get(effectType); + const params: ParamValues = buildDefaultParamValues(definition.params); + + return { + id: generateUUID(), + type: effectType, + params, + enabled: true, + }; +} |
