{-# 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}