Extract preview final composite request helper
This commit is contained in:
@@ -205,63 +205,69 @@ pp::panopainter::LegacyNodeStrokePreviewMixExecutionRequest make_stroke_preview_
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pp::panopainter::LegacyNodeStrokePreviewFinalCompositeRequest make_stroke_preview_final_composite_request(
|
||||||
|
const StrokePreviewCompositePassInputs& inputs)
|
||||||
|
{
|
||||||
|
return pp::panopainter::LegacyNodeStrokePreviewFinalCompositeRequest {
|
||||||
|
.resolution = inputs.resolution,
|
||||||
|
.pattern_scale = inputs.pattern_scale,
|
||||||
|
.brush = &inputs.brush,
|
||||||
|
.composite_pass = &inputs.composite_pass,
|
||||||
|
.setup_composite_shader = [&] {
|
||||||
|
pp::panopainter::setup_legacy_stroke_composite_shader(
|
||||||
|
pp::panopainter::LegacyStrokeCompositeUniforms {
|
||||||
|
.resolution = inputs.resolution,
|
||||||
|
.pattern = {
|
||||||
|
.scale = inputs.pattern_scale,
|
||||||
|
.invert = static_cast<float>(inputs.brush.m_pattern_invert),
|
||||||
|
.brightness = inputs.brush.m_pattern_brightness,
|
||||||
|
.contrast = inputs.brush.m_pattern_contrast,
|
||||||
|
.depth = inputs.brush.m_pattern_depth,
|
||||||
|
.blend_mode = inputs.composite_pass.pattern_blend_mode,
|
||||||
|
.offset = glm::vec2(inputs.brush.m_pattern_rand_offset ? 0.5f : 0.0f),
|
||||||
|
},
|
||||||
|
.mvp = glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f),
|
||||||
|
.layer_alpha = 1.0f,
|
||||||
|
.alpha_lock = false,
|
||||||
|
.mask_enabled = false,
|
||||||
|
.use_fragcoord = false,
|
||||||
|
.blend_mode = inputs.brush.m_blend_mode,
|
||||||
|
.use_dual = inputs.composite_pass.use_dual,
|
||||||
|
.dual_blend_mode = inputs.composite_pass.dual_blend_mode,
|
||||||
|
.dual_alpha = inputs.composite_pass.dual_alpha,
|
||||||
|
.use_pattern = inputs.composite_pass.use_pattern,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
.bind_composite_samplers = [&] {
|
||||||
|
inputs.linear_sampler.bind(stroke_preview_composite_slots::kBackground);
|
||||||
|
inputs.linear_sampler.bind(stroke_preview_composite_slots::kStroke);
|
||||||
|
inputs.linear_sampler.bind(2U);
|
||||||
|
inputs.linear_sampler.bind(stroke_preview_composite_slots::kDual);
|
||||||
|
inputs.repeat_sampler.bind(stroke_preview_composite_slots::kPattern);
|
||||||
|
},
|
||||||
|
.bind_composite_inputs = [&] {
|
||||||
|
set_active_texture_unit(stroke_preview_composite_slots::kBackground);
|
||||||
|
inputs.background_texture.bind();
|
||||||
|
set_active_texture_unit(stroke_preview_composite_slots::kStroke);
|
||||||
|
inputs.stroke_texture.bind();
|
||||||
|
set_active_texture_unit(stroke_preview_composite_slots::kDual);
|
||||||
|
inputs.dual_texture.bind();
|
||||||
|
set_active_texture_unit(stroke_preview_composite_slots::kPattern);
|
||||||
|
inputs.brush.m_pattern_texture ?
|
||||||
|
inputs.brush.m_pattern_texture->bind() :
|
||||||
|
unbind_texture_2d();
|
||||||
|
},
|
||||||
|
.draw_composite = [&] {
|
||||||
|
inputs.draw_composite();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
void execute_stroke_preview_final_composite_pass(const StrokePreviewCompositePassInputs& inputs)
|
void execute_stroke_preview_final_composite_pass(const StrokePreviewCompositePassInputs& inputs)
|
||||||
{
|
{
|
||||||
[[maybe_unused]] const bool composite_ok =
|
[[maybe_unused]] const bool composite_ok =
|
||||||
pp::panopainter::execute_legacy_node_stroke_preview_final_composite(
|
pp::panopainter::execute_legacy_node_stroke_preview_final_composite(
|
||||||
pp::panopainter::LegacyNodeStrokePreviewFinalCompositeRequest {
|
make_stroke_preview_final_composite_request(inputs));
|
||||||
.resolution = inputs.resolution,
|
|
||||||
.pattern_scale = inputs.pattern_scale,
|
|
||||||
.brush = &inputs.brush,
|
|
||||||
.composite_pass = &inputs.composite_pass,
|
|
||||||
.setup_composite_shader = [&] {
|
|
||||||
pp::panopainter::setup_legacy_stroke_composite_shader(
|
|
||||||
pp::panopainter::LegacyStrokeCompositeUniforms {
|
|
||||||
.resolution = inputs.resolution,
|
|
||||||
.pattern = {
|
|
||||||
.scale = inputs.pattern_scale,
|
|
||||||
.invert = static_cast<float>(inputs.brush.m_pattern_invert),
|
|
||||||
.brightness = inputs.brush.m_pattern_brightness,
|
|
||||||
.contrast = inputs.brush.m_pattern_contrast,
|
|
||||||
.depth = inputs.brush.m_pattern_depth,
|
|
||||||
.blend_mode = inputs.composite_pass.pattern_blend_mode,
|
|
||||||
.offset = glm::vec2(inputs.brush.m_pattern_rand_offset ? 0.5f : 0.0f),
|
|
||||||
},
|
|
||||||
.mvp = glm::ortho(-.5f, .5f, -.5f, .5f, -1.f, 1.f),
|
|
||||||
.layer_alpha = 1.0f,
|
|
||||||
.alpha_lock = false,
|
|
||||||
.mask_enabled = false,
|
|
||||||
.use_fragcoord = false,
|
|
||||||
.blend_mode = inputs.brush.m_blend_mode,
|
|
||||||
.use_dual = inputs.composite_pass.use_dual,
|
|
||||||
.dual_blend_mode = inputs.composite_pass.dual_blend_mode,
|
|
||||||
.dual_alpha = inputs.composite_pass.dual_alpha,
|
|
||||||
.use_pattern = inputs.composite_pass.use_pattern,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
.bind_composite_samplers = [&] {
|
|
||||||
inputs.linear_sampler.bind(stroke_preview_composite_slots::kBackground);
|
|
||||||
inputs.linear_sampler.bind(stroke_preview_composite_slots::kStroke);
|
|
||||||
inputs.linear_sampler.bind(2U);
|
|
||||||
inputs.linear_sampler.bind(stroke_preview_composite_slots::kDual);
|
|
||||||
inputs.repeat_sampler.bind(stroke_preview_composite_slots::kPattern);
|
|
||||||
},
|
|
||||||
.bind_composite_inputs = [&] {
|
|
||||||
set_active_texture_unit(stroke_preview_composite_slots::kBackground);
|
|
||||||
inputs.background_texture.bind();
|
|
||||||
set_active_texture_unit(stroke_preview_composite_slots::kStroke);
|
|
||||||
inputs.stroke_texture.bind();
|
|
||||||
set_active_texture_unit(stroke_preview_composite_slots::kDual);
|
|
||||||
inputs.dual_texture.bind();
|
|
||||||
set_active_texture_unit(stroke_preview_composite_slots::kPattern);
|
|
||||||
inputs.brush.m_pattern_texture ?
|
|
||||||
inputs.brush.m_pattern_texture->bind() :
|
|
||||||
unbind_texture_2d();
|
|
||||||
},
|
|
||||||
.draw_composite = [&] {
|
|
||||||
inputs.draw_composite();
|
|
||||||
},
|
|
||||||
});
|
|
||||||
assert(composite_ok);
|
assert(composite_ok);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user