Make cursors and select tools visible without special blend modes
This commit is contained in:
parent
bd4d662dd9
commit
c85fb11636
8 changed files with 39 additions and 48 deletions
|
|
@ -2,37 +2,10 @@
|
|||
#include "DrawingProgram/DrawingProgram.hpp"
|
||||
#include <Helpers/HsvRgb.hpp>
|
||||
#include "MainProgram.hpp"
|
||||
#include "Helpers/Networking/NetLibrary.hpp"
|
||||
#include "World.hpp"
|
||||
|
||||
using namespace NetworkingObjects;
|
||||
|
||||
const char* visibleBlendModeCode = R"V(
|
||||
vec4 main(vec4 src, vec4 dst) {
|
||||
float value = max(max(dst.x, dst.y), dst.z) / dst.a;
|
||||
vec4 actualSrc;
|
||||
if(value > 0.6)
|
||||
actualSrc = vec4(vec3(0.0), src.a);
|
||||
else
|
||||
actualSrc = vec4(src.a);
|
||||
return actualSrc + (1.0 - actualSrc.a) * dst;
|
||||
}
|
||||
)V";
|
||||
|
||||
sk_sp<SkBlender> CanvasTheme::get_visible_blend_mode() {
|
||||
static sk_sp<SkBlender> blender = nullptr;
|
||||
if(!blender) {
|
||||
auto effect = SkRuntimeEffect::MakeForBlender(SkString(visibleBlendModeCode));
|
||||
if(!effect.effect) {
|
||||
std::cout << "[CanvasTheme::get_visible_blend_mode] " << " blender construction error\n";
|
||||
std::cout << effect.errorText.c_str() << std::endl;
|
||||
throw std::runtime_error("Shader Compile Failure");
|
||||
}
|
||||
blender = effect.effect->makeBlender(nullptr);
|
||||
}
|
||||
return blender;
|
||||
}
|
||||
|
||||
CanvasTheme::CanvasTheme(World& w):
|
||||
world(w)
|
||||
{}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue