Use downscaling to sixteenth res for bloom
This commit is contained in:
@@ -29,8 +29,8 @@ data RenderData = RenderData
|
||||
, _silhouetteEBO :: UintBO
|
||||
, _pictureShaders :: MV.MVector (PrimState IO) (GLuint,VBO)
|
||||
, _fboFullscreen :: (FBO,TO)
|
||||
, _fboHalf1 :: (FBO, TO)
|
||||
, _fboHalf2 :: (FBO, TO)
|
||||
, _fboHalf :: (FBO, TO)
|
||||
, _fboQuarter :: (FBO, TO)
|
||||
, _fboBase :: (FBO, (TO, TO, TO))
|
||||
, _fboCloud :: (FBO, (TO, TO, TO))
|
||||
, _fboWindow :: (FBO, (TO, TO))
|
||||
|
||||
+15
-9
@@ -205,7 +205,7 @@ doDrawing' win pdata u = do
|
||||
|
||||
--setup downscale viewport for blurring bloom
|
||||
setViewport _gr_downsize_res cfig
|
||||
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboHalf1 pdata)))
|
||||
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboHalf pdata)))
|
||||
glDepthFunc GL_ALWAYS
|
||||
glBindTextureUnit 0 (pdata ^. fboBloom . _2 . unTO)
|
||||
glGenerateTextureMipmap (pdata ^. fboBloom . _2 . unTO)
|
||||
@@ -221,13 +221,19 @@ doDrawing' win pdata u = do
|
||||
glUseProgram (_bloomBlurShader pdata)
|
||||
--glDrawArrays GL_TRIANGLES 0 6
|
||||
glDrawArrays GL_TRIANGLES 0 3
|
||||
when (cfig ^. gr_bloom) $ do
|
||||
replicateM_ 1 $
|
||||
pingPongBetween
|
||||
(_fboHalf1 pdata)
|
||||
(_fboHalf2 pdata)
|
||||
(_bloomBlurShader pdata)
|
||||
glEnable GL_BLEND
|
||||
glBindFramebuffer GL_FRAMEBUFFER $ pdata ^. fboQuarter . _1 . unFBO
|
||||
glGenerateTextureMipmap (pdata ^. fboHalf . _2 . unTO)
|
||||
glBindTextureUnit 0 (pdata ^. fboHalf . _2 . unTO)
|
||||
setViewport (const SixteenthRes) cfig
|
||||
glDrawArrays GL_TRIANGLES 0 3
|
||||
glEnable GL_BLEND
|
||||
-- when (cfig ^. gr_bloom) $ do
|
||||
-- replicateM_ 1 $
|
||||
-- pingPongBetween
|
||||
-- (_fboHalf1 pdata)
|
||||
-- (_fboHalf2 pdata)
|
||||
-- (_bloomBlurShader pdata)
|
||||
-- glEnable GL_BLEND
|
||||
setViewport _gr_world_res cfig
|
||||
--draw clouds onto cloud buffer
|
||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboCloud . _1 . unFBO)
|
||||
@@ -354,7 +360,7 @@ doDrawing' win pdata u = do
|
||||
glEnable GL_BLEND
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE
|
||||
--glBlendFunc GL_ONE GL_ONE
|
||||
glBindTextureUnit 0 (_unTO . snd $ _fboHalf1 pdata)
|
||||
glBindTextureUnit 0 (_unTO . snd $ _fboQuarter pdata)
|
||||
glUseProgram (pdata ^. fullscreenShader)
|
||||
--glDrawArrays GL_TRIANGLES 0 6
|
||||
glDrawArrays GL_TRIANGLES 0 3
|
||||
|
||||
@@ -66,7 +66,6 @@ sizeFBOs cfig rdata =
|
||||
GL_LINEAR_MIPMAP_LINEAR
|
||||
GL_LINEAR
|
||||
GL_RGBA16F
|
||||
-- [fboBloom] -- fboPos probably doesn't need the alpha channel
|
||||
)
|
||||
>>= fboPos
|
||||
( resizeFBOTO
|
||||
@@ -75,12 +74,26 @@ sizeFBOs cfig rdata =
|
||||
GL_NEAREST
|
||||
GL_RGBA16F -- possibly doesn't need the alpha channel...
|
||||
)
|
||||
>>= fboHalf
|
||||
( resizeFBOTO'
|
||||
(getWindowSize (const EighthRes) cfig)
|
||||
5
|
||||
GL_LINEAR_MIPMAP_LINEAR
|
||||
GL_LINEAR
|
||||
GL_RGBA16F
|
||||
)
|
||||
-- >>= foldUpdateFBOTO
|
||||
-- _gr_downsize_res
|
||||
-- GL_LINEAR_MIPMAP_LINEAR
|
||||
-- GL_LINEAR
|
||||
-- GL_RGBA16F
|
||||
-- [fboHalf]
|
||||
>>= foldUpdateFBOTO
|
||||
_gr_downsize_res
|
||||
(const SixteenthRes)
|
||||
GL_LINEAR_MIPMAP_LINEAR
|
||||
GL_LINEAR
|
||||
GL_RGBA16F
|
||||
[fboHalf1, fboHalf2]
|
||||
[fboQuarter]
|
||||
>>= fboWindow
|
||||
( resizeFBOTO2
|
||||
(getWindowSize _gr_world_res cfig)
|
||||
|
||||
@@ -179,8 +179,8 @@ preloadRender = do
|
||||
fboLightingName <- setupFramebufferGivenStencil rboBaseBloomName
|
||||
|
||||
fbofullscreen <- newTextureFramebuffer
|
||||
fboHalf1Name <- newTextureFramebuffer
|
||||
fboHalf2Name <- newTextureFramebuffer
|
||||
fbohalf <- newTextureFramebuffer
|
||||
fboquarter <- newTextureFramebuffer
|
||||
|
||||
-- reset to default framebuffer, ready for drawing direct to screen
|
||||
glBindFramebuffer GL_FRAMEBUFFER 0
|
||||
@@ -208,8 +208,8 @@ preloadRender = do
|
||||
, _barrelShader = (barrelShad,distvbo)
|
||||
-- , _fbo2 = framebuf2
|
||||
, _fboFullscreen = fbofullscreen
|
||||
, _fboHalf1 = fboHalf1Name
|
||||
, _fboHalf2 = fboHalf2Name
|
||||
, _fboHalf = fbohalf
|
||||
, _fboQuarter = fboquarter
|
||||
, _fboLighting = fboLightingName
|
||||
, _fboBase = fboBaseName
|
||||
, _fboWindow = fbowindow
|
||||
|
||||
Reference in New Issue
Block a user