Thin brush panel, preview, and node utility shells
This commit is contained in:
@@ -136,6 +136,96 @@ void copy_legacy_node_stroke_preview_destination_texture_region(
|
||||
copy_framebuffer_to_texture_2d(src_x, src_y, dst_x, dst_y, width, height);
|
||||
}
|
||||
|
||||
bool execute_legacy_node_stroke_preview_immediate_draw(
|
||||
const LegacyNodeStrokePreviewImmediateDrawRequest& request)
|
||||
{
|
||||
if (!request.brush ||
|
||||
!request.prepare_render_target ||
|
||||
!request.finish_render_target ||
|
||||
!request.compute_frames ||
|
||||
!request.draw_samples ||
|
||||
!request.draw_mix ||
|
||||
!request.draw_checkerboard ||
|
||||
!request.draw_composite) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ensure_legacy_node_stroke_preview_render_targets(
|
||||
LegacyNodeStrokePreviewRenderTargetSetup {
|
||||
.preview_rtt = request.preview_rtt,
|
||||
.preview_rtt_mixer = request.preview_rtt_mixer,
|
||||
.preview_stroke_texture = request.preview_stroke_texture,
|
||||
.preview_dual_texture = request.preview_dual_texture,
|
||||
.preview_background_texture = request.preview_background_texture,
|
||||
.preview_image_texture = request.preview_image_texture,
|
||||
.size = request.preview_size,
|
||||
})) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const auto vp = query_legacy_node_stroke_preview_viewport();
|
||||
const auto cc = query_legacy_node_stroke_preview_clear_color();
|
||||
const glm::vec2 size = {
|
||||
static_cast<float>(request.preview_rtt.getWidth()),
|
||||
static_cast<float>(request.preview_rtt.getHeight()),
|
||||
};
|
||||
const bool sequence_ok = execute_legacy_node_stroke_preview_immediate_runtime(
|
||||
LegacyNodeStrokePreviewImmediateRuntimeRequest {
|
||||
.brush = request.brush,
|
||||
.preview_size = request.preview_size,
|
||||
.zoom = request.zoom,
|
||||
.min_flow = request.min_flow,
|
||||
.stroke_max_size_override = request.stroke_max_size_override,
|
||||
.pad_override = request.pad_override,
|
||||
.camera_fov = request.camera_fov,
|
||||
.camera_rot = request.camera_rot,
|
||||
.render_device_features = request.render_device_features,
|
||||
.preview_rtt = request.preview_rtt,
|
||||
.preview_rtt_mixer = request.preview_rtt_mixer,
|
||||
.preview_stroke_texture = request.preview_stroke_texture,
|
||||
.preview_dual_texture = request.preview_dual_texture,
|
||||
.preview_background_texture = request.preview_background_texture,
|
||||
.preview_image_texture = request.preview_image_texture,
|
||||
.linear_sampler = request.linear_sampler,
|
||||
.repeat_sampler = request.repeat_sampler,
|
||||
.prepare_render_target = request.prepare_render_target,
|
||||
.finish_render_target = request.finish_render_target,
|
||||
.set_blend_enabled = [](bool enabled) {
|
||||
apply_legacy_node_stroke_preview_capability(pp::renderer::gl::blend_state(), enabled);
|
||||
},
|
||||
.setup_stroke_shader = [](const LegacyStrokeShaderSetupUniforms& uniforms) {
|
||||
setup_legacy_stroke_shader(uniforms);
|
||||
},
|
||||
.bind_dual_pass_textures = [](const Brush& dual_brush) {
|
||||
bind_legacy_node_stroke_preview_dual_pass_textures(dual_brush);
|
||||
},
|
||||
.capture_background = [&](bool colorize) {
|
||||
execute_legacy_node_stroke_preview_background_capture_pass(
|
||||
LegacyNodeStrokePreviewBackgroundCaptureRequest {
|
||||
.size = size,
|
||||
.colorize = colorize,
|
||||
.background_texture = request.preview_background_texture,
|
||||
.draw_checkerboard = [&] {
|
||||
request.draw_checkerboard();
|
||||
},
|
||||
});
|
||||
},
|
||||
.compute_frames = request.compute_frames,
|
||||
.draw_samples = request.draw_samples,
|
||||
.draw_mix = request.draw_mix,
|
||||
.unbind_mixer_texture = [&] {
|
||||
unbind_legacy_node_stroke_preview_mixer_texture(request.preview_rtt_mixer);
|
||||
},
|
||||
.bind_pattern_texture = [&] {
|
||||
bind_legacy_node_stroke_preview_pattern_texture(*request.brush);
|
||||
},
|
||||
.draw_composite = request.draw_composite,
|
||||
});
|
||||
apply_legacy_node_stroke_preview_viewport(vp.x, vp.y, vp.width, vp.height);
|
||||
apply_legacy_node_stroke_preview_clear_color(cc);
|
||||
return sequence_ok;
|
||||
}
|
||||
|
||||
void execute_legacy_node_stroke_preview_background_capture_pass(
|
||||
const LegacyNodeStrokePreviewBackgroundCaptureRequest& request)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user