lambdacube-engine-0.2.1: Graphics/LambdaCube/Technique.hs
module Graphics.LambdaCube.Technique where
import Graphics.LambdaCube.GpuProgram
import Graphics.LambdaCube.Pass
import Graphics.LambdaCube.RenderSystemCapabilities
import Graphics.LambdaCube.Texture
data IlluminationPassesState
= IPS_COMPILE_DISABLED
| IPS_NOT_COMPILED
| IPS_COMPILED
deriving Eq
data IncludeOrExclude
= INCLUDE -- ^ Inclusive - only support if present
| EXCLUDE -- ^ Exclusive - do not support if present
deriving Eq
data GPUVendorRule
= GPUVendorRule
{ gvrVendor :: GPUVendor
, gvrIncludeOrExclude :: IncludeOrExclude
}
deriving Eq
data GPUDeviceNameRule
= GPUDeviceNameRule
{ gdrDevicePattern :: String
, gdrIncludeOrExclude :: IncludeOrExclude
, gdrCaseSensitive :: Bool
}
deriving Eq
data (Texture t, LinkedGpuProgram lp) => Technique t lp
= Technique
{ tchPasses :: [Pass t lp] -- ^ List of primary passes
, tchLodIndex :: Int -- ^ LOD level
, tchSchemeIndex :: Int -- ^ Scheme index, derived from scheme name but the names are held on MaterialManager, for speed an index is used here.
, tchName :: String -- ^ optional name for the technique
, tchGPUVendorRules :: [GPUVendorRule]
, tchGPUDeviceNameRules :: [GPUDeviceNameRule]
}