public class MaskedCircleFadeRenderable: ConfiguredQuadRenderable<MaskedCircleFadeRenderable.Config> {
    public struct Config: QuadRenderConfiguration {
        let radius: ADFloat
        let scale: ADFloat
        let fade_start: ADFloat
        let fade_end: ADFloat
        let x_offset: ADFloat
        let y_offset: ADFloat
        let invert_mix: ADFloat

        public init(
            radius: ADFloat = 0.2,
            scale: ADFloat = 1.0,
            fadeStart: ADFloat = 0.0,
            fadeEnd: ADFloat = 0.1,
            xOffset: ADFloat = 0.0,
            yOffset: ADFloat = 0.0,
            invertMix: ADFloat = 0.0
        ) {
            self.radius = radius
            self.scale = scale
            self.fade_start = fadeStart
            self.fade_end = fadeEnd
            self.x_offset = xOffset
            self.y_offset = yOffset
            self.invert_mix = invertMix
        }

        public static var defaultConfiguration: Config {
            return Config()
        }
    }

    override public var configureAction: ConfigureAction {
        return { encoder in
            super.configureAction(encoder)
        }
    }

    override var fragmentShaderName: String {
        return "masking_circle_fade_frag"
    }
}
