Refactor framebuffer update

This commit is contained in:
2023-03-24 13:14:49 +00:00
parent bd9f32875e
commit 4d09927d42
9 changed files with 59 additions and 83 deletions
+8 -5
View File
@@ -115,8 +115,8 @@ preloadRender = do
cloudvbo <- setupVBO (sum cloudverxsizes)
(cloudshader, cloudebo)
<- makeShaderEBO "cloud/basic" [vert, frag] cloudverxsizes pmTriangles cloudvbo
framebuf2 <- setupTextureFramebuffer 800 600
framebuf3 <- setupTextureFramebuffer 800 600
framebuf2 <- newTextureFramebuffer
framebuf3 <- newTextureFramebuffer
rboBaseBloomName <- mglCreate glCreateRenderbuffers
glNamedRenderbufferStorage
@@ -133,9 +133,11 @@ preloadRender = do
fboShadowName <- setupShadowFramebuffer
fboHalf1Name <- setupTextureFramebuffer 300 300
fboHalf2Name <- setupTextureFramebuffer 300 300
fboHalf3Name <- setupTextureFramebuffer 300 300
fbooverlay <- newTextureFramebuffer
fboHalf1Name <- newTextureFramebuffer
fboHalf2Name <- newTextureFramebuffer
fboHalf3Name <- newTextureFramebuffer
-- reset to default framebuffer, ready for drawing direct to screen
glBindFramebuffer GL_FRAMEBUFFER 0
@@ -183,6 +185,7 @@ preloadRender = do
, _fboCloud = fboCloudName
, _fboBloom = fboBloomName
, _fboPos = fboPosName
, _fboOverlay = fbooverlay
, _rboBaseBloom = rboBaseBloomName
, _matUBO = theUBO
, _orthonormalMatUBO = orthonormalUBO
+8 -7
View File
@@ -5,12 +5,12 @@ module Preload.Update (
renderDataResizeUpdate,
) where
import Dodge.WindowSize
import Dodge.Data.Universe
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
@@ -18,9 +18,10 @@ 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 = do
pdata <- renderDataResizeUpdate (u ^. uvConfig) (u ^. preloadData . renderData)
return $ u & preloadData . renderData .~ pdata
updatePreload u =
(preloadData . renderData)
(renderDataResizeUpdate (u ^. uvConfig))
u
renderDataResizeUpdate ::
Configuration ->
@@ -30,7 +31,7 @@ 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 _graphics_downsize_resolution cfig :: (Int,Int)
let (xsize, ysize) = getWindowSize _graphics_downsize_resolution 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
@@ -40,4 +41,4 @@ renderDataResizeUpdate cfig rdata = do
[(vert, bbVert), (frag, bbFrag')]
pmTriangleStrip
(rdata ^. screenTextureVAO)
return (rdata'{_bloomBlurShader = bbShad})
return rdata'{_bloomBlurShader = bbShad}