diff --git a/Sources/arm/node/MakePaint.hx b/Sources/arm/node/MakePaint.hx index 1b1f36ca..d4e54956 100644 --- a/Sources/arm/node/MakePaint.hx +++ b/Sources/arm/node/MakePaint.hx @@ -251,8 +251,8 @@ class MakePaint { } var angle = UISidebar.inst.brushAngle + UISidebar.inst.brushNodesAngle; if (angle != 0.0) { - var a = angle * (Math.PI / 180); - frag.write('pa_mask.xy = vec2(pa_mask.x * ${Math.cos(a)} - pa_mask.y * ${Math.sin(a)}, pa_mask.x * ${Math.sin(a)} + pa_mask.y * ${Math.cos(a)});'); + frag.add_uniform('vec2 brushAngle', '_brushAngle'); + frag.write('pa_mask.xy = vec2(pa_mask.x * brushAngle.x - pa_mask.y * brushAngle.y, pa_mask.x * brushAngle.y + pa_mask.y * brushAngle.x);'); } frag.write('pa_mask /= brushRadius;'); if (UISidebar.inst.brush3d) { diff --git a/Sources/arm/node/MakeTexcoord.hx b/Sources/arm/node/MakeTexcoord.hx index e5fee7ab..428b0bcf 100644 --- a/Sources/arm/node/MakeTexcoord.hx +++ b/Sources/arm/node/MakeTexcoord.hx @@ -29,8 +29,8 @@ class MakeTexcoord { var angle = UISidebar.inst.brushAngle + UISidebar.inst.brushNodesAngle; var uvAngle = Context.layer.material_mask != null ? Context.layer.angle : angle; if (uvAngle != 0.0) { - var a = uvAngle * (Math.PI / 180); - frag.write_attrib('uvsp = vec2(uvsp.x * ${Math.cos(a)} - uvsp.y * ${Math.sin(a)}, uvsp.x * ${Math.sin(a)} + uvsp.y * ${Math.cos(a)});'); + frag.add_uniform('vec2 brushAngle', '_brushAngle'); + frag.write_attrib('uvsp = vec2(uvsp.x * brushAngle.x - uvsp.y * brushAngle.y, uvsp.x * brushAngle.y + uvsp.y * brushAngle.x);'); } frag.add_uniform('float brushScaleX', '_brushScaleX'); @@ -54,8 +54,8 @@ class MakeTexcoord { var angle = UISidebar.inst.brushAngle + UISidebar.inst.brushNodesAngle; var uvAngle = Context.layer.material_mask != null ? Context.layer.angle : angle; if (uvAngle > 0.0) { - var a = uvAngle * (Math.PI / 180); - vert.write('texCoord = vec2(texCoord.x * ${Math.cos(a)} - texCoord.y * ${Math.sin(a)}, texCoord.x * ${Math.sin(a)} + texCoord.y * ${Math.cos(a)});'); + vert.add_uniform('vec2 brushAngle', '_brushAngle'); + vert.write('texCoord = vec2(texCoord.x * brushAngle.x - texCoord.y * brushAngle.y, texCoord.x * brushAngle.y + texCoord.y * brushAngle.x);'); } } else { // Triplanar diff --git a/Sources/arm/render/Uniforms.hx b/Sources/arm/render/Uniforms.hx index fa5411e5..c6495f45 100644 --- a/Sources/arm/render/Uniforms.hx +++ b/Sources/arm/render/Uniforms.hx @@ -127,6 +127,13 @@ class Uniforms { vec2.set(UISidebar.inst.cloneDeltaX, UISidebar.inst.cloneDeltaY, 0); return vec2; } + if (link == "_brushAngle") { + var brushAngle = UISidebar.inst.brushAngle + UISidebar.inst.brushNodesAngle; + var angle = Context.layer.material_mask != null ? Context.layer.angle : brushAngle; + angle *= (Math.PI / 180); + vec2.set(Math.cos(angle), Math.sin(angle), 0); + return vec2; + } #end return null; }