public class MaskedRepeatCircleRenderable: ConfiguredQuadRenderable<MaskedRepeatCircleRenderable.Config> {
    public struct Config: QuadRenderConfiguration {
        let radius: ADFloat
        let space_scale: ADFloat
        let space_rotation: ADFloat

        let pattern_one_and_one_mix: ADFloat
        let x_offset: ADFloat
        let y_offset: ADFloat
        let invert_mix: ADFloat

        public init(
            circleRadius: ADFloat = 0.5,
            spaceScale: ADFloat = 1.0,
            spaceRotation: ADFloat = 0.0,
            patternOneAndOneMix: ADFloat = 0.0,
            xOffset: ADFloat = 0.0,
            yOffset: ADFloat = 0.0,
            invertMix: ADFloat = 0.0
        ) {
            radius = circleRadius
            space_scale = spaceScale
            space_rotation = spaceRotation
            pattern_one_and_one_mix = patternOneAndOneMix
            x_offset = xOffset
            y_offset = yOffset
            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_repeat_circle_frag"
    }
}
