Partially implement a framebuffer object for bluring shadows
This commit is contained in:
@@ -49,6 +49,12 @@ renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints p
|
||||
)
|
||||
|
||||
-- draw lightmap
|
||||
|
||||
bindFramebuffer Framebuffer $= (_spareFBO pdata)
|
||||
clearColor $= Color4 0 0.5 0 1
|
||||
clearDepth $= (200)
|
||||
clear [ColorBuffer]
|
||||
|
||||
nWalls <- F.foldM (pokeShader (_wallShadowShader pdata)) wallPoints
|
||||
bindShaderBuffers [_wallShadowShader pdata] [nWalls]
|
||||
|
||||
@@ -78,10 +84,24 @@ renderPicture' pdata rot zoom (tranx,trany) (winx,winy) wallPoints lightPoints p
|
||||
ticksS <- SDL.ticks
|
||||
ticksAfterL <- SDL.ticks
|
||||
|
||||
blend $= Disabled
|
||||
|
||||
-- blendFunc $= (Zero,One)
|
||||
bindFramebuffer Framebuffer $= defaultFramebufferObject
|
||||
--
|
||||
-- blendFunc $= (SrcAlpha, OneMinusSrcAlpha)
|
||||
bindShaderBuffers [_fullscreenShader pdata] [4]
|
||||
textureBinding Texture2D $= Just (_fboTexture pdata)
|
||||
-- blendFunc $= (One, Zero)
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
|
||||
blend $= Enabled
|
||||
|
||||
-- draw picture on top of light/shadow map
|
||||
-- set drawing for on top
|
||||
blendFuncSeparate $= ((SrcAlphaSaturate, OneMinusSrcAlpha), (Zero,One))
|
||||
clear [DepthBuffer]
|
||||
|
||||
-- draw background
|
||||
bindArrayBuffers 1 $ _vaoBufferTargets $ _shaderVAO $ _backgroundShader pdata
|
||||
depthFunc $= Just Less
|
||||
|
||||
Reference in New Issue
Block a user