From 141eee69eeab1096e586e973de93456dda988cfe Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Tue, 9 Oct 2018 16:58:11 -0700 Subject: [PATCH] Update the shaders Translate by (-x, -y) first, then by (x, y) to get it back to normal. --- MetaballsKit/Metaballs.swift | 4 ++-- MetaballsKit/Shaders.metal | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/MetaballsKit/Metaballs.swift b/MetaballsKit/Metaballs.swift index cceb5f1..a679234 100644 --- a/MetaballsKit/Metaballs.swift +++ b/MetaballsKit/Metaballs.swift @@ -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 diff --git a/MetaballsKit/Shaders.metal b/MetaballsKit/Shaders.metal index ad1038a..b1ab61e 100644 --- a/MetaballsKit/Shaders.metal +++ b/MetaballsKit/Shaders.metal @@ -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; }