refactor SamplerState, introduce SamplerSettings