Brush mask

This commit is contained in:
luboslenco
2019-08-06 14:40:29 +02:00
parent e16f8b7964
commit a16722cd72
8 changed files with 113 additions and 67 deletions
+16 -1
View File
@@ -208,7 +208,7 @@ class MaterialBuilder {
// Non-continuous
// frag.write('float dist = distance(wposition, winp.xyz);');
}
else { // !paint3d
else { // !brush3d
frag.write('vec2 binp = inp.xy * 2.0 - 1.0;');
frag.write('binp.x *= aspectRatio;');
frag.write('binp = binp * 0.5 + 0.5;');
@@ -468,6 +468,21 @@ class MaterialBuilder {
frag.write('opacity *= textureLod(textexttool, texCoord, 0.0).r;');
}
if (UITrait.inst.brushMaskImage != null && Context.tool == ToolBrush) {
frag.add_uniform('sampler2D texbrushmask', '_texbrushmask');
frag.write('vec2 binp_mask = inp.xy * 2.0 - 1.0;');
frag.write('binp_mask.x *= aspectRatio;');
frag.write('binp_mask = binp_mask * 0.5 + 0.5;');
frag.write('vec2 pa_mask = bsp.xy - binp_mask.xy;');
frag.write('pa_mask /= brushRadius;');
if (UITrait.inst.brush3d) {
frag.add_uniform('vec3 eye', '_cameraPosition');
frag.write('pa_mask *= distance(eye, winp) / 1.5;');
}
frag.write('pa_mask = pa_mask.xy * 0.5 + 0.5;');
frag.write('opacity *= textureLod(texbrushmask, pa_mask, 0).r;');
}
if (Context.tool == ToolParticle) { // particle mask
frag.add_uniform('sampler2D texparticle', '_texparticle');
#if (kha_opengl || kha_webgl)