Progress towards downscaling bloom texture
This commit is contained in:
+22
-17
@@ -55,8 +55,10 @@ preloadRender = do
|
||||
fsShad <- makeShader "texture/simple" [vert,frag] [2,2] ETriangleStrip $ const cornerList
|
||||
-- note we directly poke the shader vertex data here
|
||||
pokeArray (_vboPointer $ _vaoVBO $ _shaderVAO fsShad) $ concat cornerList
|
||||
boxBlurShad <- makeShader "texture/bloomBlur" [vert,frag] [2,2] ETriangleStrip $ const cornerList
|
||||
pokeArray (_vboPointer $ _vaoVBO $ _shaderVAO boxBlurShad) $ concat cornerList
|
||||
bloomBlurShad <- makeShader "texture/bloomBlur" [vert,frag] [2,2] ETriangleStrip $ const cornerList
|
||||
pokeArray (_vboPointer $ _vaoVBO $ _shaderVAO bloomBlurShad) $ concat cornerList
|
||||
colorBlurShad <- makeShader "texture/colorBlur" [vert,frag] [2,2] ETriangleStrip $ const cornerList
|
||||
pokeArray (_vboPointer $ _vaoVBO $ _shaderVAO colorBlurShad) $ concat cornerList
|
||||
grayscaleShad <- makeShader "texture/grayscale" [vert,frag] [2,2] ETriangleStrip $ const cornerList
|
||||
pokeArray (_vboPointer $ _vaoVBO $ _shaderVAO grayscaleShad) $ concat cornerList
|
||||
-- blank wallShader
|
||||
@@ -70,13 +72,13 @@ preloadRender = do
|
||||
---- texture array shader
|
||||
textArrayShad <- makeShader "texture/array" [vert,frag] [3,3] ETriangles poke33
|
||||
>>= addTextureArray "data/texture/ayene_wooden_floor.png"
|
||||
-- bind fixed vertex data
|
||||
bindShaderBuffers [bloomBlurShad,colorBlurShad,fullscreenAlphaHalveShad ] [4,4,4]
|
||||
-- framebuffer for lighting
|
||||
(fbo,fboTO,fboRBO) <- setupFramebufferWithStencil
|
||||
framebuf2 <- setupFramebufferWithStencil
|
||||
framebuf3 <- setupFramebufferWithStencil
|
||||
|
||||
frameBufs <- setupFramebuffersSharedStencil 6
|
||||
|
||||
rboLightingName <- genObjectName
|
||||
bindRenderbuffer Renderbuffer $= rboLightingName
|
||||
renderbufferStorage Renderbuffer Depth24Stencil8 (RenderbufferSize 800 600)
|
||||
@@ -88,6 +90,10 @@ preloadRender = do
|
||||
|
||||
fboBaseName <- newFramebufferGivenStencil rboBaseBloomName
|
||||
fboBloomName <- newFramebufferGivenStencil rboBaseBloomName
|
||||
fboColorName <- newFramebufferGivenStencil rboBaseBloomName
|
||||
|
||||
fboFourth1Name <- setupTextureFramebuffer 600 600
|
||||
fboFourth2Name <- setupTextureFramebuffer 600 600
|
||||
|
||||
-- reset to default framebuffer, ready for drawing direct to screen
|
||||
bindFramebuffer Framebuffer $= defaultFramebufferObject
|
||||
@@ -108,18 +114,21 @@ preloadRender = do
|
||||
, _textureArrayShader = textArrayShad
|
||||
, _fullscreenShader = fsShad
|
||||
, _fullscreenAlphaHalveShader = fullscreenAlphaHalveShad
|
||||
, _boxBlurShader = boxBlurShad
|
||||
, _bloomBlurShader = bloomBlurShad
|
||||
, _colorBlurShader = colorBlurShad
|
||||
, _grayscaleShader = grayscaleShad
|
||||
, _spareFBO = fbo
|
||||
, _fboTexture = fboTO
|
||||
, _fboRenderbufferObject = fboRBO
|
||||
, _fbo2 = framebuf2
|
||||
, _fbo3 = framebuf3
|
||||
, _fbos = frameBufs
|
||||
, _fboFourth1 = fboFourth1Name
|
||||
, _fboFourth2 = fboFourth2Name
|
||||
, _fboLighting = fboLightingName
|
||||
, _rboLighting = rboLightingName
|
||||
, _fboBase = fboBaseName
|
||||
, _fboBloom = fboBloomName
|
||||
, _fboColor = fboColorName
|
||||
, _rboBaseBloom = rboBaseBloomName
|
||||
, _matUBO = theUBO
|
||||
}
|
||||
@@ -186,27 +195,23 @@ newFramebufferGivenStencil rboName = do
|
||||
print fboStatus
|
||||
return (fboName,toName)
|
||||
|
||||
|
||||
setupFramebuffer :: IO (FramebufferObject, TextureObject)
|
||||
setupFramebuffer = do
|
||||
setupTextureFramebuffer
|
||||
:: GLsizei
|
||||
-> GLsizei
|
||||
-> IO (FramebufferObject, TextureObject)
|
||||
setupTextureFramebuffer x y = do
|
||||
fboName <- genObjectName
|
||||
bindFramebuffer Framebuffer $= fboName
|
||||
|
||||
fboTO <- genObjectName
|
||||
textureBinding Texture2D $= Just fboTO
|
||||
texImage2D Texture2D NoProxy 0 RGBA8 (TextureSize2D 600 600) 0 (PixelData RGBA UnsignedByte nullPtr)
|
||||
texImage2D Texture2D NoProxy 0 RGBA8 (TextureSize2D x y) 0 (PixelData RGBA UnsignedByte nullPtr)
|
||||
textureFilter Texture2D $= ((Linear',Just Linear') , Linear')
|
||||
--textureFilter Texture2D $= ((Nearest,Just Nearest) , Nearest)
|
||||
generateMipmap' Texture2D
|
||||
framebufferTexture2D Framebuffer (ColorAttachment 0) Texture2D fboTO 0
|
||||
|
||||
fboRBO <- genObjectName
|
||||
bindRenderbuffer Renderbuffer $= fboRBO
|
||||
renderbufferStorage Renderbuffer Depth24Stencil8 (RenderbufferSize 600 600)
|
||||
framebufferRenderbuffer Framebuffer DepthStencilAttachment Renderbuffer fboRBO
|
||||
|
||||
fboStatus <- framebufferStatus Framebuffer
|
||||
print fboStatus
|
||||
|
||||
return (fboName, fboTO)
|
||||
|
||||
cleanUpRenderPreload :: RenderData -> IO ()
|
||||
|
||||
@@ -36,11 +36,10 @@ resizeSpareFBO xsize ysize xfull yfull pdata = do
|
||||
putStrLn $ "after resize, framebuffer status:" ++ show fboStatus
|
||||
resizeTextureFBO (_fbo2 rdata) xfull yfull
|
||||
resizeTextureFBO (_fbo3 rdata) xfull yfull
|
||||
resizeRBO (snd $ _fbos rdata) xfull yfull
|
||||
mapM_ (\p -> resizeFBOTO p xfull yfull) (fst $ _fbos rdata)
|
||||
resizeRBO (_rboBaseBloom rdata) xfull yfull
|
||||
resizeFBOTO (_fboBase rdata) xfull yfull
|
||||
resizeFBOTO (_fboBloom rdata) xfull yfull
|
||||
resizeFBOTO (_fboColor rdata) xfull yfull
|
||||
resizeRBO (_rboLighting rdata) xsize ysize
|
||||
resizeFBOTO (_fboLighting rdata) xsize ysize
|
||||
|
||||
|
||||
Reference in New Issue
Block a user