 //    var Far:Float = 100.0
 //}
 
-public class BaseRenderer {
-    
+//public class BaseRenderer {
+
 //    var colorPixelFormat: MTLPixelFormat? = .BGRA8Unorm
 //    var depthPixelFormat: MTLPixelFormat? = .Depth32Float
 //    var stencilPixelFormat: MTLPixelFormat?
     
     // this value will cycle from 0 to kInFlightCommandBuffers whenever a display completes ensuring renderer clients
     // can synchronize between kInFlightCommandBuffers count buffers, and thus avoiding a constant buffer from being overwritten between draws
-}
+//}
 
 //class MVPRenderer: BaseRenderer, Projectable, Uniformable, Perspectable {
 //    var pipelineState: MTLRenderPipelineState?

    }
    
    public func transitionRenderEncoderTo(renderer: Renderer?) -> RenderEncoderTransition? {
        if let rendererTypeId = renderer?.rendererType {
            return transitionMap[rendererTypeId]
        } else {
            //TODO: more 'eloquent' way to return here? or to structure this functions?
            return nil


//typealias ComputeEncoderTransition = ((MTLCommandBuffer, MTLComputeCommandEncoder) -> MTLComputeCommandEncoder)

public class BaseRenderer: Renderer {
    public var name: String?
    public var transitionMap: RenderEncoderTransitionMap = [:]
    public var createRenderEncoderBlock: RenderEncoderCreateMonad? = BaseRenderer.createRenderEncoderDefault()
    public var configureRenderEncoderBlock: RenderEncoderConfigureBlock?
    
    public var cullMode: MTLCullMode = .Front
