keid-render-basic-0.1.12.0: src/Global/Resource/Texture/Base.hs
{-# LANGUAGE DeriveAnyClass #-}
module Global.Resource.Texture.Base
( Collection(..)
, Textures
, sources
, indices
) where
import RIO
import GHC.Generics (Generic1)
import Resource.Collection (Generically1(..))
import Resource.Collection qualified as Collection
import Resource.Source (Source)
import Resource.Source qualified as Source
import Resource.Texture (Texture, Flat)
import Global.Resource.Texture.Base.Paths qualified as Paths
data Collection a = Collection
{ black :: a -- ^ pure black / fallback texture at index 0
, flat :: a -- ^ normal fallback texture
, ibl_brdf_lut :: a -- ^ BRDF LUT for PBR shaders
, white :: a -- ^ pure white
}
deriving stock (Show, Functor, Foldable, Traversable, Generic1)
deriving Applicative via Generically1 Collection
type Textures = Collection (Texture Flat)
sources :: Collection Source
sources = Collection
{ black = $(Source.embedFile Paths.BLACK_KTX2)
, flat = $(Source.embedFile Paths.FLAT_KTX2)
, ibl_brdf_lut = $(Source.embedFile Paths.IBL_BRDF_LUT_KTX2)
, white = $(Source.embedFile Paths.WHITE_KTX2)
}
indices :: Collection Int32
indices = fmap fst $ Collection.enumerate sources