Improve directional brush
This commit is contained in:
@@ -61,8 +61,17 @@ class MakeBrush {
|
||||
frag.write('pa += wn * vec3(planeDist, planeDist, planeDist);');
|
||||
}
|
||||
frag.write('vec3 ba = winplast.xyz - winp.xyz;');
|
||||
frag.write('float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);');
|
||||
frag.write('float dist = length(pa - ba * h);');
|
||||
|
||||
if (UISidebar.inst.brushLazyRadius > 0 && UISidebar.inst.brushLazyStep > 0) {
|
||||
// Sphere
|
||||
frag.write('float dist = distance(wposition, winp.xyz);');
|
||||
}
|
||||
else {
|
||||
// Capsule
|
||||
frag.write('float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0);');
|
||||
frag.write('float dist = length(pa - ba * h);');
|
||||
}
|
||||
|
||||
frag.write('if (dist > brushRadius) discard;');
|
||||
}
|
||||
else { // !brush3d
|
||||
|
||||
@@ -214,12 +214,12 @@ class MakePaint {
|
||||
|
||||
if (UISidebar.inst.brushMaskImage != null && Context.tool == ToolDecal) {
|
||||
frag.add_uniform('sampler2D texbrushmask', '_texbrushmask');
|
||||
frag.write('vec4 mask_sample = textureLod(texbrushmask, texCoord, 0.0);');
|
||||
frag.write('vec4 mask_sample = textureLod(texbrushmask, uvsp, 0.0);');
|
||||
frag.write('opacity *= mask_sample.r * mask_sample.a;');
|
||||
}
|
||||
else if (Context.tool == ToolText) {
|
||||
frag.add_uniform('sampler2D textexttool', '_textexttool');
|
||||
frag.write('opacity *= textureLod(textexttool, texCoord, 0.0).r;');
|
||||
frag.write('opacity *= textureLod(textexttool, uvsp, 0.0).r;');
|
||||
}
|
||||
|
||||
if (UISidebar.inst.brushStencilImage != null && (
|
||||
|
||||
Reference in New Issue
Block a user