Refactor shader widget system and add new post-processing effects

- Removed the existing procedural_shader_widget.h file and re-added it with minor adjustments.
- Introduced new blur_widget.h for Gaussian blur effects with customizable parameters.
- Added chromatic_aberration_widget.h to implement chromatic aberration effects.
- Created color_adjust_widget.h for color adjustments including brightness, contrast, saturation, and gamma.
- Implemented color_tint_widget.h for tint mapping effects with various blending modes.
- Added noise_widget.h for film grain noise effects, supporting static and animated modes.
- Introduced vignette_widget.h for vignette effects with adjustable radius, softness, and tint color.
- Created effects.h to consolidate all new effect widgets for easier inclusion.
This commit is contained in:
2025-12-25 03:43:38 +08:00
parent bd8c71badd
commit 023f8099f0
29 changed files with 1973 additions and 1991 deletions

View File

@@ -12,8 +12,8 @@
#include "ui/widgets/text_widget.h"
#include "ui/widgets/text_input/text_input.h"
// 新的后效 widget 系统
#include "ui/widgets/custom_shader/effects/effects.h"
#include "ui/widgets/custom_shader/mask/basic_mask_widget.h"
#include "ui/widgets/effects/effects.h"
#include "ui/widgets/custom_shader/basic_mask_widget.h"
using namespace mirage;
@@ -59,14 +59,14 @@ int main(int argc, char* argv[]) {
app.get_main_window()->set_tooltip_config(tooltip_cfg);
const auto root_widget = new_widget<scroll_box>()[
new_widget<text_widget>()->font_id(font_id).text("你好,我们在此相遇").font_size(24).tooltip("测试tooltip"),
new_widget<text_input>()->font_id(font_id).font_size(24),
// new_widget<text_widget>()->font_id(font_id).text("你好,我们在此相遇").font_size(24).tooltip("测试tooltip"),
// new_widget<text_input>()->font_id(font_id).font_size(24),
new_widget<overlay>()[
new_widget<imager>()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain),
new_widget<imager>()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain)
// 圆形遮罩 + 模糊效果 (使用新的 blur_widget)
new_widget<basic_mask_widget>()[
new_widget<blur_widget>()->set_radius(40.0f)
] | align(alignment::center_left)
// new_widget<basic_mask_widget>()[
// new_widget<blur_widget>()->set_radius(40.0f)
// ] | align(alignment::center_left)
]
// new_widget<overlay>()[
// new_widget<imager>()->texture_id(texture_id).source_size(tex_size).scale(scale_mode::contain),