add pos to compositor layers
This commit is contained in:
@@ -107,6 +107,10 @@ function compile_node(node, ctx, parent_target, parent_size) {
|
||||
owns_target = true
|
||||
target_size = parent_size || ctx.screen_size
|
||||
target = allocate_target(ctx, target_size, node.name || 'effect_island')
|
||||
} else if (node.pos) {
|
||||
owns_target = true
|
||||
target_size = parent_size || ctx.screen_size
|
||||
target = allocate_target(ctx, target_size, node.name || 'translated_target')
|
||||
}
|
||||
|
||||
// Handle clear for target owners
|
||||
@@ -189,7 +193,8 @@ function compile_group(node, ctx, target, target_size, parent_target, parent_siz
|
||||
source: target,
|
||||
source_size: target_size,
|
||||
dest_size: parent_size,
|
||||
presentation: presentation
|
||||
presentation: presentation,
|
||||
pos: node.pos
|
||||
})
|
||||
} else {
|
||||
ctx.passes.push({
|
||||
@@ -199,7 +204,8 @@ function compile_group(node, ctx, target, target_size, parent_target, parent_siz
|
||||
source_size: target_size,
|
||||
dest_size: parent_size,
|
||||
presentation: presentation,
|
||||
blend: blend
|
||||
blend: blend,
|
||||
pos: node.pos
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -261,7 +267,8 @@ function compile_renderer_layer(node, ctx, target, target_size, parent_target, p
|
||||
source_size: layer_size,
|
||||
dest_size: parent_size,
|
||||
presentation: presentation,
|
||||
blend: blend
|
||||
blend: blend,
|
||||
pos: node.pos
|
||||
})
|
||||
}
|
||||
|
||||
@@ -606,6 +613,10 @@ function execute_pass(pass, renderers, backend, resolve_target) {
|
||||
var source = resolve_target(pass.source)
|
||||
var dest = resolve_target(pass.dest)
|
||||
var rect = compositor.calculate_presentation_rect(pass.source_size, pass.dest_size, pass.presentation)
|
||||
if (pass.pos) {
|
||||
rect.x += (pass.pos.x || 0)
|
||||
rect.y += (pass.pos.y || 0)
|
||||
}
|
||||
var filter = pass.presentation == 'integer_scale' ? 'nearest' : 'linear'
|
||||
commands.push({
|
||||
cmd: 'blit',
|
||||
@@ -619,6 +630,10 @@ function execute_pass(pass, renderers, backend, resolve_target) {
|
||||
case 'blit_to_screen':
|
||||
var source = resolve_target(pass.source)
|
||||
var rect = compositor.calculate_presentation_rect(pass.source_size, pass.dest_size, pass.presentation)
|
||||
if (pass.pos) {
|
||||
rect.x += (pass.pos.x || 0)
|
||||
rect.y += (pass.pos.y || 0)
|
||||
}
|
||||
var filter = pass.presentation == 'integer_scale' ? 'nearest' : 'linear'
|
||||
commands.push({
|
||||
cmd: 'blit',
|
||||
|
||||
Reference in New Issue
Block a user