{-# LANGUAGE StrictData
  , TemplateHaskell 
  #-}
--{-# OPTIONS_GHC -Wno-unused-top-binds #-}
module Data.Preload.Render
    where
import Shader.Data

import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
import Control.Lens
import qualified Data.Vector.Mutable as MV
import Control.Monad.Primitive

data RenderData = RenderData
    { _lightingWallShadShader    :: FullShader
    , _lightingLineShadowShader :: FullShader
    , _lightingCapShader        :: FullShader
    , _wallBlankShader          :: FullShader
    , _windowShader             :: FullShader
    , _wallTextureShader        :: FullShader
    , _textureArrayShader       :: FullShader
    , _fullscreenShader         :: FullShader
    , _fullLightingShader       :: FullShader
    --, _fullscreenAlphaHalveShader         :: FullShader
    , _bloomBlurShader          :: FullShader
    , _colorBlurShader          :: FullShader
    , _barrelShader             :: FullShader
    , _grayscaleShader          :: FullShader
    , _shapeShader              :: FullShader
    , _shapeEBO :: EBO
    , _silhouetteEBO :: EBO
    , _pictureShaders           :: MV.MVector (PrimState IO) FullShader
    , _fbo2                     :: (FramebufferObject, TextureObject)
    , _fbo3                     :: (FramebufferObject, TextureObject)
    , _fboHalf1 :: (FramebufferObject, TextureObject)
    , _fboHalf2 :: (FramebufferObject, TextureObject)
    , _fboHalf3 :: (FramebufferObject, TextureObject)
    , _fboBase                  :: (FramebufferObject, (TextureObject, TextureObject))
    , _fboCloud                 :: (FramebufferObject, (TextureObject, TextureObject))
    , _fboBloom                 :: (FramebufferObject, TextureObject)
    , _fboColor                 :: (FramebufferObject, TextureObject)
    , _fboPos                   :: (FramebufferObject, TextureObject)
    , _rboBaseBloom             :: RenderbufferObject
    , _fboLighting              :: (FramebufferObject, TextureObject)
    , _fboLightingHigh          :: (FramebufferObject, TextureObject)
    , _matUBO                   :: BufferObject
    }
makeLenses ''RenderData

