module Graphics.LambdaCube.GpuProgram where import Graphics.LambdaCube.GpuProgramParams data GpuProgramType = GPT_VERTEX_PROGRAM | GPT_FRAGMENT_PROGRAM | GPT_GEOMETRY_PROGRAM deriving (Eq,Ord) class Ord p => GpuProgram p class Ord lp => LinkedGpuProgram lp data GpuProgram p => GpuProgramDescriptor p = GpuProgramDescriptor { gpdName :: String , gpdType :: GpuProgramType -- ^ The type of the program , gpdFilename :: String -- ^ The name of the file to load source from (may be blank) , gpdSyntaxCode :: String -- ^ Syntax code e.g. arbvp1, vs_2_0 etc , gpdAttach :: [String] , gpdSkeletalAnimation :: Bool -- ^ Does this (vertex) program include skeletal animation? , gpdMorphAnimation :: Bool -- ^ Does this (vertex) program include morph animation? , gpdPoseAnimation :: Int -- ^ Does this (vertex) program include pose animation (count of number of poses supported) , gpdVertexTextureFetch :: Bool -- ^ Does this (vertex) program require support for vertex texture fetch? , gpdNeedsAdjacencyInfo :: Bool -- ^ Does this (geometry) program require adjacency information? , gpdDefaultParams :: GpuProgramParameters -- ^ The default parameters for use with this object , gpdGpuProgram :: Maybe p }