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
, gpdFilename :: String
, gpdSyntaxCode :: String
, gpdAttach :: [String]
, gpdSkeletalAnimation :: Bool
, gpdMorphAnimation :: Bool
, gpdPoseAnimation :: Int
, gpdVertexTextureFetch :: Bool
, gpdNeedsAdjacencyInfo :: Bool
, gpdDefaultParams :: GpuProgramParameters
, gpdGpuProgram :: Maybe p
}