Route NodeCanvas blend setup through helper
This commit is contained in:
@@ -16,9 +16,19 @@ struct LegacyCanvasDrawMergeTextureUniforms {
|
||||
int texture_slot = 0;
|
||||
};
|
||||
|
||||
struct LegacyCanvasDrawMergeTextureBlendUniforms {
|
||||
glm::mat4 mvp { 1.0f };
|
||||
int texture_slot = 0;
|
||||
int destination_texture_slot = 2;
|
||||
bool use_destination_texture = false;
|
||||
int blend_mode = 0;
|
||||
float alpha = 1.0f;
|
||||
};
|
||||
|
||||
struct LegacyCanvasDrawMergeShaderExecution {
|
||||
std::function<void(kShader)> use_shader;
|
||||
std::function<void(kShaderUniform, int)> set_int;
|
||||
std::function<void(kShaderUniform, float)> set_float;
|
||||
std::function<void(kShaderUniform, const glm::mat4&)> set_mat4;
|
||||
};
|
||||
|
||||
@@ -27,6 +37,7 @@ struct LegacyCanvasDrawMergeShaderExecution {
|
||||
return {
|
||||
.use_shader = [](kShader shader) { ShaderManager::use(shader); },
|
||||
.set_int = [](kShaderUniform uniform, int value) { ShaderManager::u_int(uniform, value); },
|
||||
.set_float = [](kShaderUniform uniform, float value) { ShaderManager::u_float(uniform, value); },
|
||||
.set_mat4 = [](kShaderUniform uniform, const glm::mat4& value) { ShaderManager::u_mat4(uniform, value); },
|
||||
};
|
||||
}
|
||||
@@ -61,4 +72,24 @@ inline void setup_legacy_canvas_draw_merge_texture_shader(
|
||||
setup_legacy_canvas_draw_merge_texture_shader(uniforms, legacy_shader_manager_draw_merge_execution());
|
||||
}
|
||||
|
||||
inline void setup_legacy_canvas_draw_merge_texture_blend_shader(
|
||||
const LegacyCanvasDrawMergeTextureBlendUniforms& uniforms,
|
||||
const LegacyCanvasDrawMergeShaderExecution& execution) noexcept
|
||||
{
|
||||
execution.use_shader(kShader::TextureBlend);
|
||||
execution.set_int(kShaderUniform::Tex, uniforms.texture_slot);
|
||||
if (uniforms.use_destination_texture) {
|
||||
execution.set_int(kShaderUniform::TexBG, uniforms.destination_texture_slot);
|
||||
}
|
||||
execution.set_int(kShaderUniform::BlendMode, uniforms.blend_mode);
|
||||
execution.set_float(kShaderUniform::Alpha, uniforms.alpha);
|
||||
execution.set_mat4(kShaderUniform::MVP, uniforms.mvp);
|
||||
}
|
||||
|
||||
inline void setup_legacy_canvas_draw_merge_texture_blend_shader(
|
||||
const LegacyCanvasDrawMergeTextureBlendUniforms& uniforms)
|
||||
{
|
||||
setup_legacy_canvas_draw_merge_texture_blend_shader(uniforms, legacy_shader_manager_draw_merge_execution());
|
||||
}
|
||||
|
||||
} // namespace pp::panopainter
|
||||
|
||||
Reference in New Issue
Block a user