{-# LANGUAGE OverloadedStrings #-} module Preload.Update ( updatePreload, renderDataResizeUpdate, ) where import Linear 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 V2 xsize ysize = getWindowSize _gr_downsize_res cfig :: V2 Int (bh, bmid) = BS.breakSubstring "(" bbFrag (_, btt) = BS.breakSubstring ")" bmid bbFrag' = BS.append bh $ BS.append (BSC.pack $ '(' : show xsize ++ "," ++ show ysize) btt bbShad <- makeShaderProgram "bloomBlur" [(vert, bbVert), (frag, bbFrag')] return rdata'{_bloomBlurShader = bbShad}