This commit is contained in:
2026-01-06 20:25:55 -06:00
parent 50bee7a5c0
commit 0522b967ca
21 changed files with 724 additions and 1244 deletions

View File

@@ -92,7 +92,8 @@ effects.register('mask', {
type: 'conditional',
requires_target: true,
params: {
source: {required: true},
source: {required: false}, // Legacy: direct handle reference
source_id: {required: false}, // New: ID string for film2d.get()
channel: {default: 'alpha'},
invert: {default: false},
soft: {default: false},
@@ -112,11 +113,22 @@ effects.register('mask', {
return [{type: 'blit', source: input, dest: output}]
}
// Resolve mask source
var mask_source = params.source
if (params.source_id && ctx.film2d) {
mask_source = ctx.film2d.get(params.source_id)
}
if (!mask_source) {
// No mask source - pass through
return [{type: 'blit', source: input, dest: output}]
}
// Render mask source to target
var mask_target = ctx.alloc_target(size.width, size.height, 'mask_src')
passes.push({
type: 'render_subtree',
root: params.source,
root: mask_source,
output: mask_target,
clear: {r: 0, g: 0, b: 0, a: 0},
space: params.space || 'local'