Commit before implementing downscaled resolution
This commit is contained in:
@@ -7,7 +7,7 @@ import Dodge.Data.SoundOrigin
|
|||||||
import Dodge.Config.Data
|
import Dodge.Config.Data
|
||||||
import Sound
|
import Sound
|
||||||
import Data.Preload
|
import Data.Preload
|
||||||
import Preload.Update
|
import Framebuffer.Update
|
||||||
|
|
||||||
import Data.Aeson (encodeFile)
|
import Data.Aeson (encodeFile)
|
||||||
--import Control.Monad (when)
|
--import Control.Monad (when)
|
||||||
|
|||||||
+1
-1
@@ -23,7 +23,7 @@ import Dodge.SoundLogic
|
|||||||
import Dodge.Inventory
|
import Dodge.Inventory
|
||||||
import Dodge.Config.Data
|
import Dodge.Config.Data
|
||||||
--import Geometry
|
--import Geometry
|
||||||
import Preload.Update
|
import Framebuffer.Update
|
||||||
import qualified IntMapHelp as IM
|
import qualified IntMapHelp as IM
|
||||||
|
|
||||||
import Control.Lens
|
import Control.Lens
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import Dodge.SoundLogic
|
|||||||
import Dodge.Config.Data
|
import Dodge.Config.Data
|
||||||
import Dodge.Config.Update
|
import Dodge.Config.Update
|
||||||
import Dodge.Layout
|
import Dodge.Layout
|
||||||
import Preload.Update
|
import Framebuffer.Update
|
||||||
import Dodge.Debug.Terminal
|
import Dodge.Debug.Terminal
|
||||||
|
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
|
|||||||
+1
-1
@@ -115,7 +115,7 @@ doDrawing pdata w = do
|
|||||||
colorMask $= Color4 Enabled Enabled Enabled Enabled
|
colorMask $= Color4 Enabled Enabled Enabled Enabled
|
||||||
clearColor $= Color4 0 0 0 0
|
clearColor $= Color4 0 0 0 0
|
||||||
|
|
||||||
blend $= Disabled
|
--blend $= Disabled
|
||||||
depthMask $= Disabled
|
depthMask $= Disabled
|
||||||
depthFunc $= Just Always
|
depthFunc $= Just Always
|
||||||
|
|
||||||
|
|||||||
+4
-46
@@ -11,10 +11,11 @@ import Shader.Compile
|
|||||||
import Shader.AuxAddition
|
import Shader.AuxAddition
|
||||||
import Shader.Parameters
|
import Shader.Parameters
|
||||||
import Shader.Bind
|
import Shader.Bind
|
||||||
|
import Framebuffer.Setup
|
||||||
import Data.Preload.Render
|
import Data.Preload.Render
|
||||||
|
|
||||||
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
|
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
|
||||||
import Graphics.GL.Core43
|
--import Graphics.GL.Core43
|
||||||
--import Control.Lens
|
--import Control.Lens
|
||||||
import Control.Monad
|
import Control.Monad
|
||||||
import Foreign
|
import Foreign
|
||||||
@@ -100,7 +101,7 @@ preloadRender = do
|
|||||||
rboLightingName <- genObjectName
|
rboLightingName <- genObjectName
|
||||||
bindRenderbuffer Renderbuffer $= rboLightingName
|
bindRenderbuffer Renderbuffer $= rboLightingName
|
||||||
renderbufferStorage Renderbuffer Depth24Stencil8 (RenderbufferSize 800 600)
|
renderbufferStorage Renderbuffer Depth24Stencil8 (RenderbufferSize 800 600)
|
||||||
fboLightingName <- newFramebufferGivenStencilAlpha rboLightingName
|
fboLightingName <- newFramebufferGivenStencil rboLightingName
|
||||||
|
|
||||||
rboBaseBloomName <- genObjectName
|
rboBaseBloomName <- genObjectName
|
||||||
bindRenderbuffer Renderbuffer $= rboBaseBloomName
|
bindRenderbuffer Renderbuffer $= rboBaseBloomName
|
||||||
@@ -156,6 +157,7 @@ preloadRender = do
|
|||||||
, _rboBaseBloom = rboBaseBloomName
|
, _rboBaseBloom = rboBaseBloomName
|
||||||
, _matUBO = theUBO
|
, _matUBO = theUBO
|
||||||
}
|
}
|
||||||
|
--------------------end preloadRender
|
||||||
cornerList :: [[Float]]
|
cornerList :: [[Float]]
|
||||||
cornerList =
|
cornerList =
|
||||||
[[-1, 1,0,1]
|
[[-1, 1,0,1]
|
||||||
@@ -170,51 +172,7 @@ cornerListNoCoord =
|
|||||||
,[-1,-1]
|
,[-1,-1]
|
||||||
,[ 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 :: RenderData -> IO ()
|
||||||
cleanUpRenderPreload pd = do
|
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)
|
|
||||||
|
|
||||||
+7
-3
@@ -38,12 +38,16 @@ createLightMap pdata lightPoints nWalls nSils nsurfVs = do
|
|||||||
clear [ColorBuffer,DepthBuffer]
|
clear [ColorBuffer,DepthBuffer]
|
||||||
--colorMask $= Color4 Disabled Disabled Disabled Disabled
|
--colorMask $= Color4 Disabled Disabled Disabled Disabled
|
||||||
cullFace $= Just Back
|
cullFace $= Just Back
|
||||||
-- draw walls from your point of view in order to set z buffer
|
-- draw wall surfaces from your point of view in order to set z buffer
|
||||||
drawShader (_lightingWallShader pdata) nWalls
|
drawShader (_lightingWallShader pdata) nWalls
|
||||||
-- draw foreground elements to set z buffer
|
-- draw foreground elements from your point of view to set z buffer
|
||||||
drawShader (_lightingSurfaceShader pdata) nsurfVs
|
drawShader (_lightingSurfaceShader pdata) nsurfVs
|
||||||
|
-- draw wall occlusions from your point of view
|
||||||
drawShader (_lightingOccludeShader pdata) nWalls
|
drawShader (_lightingOccludeShader pdata) nWalls
|
||||||
|
--hypothesis: the above three draw calls only work because the
|
||||||
|
--uniform was set to your position, that being the last light source in the list
|
||||||
|
--if this hypothesis is correct, then the code is brittle and should be changed
|
||||||
|
|
||||||
-- for each of the lights:
|
-- for each of the lights:
|
||||||
-- stencil out the walls from this light's point of view
|
-- stencil out the walls from this light's point of view
|
||||||
-- draw fading lightmap circles on the floor
|
-- draw fading lightmap circles on the floor
|
||||||
|
|||||||
Reference in New Issue
Block a user