@@ -36,13 +36,13 @@ static const char *TEXTURE_UNIT_UNIFORM = "u_skin";
3636static const char *SKIN_SIZE_UNIFORM = " u_skinSize" ;
3737
3838static const std::unordered_map<ShaderManager::Effect, const char *> EFFECT_TO_NAME = {
39- { ShaderManager::Effect::Color, " color" }, { ShaderManager::Effect::Brightness, " brightness" }, { ShaderManager::Effect::Ghost, " ghost" },
40- { ShaderManager::Effect::Fisheye , " fisheye " }, { ShaderManager::Effect::Whirl , " whirl " }, { ShaderManager::Effect::Pixelate , " pixelate " }
39+ { ShaderManager::Effect::Color, " color" }, { ShaderManager::Effect::Brightness, " brightness" }, { ShaderManager::Effect::Ghost, " ghost" }, { ShaderManager::Effect::Fisheye, " fisheye " },
40+ { ShaderManager::Effect::Whirl , " whirl " }, { ShaderManager::Effect::Pixelate , " pixelate " }, { ShaderManager::Effect::Mosaic , " mosaic " }
4141};
4242
4343static const std::unordered_map<ShaderManager::Effect, const char *> EFFECT_UNIFORM_NAME = {
44- { ShaderManager::Effect::Color, " u_color" }, { ShaderManager::Effect::Brightness, " u_brightness" }, { ShaderManager::Effect::Ghost, " u_ghost" },
45- { ShaderManager::Effect::Fisheye , " u_fisheye " }, { ShaderManager::Effect::Whirl , " u_whirl " }, { ShaderManager::Effect::Pixelate , " u_pixelate " }
44+ { ShaderManager::Effect::Color, " u_color" }, { ShaderManager::Effect::Brightness, " u_brightness" }, { ShaderManager::Effect::Ghost, " u_ghost" }, { ShaderManager::Effect::Fisheye, " u_fisheye " },
45+ { ShaderManager::Effect::Whirl , " u_whirl " }, { ShaderManager::Effect::Pixelate , " u_pixelate " }, { ShaderManager::Effect::Mosaic , " u_mosaic " }
4646};
4747
4848static const std::unordered_map<ShaderManager::Effect, ConverterFunc> EFFECT_CONVERTER = {
@@ -51,12 +51,13 @@ static const std::unordered_map<ShaderManager::Effect, ConverterFunc> EFFECT_CON
5151 { ShaderManager::Effect::Ghost, [](float x) { return 1 - std::clamp (x, 0 .0f , 100 .0f ) / 100 .0f ; } },
5252 { ShaderManager::Effect::Fisheye, [](float x) { return std::max (0 .0f , (x + 100 .0f ) / 100 .0f ); } },
5353 { ShaderManager::Effect::Whirl, [](float x) { return x * (float )pi / 180 .0f ; } },
54- { ShaderManager::Effect::Pixelate, [](float x) { return std::abs (x) / 10 .0f ; } }
54+ { ShaderManager::Effect::Pixelate, [](float x) { return std::abs (x) / 10 .0f ; } },
55+ { ShaderManager::Effect::Mosaic, [](float x) { return std::max (1 .0f , std::min (std::round ((std::abs (x) + 10 .0f ) / 10 .0f ), 512 .0f )); } }
5556};
5657
5758static const std::unordered_map<ShaderManager::Effect, bool > EFFECT_SHAPE_CHANGES = {
58- { ShaderManager::Effect::Color, false }, { ShaderManager::Effect::Brightness, false }, { ShaderManager::Effect::Ghost, false },
59- { ShaderManager::Effect::Fisheye , true }, { ShaderManager::Effect::Whirl , true }, { ShaderManager::Effect::Pixelate , true }
59+ { ShaderManager::Effect::Color, false }, { ShaderManager::Effect::Brightness, false }, { ShaderManager::Effect::Ghost, false }, { ShaderManager::Effect::Fisheye, true },
60+ { ShaderManager::Effect::Whirl , true }, { ShaderManager::Effect::Pixelate , true }, { ShaderManager::Effect::Mosaic , true }
6061};
6162
6263Q_GLOBAL_STATIC (ShaderManager, globalInstance)
0 commit comments