Update the shaders

Translate by (-x, -y) first, then by (x, y) to get it back to normal.
This commit is contained in:
Eryn Wells 2018-10-09 16:58:11 -07:00
parent 1b8fc1feb7
commit 141eee69ee
2 changed files with 4 additions and 3 deletions

View file

@ -307,9 +307,9 @@ public class Field {
// Create a transform matrix to handle it
let dx = Float(size.x) / 2.0
let dy = Float(size.y) / 2.0
let translate = Matrix3x3.translation(dx: dx, dy: dy)
let translate = Matrix3x3.translation(dx: -dx, dy: -dy)
let rotate = Matrix3x3.rotation(angle: rotation)
let invTranslate = Matrix3x3.translation(dx: -dx, dy: -dy)
let invTranslate = Matrix3x3.translation(dx: dx, dy: dy)
parameters.colorTransform = invTranslate * rotate * translate
// Save the value to defaults
defaults.colorRotation = rotation

View file

@ -89,7 +89,8 @@ sampleToColorShader(RasterizerData in [[stage_in]],
out = singleColor(sample, target, feather, parameters.colors[0]);
break;
case Gradient2Horizontal: {
const float blend = in.position.x / parameters.size[0];
const float3 transformedColor = (parameters.colorTransform * float3(in.position.xy, 1.0));
const float blend = transformedColor.x / parameters.size[0];
out = gradient2(sample, target, feather, blend, parameters.colors[0], parameters.colors[1]);
break;
}