module Graphics.LambdaCube.Material where import Graphics.LambdaCube.Types import Graphics.LambdaCube.Technique import Graphics.LambdaCube.Texture import Graphics.LambdaCube.GpuProgram {- data Shader = Shader { shName :: String , shSource :: String , shAttach :: [String] -- , shParameter :: [ShaderParameterValue] -- , shObject :: GL.Shader s => Maybe s } data Program = Program { prVertShaderName :: Maybe String , prFragShaderName :: Maybe String --prParameters :: [ShaderParameter], -- , prObject :: Maybe GL.Program } -} --------------------------------------- -- NEW code data (Texture t, LinkedGpuProgram lp) => Material t lp = Material { mtName :: String , mtTechniques :: [Technique t lp] -- ^ All techniques, supported and unsupported , mtSupportedTechniques :: Maybe [Technique t lp] -- ^ Supported techniques of any sort {- typedef map::type LodTechniques; typedef map::type BestTechniquesBySchemeList; /** Map of scheme -> list of LOD techniques. Current scheme is set on MaterialManager, and can be set per Viewport for auto activation. */ BestTechniquesBySchemeList mBestTechniquesBySchemeList; -} , mtUserLodValues :: [FloatType] -- ^ distance list used to specify LOD , mtLodValues :: [FloatType] -- ^ distance list used to specify LOD -- const LodStrategy *mLodStrategy; , mtReceiveShadows :: Bool , mtTransparencyCastsShadows :: Bool -- /// Does this material require compilation? -- bool mCompilationRequired; , mtUnsupportedReasons :: String -- ^ Text description of why any techniques are not supported }