From 4b92a43535cbefa510c7cc6bd8a95991c6fab060 Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 24 Mar 2023 11:14:49 +0000 Subject: [PATCH] Refactor differing resolutions somewhat --- data/texture/charMapVertBig.png | Bin 9628 -> 12018 bytes src/Dodge/Config/Update.hs | 4 +-- src/Dodge/Data/Config.hs | 12 ++++++-- src/Dodge/DownscaleSize.hs | 5 ---- src/Dodge/Event.hs | 2 +- src/Dodge/Menu.hs | 6 +++- src/Dodge/PreloadData.hs | 6 ++-- src/Dodge/Render.hs | 23 +++++++++++---- src/Dodge/WindowSize.hs | 2 +- src/Framebuffer/Update.hs | 50 +++++++++++++++----------------- src/Preload/Update.hs | 11 ++++--- 11 files changed, 69 insertions(+), 52 deletions(-) delete mode 100644 src/Dodge/DownscaleSize.hs diff --git a/data/texture/charMapVertBig.png b/data/texture/charMapVertBig.png index 99e362689ba0eb393b7438ee984d13a29341aff7..d43dcb22bcdb06de7898d23dd5bc8bac6cfc8335 100644 GIT binary patch literal 12018 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 diff --git a/src/Dodge/Config/Update.hs b/src/Dodge/Config/Update.hs index 0a38ee412..abe065d06 100644 --- a/src/Dodge/Config/Update.hs +++ b/src/Dodge/Config/Update.hs @@ -48,8 +48,8 @@ applyWorldConfig :: IO PreloadData applyWorldConfig cfig pdata = do setVol cfig - pdataResizeUpdate (x `div` divRes) (y `div` divRes) x y pdata + pdataResizeUpdate cfig (x `div` divRes) (y `div` divRes) x y pdata where x = round $ _windowX cfig y = round $ _windowY cfig - divRes = resFactorNum $ _graphics_resolution_factor cfig + divRes = resFactorNum $ _graphics_world_resolution cfig diff --git a/src/Dodge/Data/Config.hs b/src/Dodge/Data/Config.hs index b8662b514..a0974f806 100644 --- a/src/Dodge/Data/Config.hs +++ b/src/Dodge/Data/Config.hs @@ -42,7 +42,9 @@ data Configuration = Configuration , _graphics_distortions :: Bool , _graphics_bloom :: Bool , _graphics_object_shadows :: ShadowRendering - , _graphics_resolution_factor :: ResFactor + , _graphics_downsize_resolution :: ResFactor + , _graphics_world_resolution :: ResFactor + , _graphics_overlay_resolution :: ResFactor , _graphics_num_shadow_casters :: NumShadowCasters , _windowX :: Float , _windowY :: Float @@ -83,7 +85,7 @@ data DebugBool | Show_path_between deriving (Eq, Ord, Bounded, Enum, Show) -data ResFactor = FullRes | HalfRes | QuarterRes +data ResFactor = FullRes | HalfRes | QuarterRes | EighthRes | SixteenthRes deriving (Show, Eq, Ord, Enum, Bounded) data ShadowRendering @@ -102,6 +104,8 @@ resFactorNum rf = case rf of FullRes -> 1 HalfRes -> 2 QuarterRes -> 4 + EighthRes -> 8 + SixteenthRes -> 16 defaultConfig :: Configuration defaultConfig = @@ -113,7 +117,9 @@ defaultConfig = , _graphics_bloom = True , _graphics_object_shadows = GeoObjShads , _graphics_distortions = True - , _graphics_resolution_factor = QuarterRes + , _graphics_downsize_resolution = SixteenthRes + , _graphics_world_resolution = QuarterRes + , _graphics_overlay_resolution = FullRes , _graphics_num_shadow_casters = toEnum 10 , _windowX = 800 , _windowY = 600 diff --git a/src/Dodge/DownscaleSize.hs b/src/Dodge/DownscaleSize.hs deleted file mode 100644 index 69185e6e9..000000000 --- a/src/Dodge/DownscaleSize.hs +++ /dev/null @@ -1,5 +0,0 @@ -module Dodge.DownscaleSize where - -downSize :: Int -{-# INLINE downSize #-} -downSize = 8 diff --git a/src/Dodge/Event.hs b/src/Dodge/Event.hs index cf11988b2..29fbc307d 100644 --- a/src/Dodge/Event.hs +++ b/src/Dodge/Event.hs @@ -61,4 +61,4 @@ handleResizeEvent sev u = x = fromIntegral x' y = fromIntegral y' V2 x' y' = windowSizeChangedEventSize sev - divRes = resFactorNum $ u ^. uvConfig . graphics_resolution_factor + divRes = resFactorNum $ u ^. uvConfig . graphics_world_resolution diff --git a/src/Dodge/Menu.hs b/src/Dodge/Menu.hs index 25d950fd6..976d27836 100644 --- a/src/Dodge/Menu.hs +++ b/src/Dodge/Menu.hs @@ -182,7 +182,11 @@ graphicsMenu = titleOptionsMenu "OPTIONS:GRAPHICS" graphicsMenuOptions graphicsMenuOptions :: [MenuOption] graphicsMenuOptions = - [ makeEnumOption graphics_resolution_factor "RESOLUTION" (uvIOEffects .~ updateFramebufferSize) + [ makeEnumOption graphics_world_resolution "World resolution" (uvIOEffects .~ updateFramebufferSize) + , makeEnumOption graphics_downsize_resolution "Downsize resolution" + (uvIOEffects .~ updateFramebufferSize) + , makeEnumOption graphics_overlay_resolution "Overlay resolution" + (uvIOEffects .~ updateFramebufferSize) , makeEnumOption graphics_object_shadows "SHADOW DETAIL" id , makeEnumOption graphics_distortions "ENABLE DISTORTIONS" id , makeEnumOption graphics_bloom "ENABLE BLOOM" id diff --git a/src/Dodge/PreloadData.hs b/src/Dodge/PreloadData.hs index f599f8245..92cc51bb1 100644 --- a/src/Dodge/PreloadData.hs +++ b/src/Dodge/PreloadData.hs @@ -7,12 +7,12 @@ import Preload.Update sideEffectUpdatePreload :: Int -> Int -> Int -> (Universe -> IO Universe) -> Universe -> IO Universe sideEffectUpdatePreload divRes x y f u = do -- GL.viewport $= (GL.Position 0 0, GL.Size (fromIntegral x) (fromIntegral y)) - pdata <- pdataResizeUpdate (x `div` divRes) (y `div` divRes) x y (_preloadData u) + pdata <- pdataResizeUpdate (u ^. uvConfig) (x `div` divRes) (y `div` divRes) x y (_preloadData u) f $ u & preloadData .~ pdata updatePreload :: Int -> Int -> Int -> Universe -> IO Universe updatePreload divRes x y u = do - pdata <- pdataResizeUpdate (x `div` divRes) (y `div` divRes) x y (_preloadData u) + pdata <- pdataResizeUpdate (u ^. uvConfig) (x `div` divRes) (y `div` divRes) x y (_preloadData u) return $ u & preloadData .~ pdata updateFramebufferSize :: Universe -> IO Universe @@ -20,4 +20,4 @@ updateFramebufferSize u = updatePreload divRes x y u where (x, y) = (round $ _windowX cfig, round $ _windowY cfig) cfig = _uvConfig u - divRes = resFactorNum $ u ^. uvConfig . graphics_resolution_factor + divRes = resFactorNum $ u ^. uvConfig . graphics_world_resolution diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index 2a3b6d0cd..57e381cc5 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -1,6 +1,7 @@ -- | Contains the central drawing functions for the dodge loop. module Dodge.Render ( doDrawing, + getWindowSize ) where --import qualified Data.Vector as V @@ -13,7 +14,6 @@ import qualified Data.Map.Strict as M import Data.Preload.Render import qualified Data.Vector.Unboxed.Mutable as UMV import Dodge.Data.Universe -import Dodge.DownscaleSize import Dodge.Render.Lights import Dodge.Render.ShapePicture import Dodge.Render.Walls @@ -49,7 +49,9 @@ doDrawing' win pdata u = do camzoom = w ^. cWorld . camPos . camZoom trans = w ^. cWorld . camPos . camCenter wins@(V2 winx winy) = V2 (_windowX cfig) (_windowY cfig) - resFact = resFactorNum $ cfig ^. graphics_resolution_factor + worldres = resFactorNum $ cfig ^. graphics_world_resolution + downres = resFactorNum $ cfig ^. graphics_downsize_resolution + overlayres = resFactorNum $ cfig ^. graphics_overlay_resolution (windowPoints, wallSPics, wallsToPoke) = wallsToDraw w lightPoints = lightsToRender cfig (w ^. cWorld . camPos) (w ^. cWorld . lWorld) viewFroms@(V2 vfx vfy) = w ^. cWorld . camPos . camViewFrom @@ -105,7 +107,7 @@ doDrawing' win pdata u = do glBindBufferBase GL_UNIFORM_BUFFER 0 (pdata ^. matUBO) withArray (perspectiveMatrixb rot camzoom trans wins viewFroms) $ \ptr -> glNamedBufferSubData (pdata ^. matUBO) 0 64 ptr - setViewportSize (round winx `div` resFact) (round winy `div` resFact) + setViewportSize (round winx `div` worldres) (round winy `div` worldres) glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase ._1 . unFBO) glDepthMask GL_TRUE glDisable GL_BLEND @@ -216,7 +218,7 @@ doDrawing' win pdata u = do renderLayer BloomLayer shadV layerCounts --setup downscale viewport for blurring bloom --setViewportSize (round winx `div` (2 * resFact)) (round winy `div` (2 * resFact)) - setViewportSize (round winx `div` downSize) (round winy `div` downSize) + setViewportSize (round winx `div` downres) (round winy `div` downres) glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboHalf1 pdata))) glDepthFunc GL_ALWAYS glBindTextureUnit 0 (pdata ^. fboBloom . _2 . unTO) @@ -224,7 +226,7 @@ doDrawing' win pdata u = do drawShader (_bloomBlurShader pdata) 4 replicateM_ 2 $ pingPongBetween (_fboHalf1 pdata) (_fboHalf2 pdata) (_bloomBlurShader pdata) glEnable GL_BLEND - setViewportSize (round winx `div` resFact) (round winy `div` resFact) + setViewportSize (round winx `div` worldres) (round winy `div` worldres) --draw clouds onto cloud buffer glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboCloud pdata))) glDepthFunc GL_LEQUAL @@ -332,7 +334,8 @@ doDrawing' win pdata u = do glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _1 . unTO) drawShader (_fullscreenShader pdata) 4 --set viewport for radial distortion - setViewportSize (round winx) (round winy) + --setViewportSize (round winx) (round winy) + setViewportType _graphics_overlay_resolution cfig glDepthFunc GL_ALWAYS glBlendFunc GL_ONE GL_ZERO -- perform any radial distortion @@ -371,3 +374,11 @@ getDistortions cfig w setViewportSize :: Int -> Int -> IO () setViewportSize x y = glViewport 0 0 (fromIntegral x) (fromIntegral y) + +getWindowSize :: Integral a => (Configuration -> ResFactor) -> Configuration -> (a,a) +getWindowSize f cfig = (g _windowX,g _windowY) + where + g h = fromIntegral $ round (h cfig) `div` resFactorNum (f cfig) + +setViewportType :: (Configuration -> ResFactor) -> Configuration -> IO () +setViewportType f = uncurry (glViewport 0 0) . getWindowSize f diff --git a/src/Dodge/WindowSize.hs b/src/Dodge/WindowSize.hs index 4ff3bf98f..b0584a7a9 100644 --- a/src/Dodge/WindowSize.hs +++ b/src/Dodge/WindowSize.hs @@ -7,4 +7,4 @@ getWindowSize cfig = (x `div` divRes,y `div` divRes) where x = round $ _windowX cfig y = round $ _windowY cfig - divRes = resFactorNum $ _graphics_resolution_factor cfig + divRes = resFactorNum $ _graphics_world_resolution cfig diff --git a/src/Framebuffer/Update.hs b/src/Framebuffer/Update.hs index 4ff6196d8..8a0f3f180 100644 --- a/src/Framebuffer/Update.hs +++ b/src/Framebuffer/Update.hs @@ -7,7 +7,7 @@ module Framebuffer.Update ( sizeFBOs, ) where -import Dodge.DownscaleSize +import Dodge.Data.Config import Shader.Data import Framebuffer.Check import Control.Lens @@ -19,52 +19,45 @@ import Graphics.GL.Core45 import Unsafe.Coerce sizeFBOs :: - -- | Scaled width - Int -> - -- | Scaled height - Int -> - -- | Full width - Int -> - -- | Full height - Int -> + Configuration -> RenderData -> IO RenderData -sizeFBOs xsize ysize xfull yfull rdata = do - resizeRBO (_rboBaseBloom rdata) xsize ysize - rdata1 <- updateFBOTO3 xsize ysize GL_NEAREST GL_NEAREST GL_RGBA8 GL_RGBA16F GL_RGBA16F rdata fboBase - rdata2 <- updateFBOTO3 xsize ysize GL_NEAREST GL_NEAREST GL_RGBA8 GL_RGBA16F GL_RGBA16F rdata1 fboCloud - rdata' <- updateFBOTO xsize ysize GL_NEAREST GL_NEAREST GL_RGBA8 rdata2 fboLighting +sizeFBOs cfig rdata = do + uncurry (resizeRBO (_rboBaseBloom rdata)) (getWindowSize _graphics_world_resolution cfig) + rdata1 <- uncurry updateFBOTO3 (getWindowSize _graphics_world_resolution cfig) + GL_NEAREST GL_NEAREST GL_RGBA8 GL_RGBA16F GL_RGBA16F rdata fboBase + rdata2 <- uncurry updateFBOTO3 (getWindowSize _graphics_world_resolution cfig) + GL_NEAREST GL_NEAREST GL_RGBA8 GL_RGBA16F GL_RGBA16F rdata1 fboCloud + rdata' <- uncurry updateFBOTO (getWindowSize _graphics_world_resolution cfig) + GL_NEAREST GL_NEAREST GL_RGBA8 rdata2 fboLighting rdata'' <- foldM - (updateFBOTO xsize ysize GL_LINEAR_MIPMAP_LINEAR GL_LINEAR GL_RGBA16F) + (uncurry updateFBOTO (getWindowSize _graphics_world_resolution cfig) + GL_LINEAR_MIPMAP_LINEAR GL_LINEAR GL_RGBA16F) rdata' [fboBloom, fboPos] rdata''' <- foldM - (updateFBOTO xfull yfull GL_NEAREST GL_NEAREST GL_RGBA8) + (uncurry updateFBOTO (getWindowSize _graphics_overlay_resolution cfig) GL_NEAREST GL_NEAREST GL_RGBA8) rdata'' [fbo2, fbo3] rdata4 <- foldM - (updateFBOTO (xfull `div` downSize) (yfull `div` downSize) GL_LINEAR_MIPMAP_LINEAR GL_LINEAR GL_RGBA16F) + (uncurry updateFBOTO (getWindowSize _graphics_downsize_resolution cfig) GL_LINEAR_MIPMAP_LINEAR GL_LINEAR GL_RGBA16F) rdata''' [fboHalf1, fboHalf2, fboHalf3] - newShadowFBO <- resizeShadowFBO (rdata ^. fboShadow) xsize ysize + newShadowFBO <- uncurry (resizeShadowFBO (rdata ^. fboShadow)) + (getWindowSize _graphics_world_resolution cfig) return $ rdata4 & fboShadow .~ newShadowFBO resizeRBO :: GLuint -> -- RenderbufferObject - Int -> - Int -> + GLsizei -> + GLsizei -> IO () -resizeRBO rboName xsize ysize = do - let xsize' = fromIntegral xsize - ysize' = fromIntegral ysize - glNamedRenderbufferStorage +resizeRBO rboName = glNamedRenderbufferStorage rboName GL_DEPTH24_STENCIL8 - xsize' - ysize' updateFBOTO :: Int -> @@ -228,3 +221,8 @@ initializeTexture2DArray fbo attachpoint x y z minfilt magfilt informat = do glTextureParameteri to1 GL_TEXTURE_MAG_FILTER (unsafeCoerce magfilt) glNamedFramebufferTexture (_unFBO fbo) attachpoint to1 0 return to1 + +getWindowSize :: Integral a => (Configuration -> ResFactor) -> Configuration -> (a,a) +getWindowSize f cfig = (g _windowX,g _windowY) + where + g h = fromIntegral $ round (h cfig) `div` resFactorNum (f cfig) diff --git a/src/Preload/Update.hs b/src/Preload/Update.hs index 597ecca6d..307a78fab 100644 --- a/src/Preload/Update.hs +++ b/src/Preload/Update.hs @@ -4,6 +4,7 @@ module Preload.Update ( pdataResizeUpdate, ) where +import Dodge.Data.Config import Control.Lens import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BSC @@ -14,6 +15,7 @@ import Shader.Compile import Shader.Data pdataResizeUpdate :: + Configuration -> -- | Scaled width Int -> -- | Scaled height @@ -24,11 +26,12 @@ pdataResizeUpdate :: Int -> PreloadData -> IO PreloadData -pdataResizeUpdate xsize ysize xfull yfull pdata = do - rd <- renderDataResizeUpdate xsize ysize xfull yfull (_renderData pdata) +pdataResizeUpdate cfig xsize ysize xfull yfull pdata = do + rd <- renderDataResizeUpdate cfig xsize ysize xfull yfull (_renderData pdata) return (pdata{_renderData = rd}) renderDataResizeUpdate :: + Configuration -> -- | Scaled width Int -> -- | Scaled height @@ -39,8 +42,8 @@ renderDataResizeUpdate :: Int -> RenderData -> IO RenderData -renderDataResizeUpdate xsize ysize xfull yfull rdata = do - rdata' <- sizeFBOs xsize ysize xfull yfull rdata +renderDataResizeUpdate cfig xsize ysize xfull yfull rdata = do + rdata' <- sizeFBOs cfig rdata bbVert <- BS.readFile "shader/texture/bloomBlur.vert" bbFrag <- BS.readFile "shader/texture/bloomBlur.frag" let (bh, bmid) = BS.breakSubstring "(" bbFrag