42 lines
1.4 KiB
Haskell
42 lines
1.4 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module Preload.Update (
|
|
updatePreload,
|
|
renderDataResizeUpdate,
|
|
) where
|
|
|
|
import Control.Lens
|
|
import qualified Data.ByteString as BS
|
|
import qualified Data.ByteString.Char8 as BSC
|
|
import Data.Preload.Render
|
|
import Dodge.Data.Universe
|
|
import Dodge.WindowSize
|
|
import Framebuffer.Update
|
|
import Shader.Compile
|
|
import Shader.Data
|
|
|
|
-- i don't like this being here pulling in the dodge universe dependency, but
|
|
-- splitting it out would be overkill
|
|
updatePreload :: Universe -> IO Universe
|
|
updatePreload u =
|
|
(preloadData . renderData)
|
|
(renderDataResizeUpdate (u ^. uvConfig))
|
|
u
|
|
|
|
renderDataResizeUpdate :: Config -> RenderData -> IO RenderData
|
|
renderDataResizeUpdate cfig rdata = do
|
|
rdata' <- sizeFBOs cfig rdata
|
|
bbVert <- BS.readFile "shader/texture/bloomBlur.vert"
|
|
bbFrag <- BS.readFile "shader/texture/bloomBlur.frag"
|
|
let (xsize, ysize) = getWindowSize _gr_downsize_res cfig :: (Int, Int)
|
|
(bh, bmid) = BS.breakSubstring "(" bbFrag
|
|
(_, btt) = BS.breakSubstring ")" bmid
|
|
bbFrag' = BS.append bh $ BS.append (BSC.pack $ '(' : show xsize ++ "," ++ show ysize) btt
|
|
bbShad <-
|
|
makeByteStringShaderUsingVAO
|
|
"bloomBlur"
|
|
[(vert, bbVert), (frag, bbFrag')]
|
|
pmTriangleStrip
|
|
(rdata ^. screenTextureVAO)
|
|
return rdata'{_bloomBlurShader = bbShad}
|