Files
loop/src/Preload/Update.hs
T

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}