Rotate by angle for project and triplanar coords
This commit is contained in:
@@ -11,19 +11,25 @@ class MakeTexcoord {
|
||||
var fillLayer = Context.layer.fill_layer != null;
|
||||
var uvType = fillLayer ? Context.layer.uvType : Context.brushPaint;
|
||||
var decal = Context.tool == ToolDecal || Context.tool == ToolText;
|
||||
var angle = Context.brushAngle + Context.brushNodesAngle;
|
||||
var uvAngle = fillLayer ? Context.layer.angle : angle;
|
||||
|
||||
// TexCoords - project
|
||||
if (uvType == UVProject || decal) {
|
||||
if (uvType == UVProject || decal) { // TexCoords - project
|
||||
frag.add_uniform('float brushScale', '_brushScale');
|
||||
frag.write_attrib('vec2 uvsp = sp.xy;');
|
||||
|
||||
if (fillLayer) { // Decal layer
|
||||
frag.write_attrib('if (uvsp.x < 0.0 || uvsp.y < 0.0 || uvsp.x > 1.0 || uvsp.y > 1.0) discard;');
|
||||
|
||||
if (uvAngle != 0.0) {
|
||||
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.n = true;
|
||||
frag.add_uniform('vec3 decalLayerNor', '_decalLayerNor');
|
||||
var angle = Context.brushAngleRejectDot;
|
||||
frag.write('if (abs(dot(n, decalLayerNor) - 1.0) > $angle) discard;');
|
||||
var dotAngle = Context.brushAngleRejectDot;
|
||||
frag.write('if (abs(dot(n, decalLayerNor) - 1.0) > $dotAngle) discard;');
|
||||
|
||||
frag.wposition = true;
|
||||
frag.add_uniform('vec3 decalLayerLoc', '_decalLayerLoc');
|
||||
@@ -42,8 +48,7 @@ class MakeTexcoord {
|
||||
frag.write_attrib('if (brushDirection.z == 0.0) discard;');
|
||||
frag.write_attrib('uvsp = vec2(uvsp.x * brushDirection.x - uvsp.y * brushDirection.y, uvsp.x * brushDirection.y + uvsp.y * brushDirection.x);');
|
||||
}
|
||||
var angle = Context.brushAngle + Context.brushNodesAngle;
|
||||
var uvAngle = Context.layer.fill_layer != null ? Context.layer.angle : angle;
|
||||
|
||||
if (uvAngle != 0.0) {
|
||||
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);');
|
||||
@@ -58,6 +63,11 @@ class MakeTexcoord {
|
||||
}
|
||||
else {
|
||||
frag.write_attrib('uvsp.x *= aspectRatio;');
|
||||
|
||||
if (uvAngle != 0.0) {
|
||||
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.write_attrib('vec2 texCoord = uvsp * brushScale;');
|
||||
@@ -67,14 +77,12 @@ class MakeTexcoord {
|
||||
vert.add_out('vec2 texCoord');
|
||||
vert.write('texCoord = tex * brushScale;');
|
||||
|
||||
var angle = Context.brushAngle + Context.brushNodesAngle;
|
||||
var uvAngle = Context.layer.fill_layer != null ? Context.layer.angle : angle;
|
||||
if (uvAngle > 0.0) {
|
||||
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
|
||||
else { // TexCoords - triplanar
|
||||
frag.wposition = true;
|
||||
frag.n = true;
|
||||
frag.add_uniform('float brushScale', '_brushScale');
|
||||
@@ -85,6 +93,13 @@ class MakeTexcoord {
|
||||
frag.write_attrib('vec2 texCoord = wposition.yz * brushScale * 0.5;');
|
||||
frag.write_attrib('vec2 texCoord1 = wposition.xz * brushScale * 0.5;');
|
||||
frag.write_attrib('vec2 texCoord2 = wposition.xy * brushScale * 0.5;');
|
||||
|
||||
if (uvAngle != 0.0) {
|
||||
frag.add_uniform('vec2 brushAngle', '_brushAngle');
|
||||
frag.write_attrib('texCoord = vec2(texCoord.x * brushAngle.x - texCoord.y * brushAngle.y, texCoord.x * brushAngle.y + texCoord.y * brushAngle.x);');
|
||||
frag.write_attrib('texCoord1 = vec2(texCoord1.x * brushAngle.x - texCoord1.y * brushAngle.y, texCoord1.x * brushAngle.y + texCoord1.y * brushAngle.x);');
|
||||
frag.write_attrib('texCoord2 = vec2(texCoord2.x * brushAngle.x - texCoord2.y * brushAngle.y, texCoord2.x * brushAngle.y + texCoord2.y * brushAngle.x);');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user