Commit before implementing downscaled resolution
This commit is contained in:
+4
-46
@@ -11,10 +11,11 @@ import Shader.Compile
|
||||
import Shader.AuxAddition
|
||||
import Shader.Parameters
|
||||
import Shader.Bind
|
||||
import Framebuffer.Setup
|
||||
import Data.Preload.Render
|
||||
|
||||
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
|
||||
import Graphics.GL.Core43
|
||||
--import Graphics.GL.Core43
|
||||
--import Control.Lens
|
||||
import Control.Monad
|
||||
import Foreign
|
||||
@@ -100,7 +101,7 @@ preloadRender = do
|
||||
rboLightingName <- genObjectName
|
||||
bindRenderbuffer Renderbuffer $= rboLightingName
|
||||
renderbufferStorage Renderbuffer Depth24Stencil8 (RenderbufferSize 800 600)
|
||||
fboLightingName <- newFramebufferGivenStencilAlpha rboLightingName
|
||||
fboLightingName <- newFramebufferGivenStencil rboLightingName
|
||||
|
||||
rboBaseBloomName <- genObjectName
|
||||
bindRenderbuffer Renderbuffer $= rboBaseBloomName
|
||||
@@ -156,6 +157,7 @@ preloadRender = do
|
||||
, _rboBaseBloom = rboBaseBloomName
|
||||
, _matUBO = theUBO
|
||||
}
|
||||
--------------------end preloadRender
|
||||
cornerList :: [[Float]]
|
||||
cornerList =
|
||||
[[-1, 1,0,1]
|
||||
@@ -170,51 +172,7 @@ cornerListNoCoord =
|
||||
,[-1,-1]
|
||||
,[ 1,-1]
|
||||
]
|
||||
--------------------end preloadRender
|
||||
|
||||
newFramebufferGivenStencil
|
||||
:: RenderbufferObject
|
||||
-> IO (FramebufferObject, TextureObject)
|
||||
newFramebufferGivenStencil rboName = do
|
||||
fboName <- genObjectName
|
||||
bindFramebuffer Framebuffer $= fboName
|
||||
toName <- genObjectName
|
||||
framebufferRenderbuffer Framebuffer DepthStencilAttachment Renderbuffer rboName
|
||||
fboStatus <- framebufferStatus Framebuffer
|
||||
print fboStatus
|
||||
return (fboName,toName)
|
||||
|
||||
newFramebufferGivenStencilAlpha
|
||||
:: RenderbufferObject
|
||||
-> IO (FramebufferObject, TextureObject)
|
||||
newFramebufferGivenStencilAlpha rboName = do
|
||||
fboName <- genObjectName
|
||||
bindFramebuffer Framebuffer $= fboName
|
||||
toName <- genObjectName
|
||||
framebufferRenderbuffer Framebuffer DepthStencilAttachment Renderbuffer rboName
|
||||
fboStatus <- framebufferStatus Framebuffer
|
||||
print fboStatus
|
||||
return (fboName,toName)
|
||||
|
||||
setupTextureFramebuffer
|
||||
:: GLsizei
|
||||
-> GLsizei
|
||||
-> IO (FramebufferObject, TextureObject)
|
||||
setupTextureFramebuffer x y = do
|
||||
fboName <- genObjectName
|
||||
bindFramebuffer Framebuffer $= fboName
|
||||
|
||||
fboTO <- genObjectName
|
||||
textureBinding Texture2D $= Just fboTO
|
||||
glTexStorage2D GL_TEXTURE_2D 1 GL_RGBA8 x y
|
||||
textureFilter Texture2D $= minMagFilter
|
||||
framebufferTexture2D Framebuffer (ColorAttachment 0) Texture2D fboTO 0
|
||||
fboStatus <- framebufferStatus Framebuffer
|
||||
print fboStatus
|
||||
return (fboName, fboTO)
|
||||
|
||||
minMagFilter :: ((TextureFilter, Maybe TextureFilter),TextureFilter)
|
||||
minMagFilter = ((Nearest,Nothing),Nearest)
|
||||
|
||||
cleanUpRenderPreload :: RenderData -> IO ()
|
||||
cleanUpRenderPreload pd = do
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
{-# LANGUAGE NoMonomorphismRestriction #-}
|
||||
module Preload.Update
|
||||
( sizeFBOs
|
||||
)
|
||||
where
|
||||
import Data.Preload
|
||||
import Data.Preload.Render
|
||||
|
||||
import Graphics.Rendering.OpenGL
|
||||
import Graphics.GL.Core43
|
||||
--import Foreign
|
||||
import Control.Lens
|
||||
import Control.Monad
|
||||
|
||||
sizeFBOs
|
||||
:: Int -- ^ Lightmap width
|
||||
-> Int -- ^ Lightmap height
|
||||
-> Int -- ^ Full width
|
||||
-> Int -- ^ Full height
|
||||
-> PreloadData a
|
||||
-> IO (PreloadData a)
|
||||
sizeFBOs xsize ysize xfull yfull pdata = do
|
||||
let rdata = _renderData pdata
|
||||
resizeRBO (_rboBaseBloom rdata) xfull yfull
|
||||
resizeRBO (_rboLighting rdata) xsize ysize
|
||||
pdata' <- foldM (updateFBOTO xfull yfull) pdata [fbo2, fbo3, fboBase, fboBloom, fboColor]
|
||||
updateFBOTO xsize ysize pdata' fboLighting
|
||||
|
||||
resizeRBO
|
||||
:: RenderbufferObject
|
||||
-> Int
|
||||
-> Int
|
||||
-> IO ()
|
||||
resizeRBO rboName xsize ysize = do
|
||||
let xsize' = fromIntegral xsize
|
||||
ysize' = fromIntegral ysize
|
||||
bindRenderbuffer Renderbuffer $= rboName
|
||||
renderbufferStorage Renderbuffer Depth24Stencil8 (RenderbufferSize xsize' ysize')
|
||||
|
||||
updateFBOTO
|
||||
:: Int
|
||||
-> Int
|
||||
-> PreloadData a
|
||||
-> ALens' RenderData (FramebufferObject, TextureObject)
|
||||
-> IO (PreloadData a)
|
||||
updateFBOTO xsize ysize pdata target = do
|
||||
newfbo2 <- resizeFBOTO (pdata ^# renderData . target) xsize ysize
|
||||
return $ storing (renderData . target) newfbo2 pdata
|
||||
|
||||
resizeFBOTO
|
||||
:: (FramebufferObject , TextureObject)
|
||||
-> Int
|
||||
-> Int
|
||||
-> IO (FramebufferObject, TextureObject)
|
||||
resizeFBOTO (fboName,toOld) xsize ysize = do
|
||||
bindFramebuffer Framebuffer $= fboName
|
||||
let xsize' = fromIntegral xsize
|
||||
ysize' = fromIntegral ysize
|
||||
deleteObjectName toOld
|
||||
toName <- genObjectName
|
||||
textureBinding Texture2D $= Just toName
|
||||
glTexStorage2D GL_TEXTURE_2D 1 GL_RGBA8 xsize' ysize'
|
||||
textureFilter Texture2D $= minMagFilter
|
||||
framebufferTexture2D Framebuffer (ColorAttachment 0) Texture2D toName 0
|
||||
fboStatus <- framebufferStatus Framebuffer
|
||||
putStrLn $ "after resize, framebuffer status:" ++ show fboStatus
|
||||
return (fboName, toName)
|
||||
|
||||
minMagFilter :: ((TextureFilter, Maybe TextureFilter),TextureFilter)
|
||||
minMagFilter = ((Nearest,Nothing),Nearest)
|
||||
|
||||
Reference in New Issue
Block a user