// // CRLCurvedShadow_CurveDisplacement.cikernel // // Copyright (c) 2015, 2020 Apple Inc. All rights reserved. // kernel float4 curveDisplacement(sampler src, float4 extent, float padding, float curveAmount) { float2 destCoord = destCoord(); float2 extentOrigin = extent.xy; float2 extentSize = extent.zw; float curveOffset = (2.0 * ((destCoord.x - extentOrigin.x - padding) / (extentSize.x - (padding * 2.0)))) - 1.0; float curveDisplacement = curveOffset * curveOffset; float adjustedCurveDisplacement = curveDisplacement + ((curveAmount < 0.0) ? -1.0 : 0.0); float coordAdjust = adjustedCurveDisplacement * curveAmount; float2 finalSampleCoord = samplerTransform(src, (destCoord + float2(0, coordAdjust))); float4 resultColor = sample(src, finalSampleCoord); return resultColor; }