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
| EXCLUDE
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]
, tchLodIndex :: Int
, tchSchemeIndex :: Int
, tchName :: String
, tchGPUVendorRules :: [GPUVendorRule]
, tchGPUDeviceNameRules :: [GPUDeviceNameRule]
}