Work on cloud/window transparency

This commit is contained in:
2025-11-09 11:00:12 +00:00
parent 7c62479f30
commit e9ffeeaea7
16 changed files with 221 additions and 168 deletions
+2
View File
@@ -11,6 +11,8 @@ void main()
if (d > 1) {discard;} if (d > 1) {discard;}
fCol = vec4(vCol.xyz,vCol.w*(1-d)); fCol = vec4(vCol.xyz,vCol.w*(1-d));
fPos = vec4(vPosID.xyz, vCol.w*(1-d)); fPos = vec4(vPosID.xyz, vCol.w*(1-d));
//fPos = vec4(vPosID.xy,vPosID.z*0.5, vCol.w*(1-d));
fNorm = vec4(-vControls.xy, -0.1 + 0.2 * d ,fPos.w); fNorm = vec4(-vControls.xy, -0.1 + 0.2 * d ,fPos.w);
//fNorm = vec4(-vControls.xy, -0.1 + 2 * d ,vCol.w * (1.01-(d*d*d)));
//fNorm = vec4(-vControls.xy, -0.1 + d , fPos.w); //fNorm = vec4(-vControls.xy, -0.1 + d , fPos.w);
} }
+18
View File
@@ -0,0 +1,18 @@
#version 450 core
in vec2 vTexPos;
out vec4 fColor;
layout(binding = 0) uniform sampler2D t0;
layout(binding = 1) uniform sampler2D t1;
layout(binding = 2) uniform sampler2D t2;
layout(binding = 3) uniform sampler2D t3;
vec4 blend (vec4 src, vec4 dst) {
return src + (1-src.a) * dst;
}
void main() {
//fColor = texture(t0, vTexPos) + texture(t2, vTexPos);
vec4 x = texture(t0, vTexPos);
float xz = texture(t1, vTexPos).z;
vec4 y = texture(t2, vTexPos);
float yz = texture(t3, vTexPos).z;
fColor = ( xz > yz ? blend(x,y) : blend(y,x)) ;
}
+8
View File
@@ -0,0 +1,8 @@
#version 450 core
layout(location = 0) in vec2 pos;
layout(location = 1) in vec2 texPos;
out vec2 vTexPos;
void main() {
gl_Position = vec4(pos, 0.0, 1.0);
vTexPos = texPos;
}
+2 -1
View File
@@ -9,6 +9,7 @@ void main()
fCol = gColor; fCol = gColor;
//fPos = gPos;// + vec4(0,0,50,0); //fPos = gPos;// + vec4(0,0,50,0);
//fNorm = vec4 (0,0,10,10); //fNorm = vec4 (0,0,10,10);
fPos = vec4(0,0,50,1); //fPos = vec4(0,0,50,1);
fPos = gPos;
fNorm = vec4 (0,0,10,10); fNorm = vec4 (0,0,10,10);
} }
+2 -1
View File
@@ -19,6 +19,7 @@ data RenderData = RenderData
, _alphaDivideShader :: Shader , _alphaDivideShader :: Shader
, _windowShader :: Shader , _windowShader :: Shader
, _fullscreenShader :: Shader , _fullscreenShader :: Shader
, _transparencyCompShader :: Shader
, _bloomBlurShader :: Shader , _bloomBlurShader :: Shader
, _colorBlurShader :: Shader , _colorBlurShader :: Shader
, _barrelShader :: (Shader,VBO) , _barrelShader :: (Shader,VBO)
@@ -33,7 +34,7 @@ data RenderData = RenderData
, _fboHalf2 :: (FBO, TO) , _fboHalf2 :: (FBO, TO)
, _fboBase :: (FBO, (TO, TO, TO)) , _fboBase :: (FBO, (TO, TO, TO))
, _fboCloud :: (FBO, (TO, TO, TO)) , _fboCloud :: (FBO, (TO, TO, TO))
-- , _fboWindow :: (FBO, (TO, TO, TO)) , _fboWindow :: (FBO, (TO, TO))
, _fboBloom :: (FBO, TO) , _fboBloom :: (FBO, TO)
, _fboPos :: (FBO, TO) , _fboPos :: (FBO, TO)
, _fboLighting :: (FBO, TO) , _fboLighting :: (FBO, TO)
+18 -18
View File
@@ -39,15 +39,15 @@ data Config = Config
{ _volume_master :: Float { _volume_master :: Float
, _volume_sound :: Float , _volume_sound :: Float
, _volume_music :: Float , _volume_music :: Float
, _graphics_cloud_shadows :: Bool , _gr_cloud_shadows :: Bool
, _graphics_distortions :: Bool , _gr_distortions :: Bool
, _graphics_bloom :: Bool , _gr_bloom :: Bool
, _graphics_shadow_rendering :: ShadowRendering , _gr_shadow_rendering :: ShadowRendering
, _graphics_shadow_size :: Importance , _gr_shadow_size :: Importance
, _graphics_downsize_resolution :: ResFactor , _gr_downsize_res :: ResFactor
, _graphics_world_resolution :: ResFactor , _gr_world_res :: ResFactor
, _graphics_distortion_resolution :: ResFactor , _gr_distortion_res :: ResFactor
, _graphics_num_shadow_casters :: NumShadowCasters , _gr_num_shadow_casters :: NumShadowCasters
, _windowX :: Int --size , _windowX :: Int --size
, _windowY :: Int , _windowY :: Int
, _windowPosX :: Int --position in os , _windowPosX :: Int --position in os
@@ -133,15 +133,15 @@ defaultConfig =
{ _volume_master = 1 { _volume_master = 1
, _volume_sound = 1 , _volume_sound = 1
, _volume_music = 0 , _volume_music = 0
, _graphics_cloud_shadows = True , _gr_cloud_shadows = True
, _graphics_bloom = True , _gr_bloom = True
, _graphics_shadow_rendering = GeoObjShads , _gr_shadow_rendering = GeoObjShads
, _graphics_shadow_size = Typical , _gr_shadow_size = Typical
, _graphics_distortions = True , _gr_distortions = True
, _graphics_downsize_resolution = EighthRes , _gr_downsize_res = EighthRes
, _graphics_world_resolution = QuarterRes , _gr_world_res = QuarterRes
, _graphics_distortion_resolution = FullRes , _gr_distortion_res = FullRes
, _graphics_num_shadow_casters = toEnum 10 , _gr_num_shadow_casters = toEnum 10
, _windowX = 800 , _windowX = 800
, _windowY = 600 , _windowY = 600
, _windowPosX = 0 , _windowPosX = 0
+9 -15
View File
@@ -187,21 +187,15 @@ graphicsMenu = titleOptionsMenu "OPTIONS:GRAPHICS" graphicsMenuOptions
graphicsMenuOptions :: [MenuOption] graphicsMenuOptions :: [MenuOption]
graphicsMenuOptions = graphicsMenuOptions =
[ makeEnumOption graphics_world_resolution "World resolution" (uvIOEffects .~ updatePreload) [ makeEnumOption gr_world_res "World resolution" (uvIOEffects .~ updatePreload)
, makeEnumOption , makeEnumOption gr_downsize_res "Downsize resolution" (uvIOEffects .~ updatePreload)
graphics_downsize_resolution , makeEnumOption gr_distortion_res "Distortion resolution" (uvIOEffects .~ updatePreload)
"Downsize resolution" , makeEnumOption gr_shadow_rendering "SHADOW RENDERING" id
(uvIOEffects .~ updatePreload) , makeEnumOption gr_shadow_size "SHADOW DETAIL" id
, makeEnumOption , makeEnumOption gr_distortions "ENABLE DISTORTIONS" id
graphics_distortion_resolution , makeEnumOption gr_bloom "ENABLE BLOOM" id
"Distortion resolution" , makeBoolOption gr_cloud_shadows "CLOUD SHADOWS"
(uvIOEffects .~ updatePreload) , makeEnumOption gr_num_shadow_casters "NUM SHADOW CASTERS" id
, makeEnumOption graphics_shadow_rendering "SHADOW RENDERING" id
, makeEnumOption graphics_shadow_size "SHADOW DETAIL" id
, makeEnumOption graphics_distortions "ENABLE DISTORTIONS" id
, makeEnumOption graphics_bloom "ENABLE BLOOM" id
, makeBoolOption graphics_cloud_shadows "CLOUD SHADOWS"
, makeEnumOption graphics_num_shadow_casters "NUM SHADOW CASTERS" id
] ]
gameOverMenu :: Universe -> ScreenLayer gameOverMenu :: Universe -> ScreenLayer
+55 -26
View File
@@ -76,7 +76,7 @@ doDrawing' win pdata u = do
wallsToPoke wallsToPoke
) )
( pokeShape ( pokeShape
(drawShadowsByImportance $ cfig ^. graphics_shadow_size) (drawShadowsByImportance $ cfig ^. gr_shadow_size)
(_vboPtr $ _vboShapes pdata) (_vboPtr $ _vboShapes pdata)
(_eboPtr $ _shapeEBO pdata) (_eboPtr $ _shapeEBO pdata)
(_eboPtr $ _silhouetteEBO pdata) (_eboPtr $ _silhouetteEBO pdata)
@@ -111,7 +111,7 @@ doDrawing' win pdata u = do
] ]
-- set the coordinate uniform ready for drawing elements using world coordinates -- set the coordinate uniform ready for drawing elements using world coordinates
bufferPerspectiveMatrixUBO cfig (w ^. wCam) (pdata ^. matUBO) bufferPerspectiveMatrixUBO cfig (w ^. wCam) (pdata ^. matUBO)
setViewport _graphics_world_resolution cfig setViewport _gr_world_res cfig
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO) glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
glDepthMask GL_TRUE glDepthMask GL_TRUE
glDisable GL_BLEND glDisable GL_BLEND
@@ -257,7 +257,7 @@ doDrawing' win pdata u = do
--setup downscale viewport for blurring bloom --setup downscale viewport for blurring bloom
--setViewportSize (round winx `div` (2 * resFact)) (round winy `div` (2 * resFact)) --setViewportSize (round winx `div` (2 * resFact)) (round winy `div` (2 * resFact))
setViewport _graphics_downsize_resolution cfig setViewport _gr_downsize_res cfig
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboHalf1 pdata))) glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboHalf1 pdata)))
glDepthFunc GL_ALWAYS glDepthFunc GL_ALWAYS
glBindTextureUnit 0 (pdata ^. fboBloom . _2 . unTO) glBindTextureUnit 0 (pdata ^. fboBloom . _2 . unTO)
@@ -271,11 +271,11 @@ doDrawing' win pdata u = do
-- glClearNamedFramebufferfv (pdata ^. fboHalf2 . _1 . unFBO) GL_COLOR 0 -- glClearNamedFramebufferfv (pdata ^. fboHalf2 . _1 . unFBO) GL_COLOR 0
-- glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA -- glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA
drawShader (_bloomBlurShader pdata) 4 drawShader (_bloomBlurShader pdata) 4
when (cfig ^. graphics_bloom) $ do when (cfig ^. gr_bloom) $ do
replicateM_ 2 $ pingPongBetween replicateM_ 2 $ pingPongBetween
(_fboHalf1 pdata) (_fboHalf2 pdata) (_bloomBlurShader pdata) (_fboHalf1 pdata) (_fboHalf2 pdata) (_bloomBlurShader pdata)
glEnable GL_BLEND glEnable GL_BLEND
setViewport _graphics_world_resolution cfig setViewport _gr_world_res cfig
--draw clouds onto cloud buffer --draw clouds onto cloud buffer
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboCloud . _1 . unFBO) glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboCloud . _1 . unFBO)
glDepthFunc GL_LEQUAL glDepthFunc GL_LEQUAL
@@ -297,15 +297,15 @@ doDrawing' win pdata u = do
(fromIntegral nCloudIs) (fromIntegral nCloudIs)
GL_UNSIGNED_SHORT GL_UNSIGNED_SHORT
nullPtr nullPtr
glEnable GL_CULL_FACE -- glEnable GL_CULL_FACE
glEnable GL_DEPTH_CLAMP -- glEnable GL_DEPTH_CLAMP
glCullFace GL_BACK -- glCullFace GL_BACK
drawShader (_windowShader pdata) nWins ---- drawShader (_windowShader pdata) nWins
glDisable GL_DEPTH_CLAMP -- glDisable GL_DEPTH_CLAMP
glDisable GL_CULL_FACE -- glDisable GL_CULL_FACE
when (_graphics_cloud_shadows cfig) $ do when (_gr_cloud_shadows cfig) $ do
----render transparency depths ----render transparency depths
glDepthMask GL_TRUE -- glDepthMask GL_TRUE
glDepthFunc GL_ALWAYS glDepthFunc GL_ALWAYS
glDisable GL_BLEND glDisable GL_BLEND
withArray [GL_NONE, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2] $ withArray [GL_NONE, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2] $
@@ -317,24 +317,25 @@ doDrawing' win pdata u = do
glEnable GL_BLEND glEnable GL_BLEND
-- we sum the positions weighted by alpha, and sum the alpha -- we sum the positions weighted by alpha, and sum the alpha
glBlendFuncSeparatei 1 GL_SRC_ALPHA GL_ONE GL_ONE GL_ONE glBlendFuncSeparatei 1 GL_SRC_ALPHA GL_ONE GL_ONE GL_ONE
--glBlendFuncSeparatei 1 GL_ONE GL_ZERO GL_ONE GL_ZERO
-- and sum the normals weighted by alpha -- and sum the normals weighted by alpha
--glBlendFunci 2 GL_SRC_ALPHA GL_ONE --glBlendFunci 2 GL_SRC_ALPHA GL_ONE
glBlendFunci 2 GL_SRC_ALPHA GL_ONE glBlendFunci 2 GL_SRC_ALPHA GL_ONE
glUseProgram (pdata ^. cloudShader . shaderUINT) glUseProgram (pdata ^. cloudShader . shaderUINT)
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
glDepthMask GL_TRUE -- glDepthMask GL_TRUE
glDrawElements glDrawElements
(pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode) (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
(fromIntegral nCloudIs) (fromIntegral nCloudIs)
GL_UNSIGNED_SHORT GL_UNSIGNED_SHORT
nullPtr nullPtr
--- ---
glEnable GL_CULL_FACE -- glEnable GL_CULL_FACE
glEnable GL_DEPTH_CLAMP -- glEnable GL_DEPTH_CLAMP
glCullFace GL_BACK -- glCullFace GL_BACK
drawShader (_windowShader pdata) nWins ---- drawShader (_windowShader pdata) nWins
glDisable GL_DEPTH_CLAMP -- glDisable GL_DEPTH_CLAMP
glDisable GL_CULL_FACE -- glDisable GL_CULL_FACE
-- drawShader (_windowShader pdata) nWins -- drawShader (_windowShader pdata) nWins
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboPos . _1 . unFBO) glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboPos . _1 . unFBO)
withArray [0, 0, 0, 0] $ \ptr -> withArray [0, 0, 0, 0] $ \ptr ->
@@ -360,6 +361,22 @@ doDrawing' win pdata u = do
(pdata ^. fboCloud . _2 . _3) (pdata ^. fboCloud . _2 . _3)
lightPoints lightPoints
pdata pdata
--draw windows onto window buffer
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboWindow . _1 . unFBO)
withArray [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1] $
glNamedFramebufferDrawBuffers (pdata ^. fboWindow . _1 . unFBO) 2
withArray [0, 0, 0, 0] $
glClearNamedFramebufferfv (pdata ^. fboWindow . _1 . unFBO) GL_COLOR 0
withArray [0, 0, 0, 0] $
glClearNamedFramebufferfv (pdata ^. fboWindow . _1 . unFBO) GL_COLOR 1
glEnable GL_CULL_FACE
glEnable GL_DEPTH_CLAMP
glDepthFunc GL_LEQUAL
glCullFace GL_BACK
glDisable GL_BLEND
drawShader (_windowShader pdata) nWins
glDisable GL_DEPTH_CLAMP
glDisable GL_CULL_FACE
glInvalidateBufferData (pdata ^. vboShapes . vboName) glInvalidateBufferData (pdata ^. vboShapes . vboName)
--apply lightmap to cloud buffer --apply lightmap to cloud buffer
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboCloud pdata))) glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboCloud pdata)))
@@ -374,13 +391,24 @@ doDrawing' win pdata u = do
drawShader (_fullscreenShader pdata) 4 drawShader (_fullscreenShader pdata) 4
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
-- bind base buffer for drawing clouds and bloom -- bind base buffer for drawing clouds and bloom
--glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboBase pdata))) --glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboBase pdata)))
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO) glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
--draw shadowed clouds onto base buffer -- --draw shadowed clouds onto base buffer
glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _1 . unTO) -- glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _1 . unTO)
drawShader (_fullscreenShader pdata) 4 -- drawShader (_fullscreenShader pdata) 4
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
-- --draw windows onto base buffer
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
glBindTextureUnit 0 (pdata ^. fboWindow . _2 . _1 . unTO)
glBindTextureUnit 1 (pdata ^. fboWindow . _2 . _2 . unTO)
glBindTextureUnit 2 (pdata ^. fboCloud . _2 . _1 . unTO)
--glBindTextureUnit 3 (pdata ^. fboCloud . _2 . _2 . unTO)
glBindTextureUnit 3 (pdata ^. fboPos . _2 . unTO)
drawShader (_transparencyCompShader pdata) 4
--Draw blurred bloom onto base buffer --Draw blurred bloom onto base buffer
glEnable GL_BLEND glEnable GL_BLEND
@@ -388,7 +416,8 @@ doDrawing' win pdata u = do
--glBlendFunc GL_ONE GL_ONE --glBlendFunc GL_ONE GL_ONE
glBindTextureUnit 0 (_unTO . snd $ _fboHalf1 pdata) glBindTextureUnit 0 (_unTO . snd $ _fboHalf1 pdata)
drawShader (_fullscreenShader pdata) 4 drawShader (_fullscreenShader pdata) 4
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA -- glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
--set viewport for radial distortion --set viewport for radial distortion
--setViewportSize (round winx) (round winy) --setViewportSize (round winx) (round winy)
@@ -397,7 +426,7 @@ doDrawing' win pdata u = do
glBlendFunc GL_ONE GL_ZERO glBlendFunc GL_ONE GL_ZERO
-- perform any radial distortion -- perform any radial distortion
-- this is hideous -- this is hideous
case (getDistortions cfig w, cfig ^. graphics_distortions) of case (getDistortions cfig w, cfig ^. gr_distortions) of
(rds, x) | null rds || not x -> do (rds, x) | null rds || not x -> do
glBindTextureUnit 0 $ pdata ^. fboBase . _2 . _1 . unTO glBindTextureUnit 0 $ pdata ^. fboBase . _2 . _1 . unTO
glBindFramebuffer GL_FRAMEBUFFER 0 glBindFramebuffer GL_FRAMEBUFFER 0
@@ -440,7 +469,7 @@ bufferPerspectiveMatrixUBO cfig cam uboid = withArray
getDistortions :: Config -> World -> [Distortion] getDistortions :: Config -> World -> [Distortion]
getDistortions cfig w getDistortions cfig w
| cfig ^. graphics_distortions = w ^. cWorld . lWorld . distortions | cfig ^. gr_distortions = w ^. cWorld . lWorld . distortions
| otherwise = [] | otherwise = []
setViewport :: (Config -> ResFactor) -> Config -> IO () setViewport :: (Config -> ResFactor) -> Config -> IO ()
+1 -1
View File
@@ -13,7 +13,7 @@ import Control.Lens
lightsToRender :: Config -> Camera -> LWorld -> [(Point3, Float, Point3)] lightsToRender :: Config -> Camera -> LWorld -> [(Point3, Float, Point3)]
{-# INLINE lightsToRender #-} {-# INLINE lightsToRender #-}
lightsToRender cfig campos w = take (fromEnum $ cfig ^. graphics_num_shadow_casters) $ lightsToRender cfig campos w = take (fromEnum $ cfig ^. gr_num_shadow_casters) $
sortOn (\(_,x,_) -> negate x) $ sortOn (\(_,x,_) -> negate x) $
mapMaybe getLS (IM.elems $ w ^. lightSources) mapMaybe getLS (IM.elems $ w ^. lightSources)
++ mapMaybe getlsparam (w ^. lights) ++ mapMaybe getlsparam (w ^. lights)
+1 -1
View File
@@ -1,4 +1,4 @@
module Dodge.WindowSize where module Dodge.WindowSize (getWindowSize) where
import Dodge.Data.Config import Dodge.Data.Config
+63 -69
View File
@@ -3,15 +3,13 @@
{- | Concerns resizing framebuffers on the fly. {- | Concerns resizing framebuffers on the fly.
- Seems to need to be called at least once. - Seems to need to be called at least once.
-} -}
module Framebuffer.Update ( module Framebuffer.Update (sizeFBOs) where
sizeFBOs,
) where
import Dodge.WindowSize
import Control.Lens import Control.Lens
import Control.Monad import Control.Monad
import Data.Preload.Render import Data.Preload.Render
import Dodge.Data.Config import Dodge.Data.Config
import Dodge.WindowSize
import Foreign.Marshal.Array import Foreign.Marshal.Array
import Framebuffer.Check import Framebuffer.Check
import GLHelp import GLHelp
@@ -19,16 +17,13 @@ import Graphics.GL.Core45
import Shader.Data import Shader.Data
import Unsafe.Coerce import Unsafe.Coerce
sizeFBOs :: sizeFBOs :: Config -> RenderData -> IO RenderData
Config ->
RenderData ->
IO RenderData
sizeFBOs cfig rdata = sizeFBOs cfig rdata =
uncurry (resizeRBO (_rboBaseBloom rdata)) (getWindowSize _graphics_world_resolution cfig) uncurry (resizeRBO (_rboBaseBloom rdata)) (getWindowSize _gr_world_res cfig)
>> foldM >> foldM
( uncurry ( uncurry
updateFBOTO3 updateFBOTO3
(getWindowSize _graphics_world_resolution cfig) (getWindowSize _gr_world_res cfig)
GL_NEAREST GL_NEAREST
GL_NEAREST GL_NEAREST
GL_RGBA8 GL_RGBA8
@@ -38,43 +33,40 @@ sizeFBOs cfig rdata =
rdata rdata
[fboBase, fboCloud] [fboBase, fboCloud]
>>= foldUpdateFBOTO >>= foldUpdateFBOTO
_graphics_world_resolution _gr_world_res
GL_NEAREST GL_NEAREST
GL_NEAREST GL_NEAREST
GL_RGBA8 GL_RGBA8
[fboLighting] [fboLighting]
>>= foldUpdateFBOTO >>= foldUpdateFBOTO
_graphics_world_resolution _gr_world_res
GL_LINEAR_MIPMAP_LINEAR GL_LINEAR_MIPMAP_LINEAR
GL_LINEAR GL_LINEAR
GL_RGBA16F GL_RGBA16F
[fboBloom, fboPos] [fboBloom, fboPos]
>>= foldUpdateFBOTO >>= foldUpdateFBOTO
_graphics_distortion_resolution _gr_distortion_res
GL_LINEAR GL_LINEAR
GL_NEAREST GL_NEAREST
GL_RGBA8 GL_RGBA8
[fbo2, fbo3] [fbo2, fbo3]
>>= foldUpdateFBOTO >>= foldUpdateFBOTO
_graphics_downsize_resolution _gr_downsize_res
GL_LINEAR_MIPMAP_LINEAR GL_LINEAR_MIPMAP_LINEAR
GL_LINEAR GL_LINEAR
GL_RGBA16F GL_RGBA16F
[fboHalf1, fboHalf2] [fboHalf1, fboHalf2]
>>= uncurry updateFBOTO2
(getWindowSize _gr_world_res cfig)
GL_NEAREST
GL_NEAREST
GL_RGBA8
GL_RGBA16F
fboWindow
where where
updateFBOTO' f = updateFBOTO' f = uncurry updateFBOTO (getWindowSize f cfig)
uncurry foldUpdateFBOTO f minfilt magfilt format =
updateFBOTO ffoldM ( updateFBOTO' f minfilt magfilt format)
(getWindowSize f cfig)
foldUpdateFBOTO f minfilt magfilt format l =
ffoldM
( updateFBOTO'
f
minfilt
magfilt
format
)
l
ffoldM :: (Foldable t, Monad m) => (a1 -> a2 -> m a1) -> t a2 -> a1 -> m a1 ffoldM :: (Foldable t, Monad m) => (a1 -> a2 -> m a1) -> t a2 -> a1 -> m a1
ffoldM f = flip $ foldM f ffoldM f = flip $ foldM f
@@ -98,23 +90,25 @@ updateFBOTO xsize ysize minfilt magfilt inFormat pdata target = do
newfbo2 <- resizeFBOTO (pdata ^# target) xsize ysize minfilt magfilt inFormat newfbo2 <- resizeFBOTO (pdata ^# target) xsize ysize minfilt magfilt inFormat
return $ storing target newfbo2 pdata return $ storing target newfbo2 pdata
--updateFBOTO2 :: -- note that the ordering of arguments is different to the other update
-- Int -> -- functions... this all needs rethinking
-- Int -> updateFBOTO2 ::
-- -- | minification filter Int ->
-- GLenum -> Int ->
-- -- | magnification filter -- | minification filter
-- GLenum -> GLenum ->
-- -- | internal color format texture1 -- | magnification filter
-- GLenum -> GLenum ->
-- -- | internal color format texture2 -- | internal color format texture1
-- GLenum -> GLenum ->
-- RenderData -> -- | internal color format texture2
-- ALens' RenderData (FBO, (TO, TO)) -> GLenum ->
-- IO RenderData ALens' RenderData (FBO, (TO, TO)) ->
--updateFBOTO2 xsize ysize minfilt magfilt inFormat1 inFormat2 pdata target = do RenderData ->
-- newfbo2 <- resizeFBOTO2 (pdata ^# target) xsize ysize minfilt magfilt inFormat1 inFormat2 IO RenderData
-- return $ storing target newfbo2 pdata updateFBOTO2 xsize ysize minfilt magfilt inFormat1 inFormat2 target pdata = do
newfbo2 <- resizeFBOTO2 (pdata ^# target) xsize ysize minfilt magfilt inFormat1 inFormat2
return $ storing target newfbo2 pdata
updateFBOTO3 :: updateFBOTO3 ::
Int -> Int ->
@@ -136,29 +130,29 @@ updateFBOTO3 xsize ysize minfilt magfilt inFormat1 inFormat2 inFormat3 pdata tar
newfbo2 <- resizeFBOTO3 (pdata ^# target) xsize ysize minfilt magfilt inFormat1 inFormat2 inFormat3 newfbo2 <- resizeFBOTO3 (pdata ^# target) xsize ysize minfilt magfilt inFormat1 inFormat2 inFormat3
return $ storing target newfbo2 pdata return $ storing target newfbo2 pdata
--resizeFBOTO2 :: resizeFBOTO2 ::
-- (FBO, (TO, TO)) -> (FBO, (TO, TO)) ->
-- Int -> Int ->
-- Int -> Int ->
-- -- | minification filter -- | minification filter
-- GLenum -> GLenum ->
-- -- | magnification filter -- | magnification filter
-- GLenum -> GLenum ->
-- -- | internal color format1 -- | internal color format1
-- GLenum -> GLenum ->
-- -- | internal color format2 -- | internal color format2
-- GLenum -> GLenum ->
-- IO (FBO, (TO, TO)) IO (FBO, (TO, TO))
--resizeFBOTO2 (fbo, (toOld1, toOld2)) xsize ysize minfilt magfilt inFormat1 inFormat2 = do resizeFBOTO2 (fbo, (toOld1, toOld2)) xsize ysize minfilt magfilt inFormat1 inFormat2 = do
-- glBindFramebuffer GL_FRAMEBUFFER (_unFBO fbo) glBindFramebuffer GL_FRAMEBUFFER (_unFBO fbo)
-- mglDelete glDeleteTextures $ _unTO toOld1 mglDelete glDeleteTextures $ _unTO toOld1
-- mglDelete glDeleteTextures $ _unTO toOld2 mglDelete glDeleteTextures $ _unTO toOld2
-- to1 <- initializeTexture2D fbo GL_COLOR_ATTACHMENT0 xsize ysize minfilt magfilt inFormat1 to1 <- initializeTexture2D fbo GL_COLOR_ATTACHMENT0 xsize ysize minfilt magfilt inFormat1
-- to2 <- initializeTexture2D fbo GL_COLOR_ATTACHMENT1 xsize ysize minfilt magfilt inFormat2 to2 <- initializeTexture2D fbo GL_COLOR_ATTACHMENT1 xsize ysize minfilt magfilt inFormat2
-- withArray [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1] $ \ptr -> withArray [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1] $ \ptr ->
-- glNamedFramebufferDrawBuffers (_unFBO fbo) 2 ptr glNamedFramebufferDrawBuffers (_unFBO fbo) 2 ptr
-- checkFBO fbo checkFBO fbo
-- return (fbo, (TO to1, TO to2)) return (fbo, (TO to1, TO to2))
resizeFBOTO3 :: resizeFBOTO3 ::
(FBO, (TO, TO, TO)) -> (FBO, (TO, TO, TO)) ->
@@ -219,5 +213,5 @@ initializeTexture2D fbo attachpoint x y minfilt magfilt informat = do
--getWindowSize :: Integral a => (Config -> ResFactor) -> Config -> (a, a) --getWindowSize :: Integral a => (Config -> ResFactor) -> Config -> (a, a)
--getWindowSize f cfig = (g _windowX, g _windowY) --getWindowSize f cfig = (g _windowX, g _windowY)
-- where -- where
-- g h = fromIntegral $ h cfig `div` resFactorNum (f cfig) -- g h = fromIntegral $ h cfig `div` resFactorNum (f cfig)
+1 -1
View File
@@ -6,7 +6,7 @@ import Foreign.Storable
import Graphics.GL.Core45 import Graphics.GL.Core45
mglCreate :: (GLsizei -> Ptr GLuint -> IO ()) -> IO GLuint mglCreate :: (GLsizei -> Ptr GLuint -> IO ()) -> IO GLuint
mglCreate f = do mglCreate f =
alloca $ \nameptr -> do alloca $ \nameptr -> do
f 1 nameptr f 1 nameptr
peek nameptr peek nameptr
+6
View File
@@ -112,6 +112,8 @@ preloadRender = do
(_, screentexturevao) <- setupStaticVBOVAO (toFloatVAs [2, 2]) (concat cornerList) (_, screentexturevao) <- setupStaticVBOVAO (toFloatVAs [2, 2]) (concat cornerList)
alphadivideshader <- makeShaderUsingVAO "texture2D/alphaDivide" [vert, frag] pmTriangleStrip screentexturevao alphadivideshader <- makeShaderUsingVAO "texture2D/alphaDivide" [vert, frag] pmTriangleStrip screentexturevao
fsShad <- makeShaderUsingVAO "texture/simple" [vert, frag] pmTriangleStrip screentexturevao fsShad <- makeShaderUsingVAO "texture/simple" [vert, frag] pmTriangleStrip screentexturevao
transcompshader <- makeShaderUsingVAO
"fullscreen/transparencyComp" [vert, frag] pmTriangleStrip screentexturevao
bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert, frag] pmTriangleStrip screentexturevao bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert, frag] pmTriangleStrip screentexturevao
colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert, frag] pmTriangleStrip screentexturevao colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert, frag] pmTriangleStrip screentexturevao
grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert, frag] pmTriangleStrip screentexturevao grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert, frag] pmTriangleStrip screentexturevao
@@ -152,8 +154,10 @@ preloadRender = do
800 800
600 600
-- if adding to this list, recall you need to sizeFBOs
fboBaseName <- setupFramebuffer3GivenStencil rboBaseBloomName fboBaseName <- setupFramebuffer3GivenStencil rboBaseBloomName
fboCloudName <- setupFramebuffer3GivenStencil rboBaseBloomName fboCloudName <- setupFramebuffer3GivenStencil rboBaseBloomName
fbowindow <- setupFramebuffer2GivenStencil rboBaseBloomName
fboBloomName <- setupFramebufferGivenStencil rboBaseBloomName fboBloomName <- setupFramebufferGivenStencil rboBaseBloomName
fboPosName <- setupFramebufferGivenStencil rboBaseBloomName fboPosName <- setupFramebufferGivenStencil rboBaseBloomName
fboLightingName <- setupFramebufferGivenStencil rboBaseBloomName fboLightingName <- setupFramebufferGivenStencil rboBaseBloomName
@@ -178,6 +182,7 @@ preloadRender = do
, _ceilingStencilShader = ceilingstencilshader , _ceilingStencilShader = ceilingstencilshader
, _windowShader = windowshader , _windowShader = windowshader
, _fullscreenShader = fsShad , _fullscreenShader = fsShad
, _transparencyCompShader = transcompshader
, _alphaDivideShader = alphadivideshader , _alphaDivideShader = alphadivideshader
, _lightingTextureShader = lightingTextureShad , _lightingTextureShader = lightingTextureShad
, _bloomBlurShader = bloomBlurShad , _bloomBlurShader = bloomBlurShad
@@ -190,6 +195,7 @@ preloadRender = do
, _fboHalf2 = fboHalf2Name , _fboHalf2 = fboHalf2Name
, _fboLighting = fboLightingName , _fboLighting = fboLightingName
, _fboBase = fboBaseName , _fboBase = fboBaseName
, _fboWindow = fbowindow
, _fboCloud = fboCloudName , _fboCloud = fboCloudName
, _fboBloom = fboBloomName , _fboBloom = fboBloomName
, _fboPos = fboPosName , _fboPos = fboPosName
+2 -5
View File
@@ -23,15 +23,12 @@ updatePreload u =
(renderDataResizeUpdate (u ^. uvConfig)) (renderDataResizeUpdate (u ^. uvConfig))
u u
renderDataResizeUpdate :: renderDataResizeUpdate :: Config -> RenderData -> IO RenderData
Config ->
RenderData ->
IO RenderData
renderDataResizeUpdate cfig rdata = do renderDataResizeUpdate cfig rdata = do
rdata' <- sizeFBOs cfig rdata rdata' <- sizeFBOs cfig rdata
bbVert <- BS.readFile "shader/texture/bloomBlur.vert" bbVert <- BS.readFile "shader/texture/bloomBlur.vert"
bbFrag <- BS.readFile "shader/texture/bloomBlur.frag" bbFrag <- BS.readFile "shader/texture/bloomBlur.frag"
let (xsize, ysize) = getWindowSize _graphics_downsize_resolution cfig :: (Int, Int) let (xsize, ysize) = getWindowSize _gr_downsize_res cfig :: (Int, Int)
(bh, bmid) = BS.breakSubstring "(" bbFrag (bh, bmid) = BS.breakSubstring "(" bbFrag
(_, btt) = BS.breakSubstring ")" bmid (_, btt) = BS.breakSubstring ")" bmid
bbFrag' = BS.append bh $ BS.append (BSC.pack $ '(' : show xsize ++ "," ++ show ysize) btt bbFrag' = BS.append bh $ BS.append (BSC.pack $ '(' : show xsize ++ "," ++ show ysize) btt
+1 -1
View File
@@ -43,7 +43,7 @@ createLightMap cfig = case shadrendertype of
NoLighting -> const . const . const . const . const . const renderFlatLighting NoLighting -> const . const . const . const . const . const renderFlatLighting
_ -> renderShadows shadrendertype _ -> renderShadows shadrendertype
where where
shadrendertype = cfig ^. graphics_shadow_rendering shadrendertype = cfig ^. gr_shadow_rendering
renderLightingNoShadows :: renderLightingNoShadows ::
TO -> TO ->
+32 -29
View File
@@ -1779,6 +1779,7 @@ _fboHalf1 src/Data/Preload/Render.hs 32;" f
_fboHalf2 src/Data/Preload/Render.hs 33;" f _fboHalf2 src/Data/Preload/Render.hs 33;" f
_fboLighting src/Data/Preload/Render.hs 39;" f _fboLighting src/Data/Preload/Render.hs 39;" f
_fboPos src/Data/Preload/Render.hs 38;" f _fboPos src/Data/Preload/Render.hs 38;" f
_fboWindow src/Data/Preload/Render.hs 36;" f
_flItPos src/Dodge/Data/FloorItem.hs 11;" f _flItPos src/Dodge/Data/FloorItem.hs 11;" f
_flItRot src/Dodge/Data/FloorItem.hs 11;" f _flItRot src/Dodge/Data/FloorItem.hs 11;" f
_flPos src/Dodge/Data/Flame.hs 13;" f _flPos src/Dodge/Data/Flame.hs 13;" f
@@ -1818,15 +1819,15 @@ _grLinkDirs src/Dodge/GameRoom.hs 18;" f
_grName src/Dodge/GameRoom.hs 19;" f _grName src/Dodge/GameRoom.hs 19;" f
_grViewpoints src/Dodge/GameRoom.hs 13;" f _grViewpoints src/Dodge/GameRoom.hs 13;" f
_grViewpointsEx src/Dodge/GameRoom.hs 14;" f _grViewpointsEx src/Dodge/GameRoom.hs 14;" f
_graphics_bloom src/Dodge/Data/Config.hs 44;" f _gr_bloom src/Dodge/Data/Config.hs 44;" f
_graphics_cloud_shadows src/Dodge/Data/Config.hs 42;" f _gr_cloud_shadows src/Dodge/Data/Config.hs 42;" f
_graphics_distortion_resolution src/Dodge/Data/Config.hs 49;" f _gr_distortion_res src/Dodge/Data/Config.hs 49;" f
_graphics_distortions src/Dodge/Data/Config.hs 43;" f _gr_distortions src/Dodge/Data/Config.hs 43;" f
_graphics_downsize_resolution src/Dodge/Data/Config.hs 47;" f _gr_downsize_res src/Dodge/Data/Config.hs 47;" f
_graphics_num_shadow_casters src/Dodge/Data/Config.hs 50;" f _gr_num_shadow_casters src/Dodge/Data/Config.hs 50;" f
_graphics_shadow_rendering src/Dodge/Data/Config.hs 45;" f _gr_shadow_rendering src/Dodge/Data/Config.hs 45;" f
_graphics_shadow_size src/Dodge/Data/Config.hs 46;" f _gr_shadow_size src/Dodge/Data/Config.hs 46;" f
_graphics_world_resolution src/Dodge/Data/Config.hs 48;" f _gr_world_res src/Dodge/Data/Config.hs 48;" f
_grayscaleShader src/Data/Preload/Render.hs 25;" f _grayscaleShader src/Data/Preload/Render.hs 25;" f
_gsZoning src/Dodge/Data/World.hs 54;" f _gsZoning src/Dodge/Data/World.hs 54;" f
_guID src/Dodge/Data/Gust.hs 12;" f _guID src/Dodge/Data/Gust.hs 12;" f
@@ -2700,7 +2701,7 @@ brightX src/Color.hs 116;" f
btSPic src/Dodge/Render/ShapePicture.hs 129;" f btSPic src/Dodge/Render/ShapePicture.hs 129;" f
btText src/Dodge/Inventory/SelectionList.hs 237;" f btText src/Dodge/Inventory/SelectionList.hs 237;" f
bufferEBO src/Shader/Bind.hs 28;" f bufferEBO src/Shader/Bind.hs 28;" f
bufferPerspectiveMatrixUBO src/Dodge/Render.hs 435;" f bufferPerspectiveMatrixUBO src/Dodge/Render.hs 456;" f
bufferPokedVBO src/Shader/Bind.hs 19;" f bufferPokedVBO src/Shader/Bind.hs 19;" f
bufferShaderLayers src/Shader/Bind.hs 36;" f bufferShaderLayers src/Shader/Bind.hs 36;" f
bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f
@@ -2793,7 +2794,7 @@ clang2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 676;" f
clangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 542;" f clangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 542;" f
cldtPropagateFold src/Dodge/DoubleTree.hs 358;" f cldtPropagateFold src/Dodge/DoubleTree.hs 358;" f
cleanUpPreload src/Preload.hs 10;" f cleanUpPreload src/Preload.hs 10;" f
cleanUpRenderPreload src/Preload/Render.hs 237;" f cleanUpRenderPreload src/Preload/Render.hs 240;" f
cleanUpSoundPreload src/Preload.hs 15;" f cleanUpSoundPreload src/Preload.hs 15;" f
cleanupHalted src/Sound.hs 117;" f cleanupHalted src/Sound.hs 117;" f
cleatLabel src/Dodge/Cleat.hs 30;" f cleatLabel src/Dodge/Cleat.hs 30;" f
@@ -2879,7 +2880,7 @@ copier src/Dodge/Item/Scope.hs 88;" f
copierItemUpdate src/Dodge/Creature/State.hs 131;" f copierItemUpdate src/Dodge/Creature/State.hs 131;" f
copyItemToFloor src/Dodge/FloorItem.hs 14;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f
corDoor src/Dodge/Room/Room.hs 385;" f corDoor src/Dodge/Room/Room.hs 385;" f
cornerList src/Preload/Render.hs 214;" f cornerList src/Preload/Render.hs 217;" f
corpseOrGib src/Dodge/Creature/Update.hs 111;" f corpseOrGib src/Dodge/Creature/Update.hs 111;" f
corridor src/Dodge/Room/Corridor.hs 17;" f corridor src/Dodge/Room/Corridor.hs 17;" f
corridorBoss src/Dodge/LockAndKey.hs 133;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f
@@ -3127,8 +3128,8 @@ digitalRect src/Geometry.hs 302;" f
dim src/Color.hs 112;" f dim src/Color.hs 112;" f
dirtPoly src/Dodge/Room/RoadBlock.hs 74;" f dirtPoly src/Dodge/Room/RoadBlock.hs 74;" f
disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 650;" f disconnectItemS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 650;" f
displayConfig src/Dodge/Menu.hs 230;" f displayConfig src/Dodge/Menu.hs 224;" f
displayControls src/Dodge/Menu.hs 246;" f displayControls src/Dodge/Menu.hs 240;" f
displayFrameTicks src/Dodge/Render/Picture.hs 51;" f displayFrameTicks src/Dodge/Render/Picture.hs 51;" f
displayFreeSlots src/Dodge/DisplayInventory.hs 192;" f displayFreeSlots src/Dodge/DisplayInventory.hs 192;" f
displayIndents src/Dodge/DisplayInventory.hs 110;" f displayIndents src/Dodge/DisplayInventory.hs 110;" f
@@ -3445,7 +3446,7 @@ facesToVF src/Polyhedra/Geodesic.hs 69;" f
farWallDistDirection src/Dodge/Update/Camera.hs 244;" f farWallDistDirection src/Dodge/Update/Camera.hs 244;" f
fdiv src/ShortShow.hs 41;" f fdiv src/ShortShow.hs 41;" f
feet src/Dodge/Creature/Picture.hs 51;" f feet src/Dodge/Creature/Picture.hs 51;" f
ffoldM src/Framebuffer/Update.hs 79;" f ffoldM src/Framebuffer/Update.hs 71;" f
filter3 src/FoldableHelp.hs 76;" f filter3 src/FoldableHelp.hs 76;" f
filterSectionsPair src/Dodge/DisplayInventory.hs 157;" f filterSectionsPair src/Dodge/DisplayInventory.hs 157;" f
findBlips src/Dodge/RadarSweep.hs 63;" f findBlips src/Dodge/RadarSweep.hs 63;" f
@@ -3527,7 +3528,7 @@ g src/ShortShow.hs 48;" f
gLauncher src/Dodge/Item/Held/Launcher.hs 24;" f gLauncher src/Dodge/Item/Held/Launcher.hs 24;" f
gRandify src/Dodge/Randify.hs 11;" f gRandify src/Dodge/Randify.hs 11;" f
gadgetEffect src/Dodge/HeldUse.hs 47;" f gadgetEffect src/Dodge/HeldUse.hs 47;" f
gameOverMenu src/Dodge/Menu.hs 207;" f gameOverMenu src/Dodge/Menu.hs 201;" f
gameRoomFromRoom src/Dodge/Layout.hs 152;" f gameRoomFromRoom src/Dodge/Layout.hs 152;" f
gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f gameRoomViewpoints src/Dodge/Viewpoints.hs 35;" f
gameRoomsFromRooms src/Dodge/Layout.hs 149;" f gameRoomsFromRooms src/Dodge/Layout.hs 149;" f
@@ -3558,7 +3559,7 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 357;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 357;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 344;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 344;" f
getDebugMouseOver src/Dodge/Update.hs 377;" f getDebugMouseOver src/Dodge/Update.hs 377;" f
getDistortions src/Dodge/Render.hs 441;" f getDistortions src/Dodge/Render.hs 462;" f
getEdgesCrossing src/Dodge/Path.hs 42;" f getEdgesCrossing src/Dodge/Path.hs 42;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f
getInventoryPath src/Dodge/Inventory/Path.hs 9;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f
@@ -3710,10 +3711,10 @@ initWallZoning src/Dodge/Wall/Zone.hs 12;" f
initialRoomTree src/Dodge/Floor.hs 24;" f initialRoomTree src/Dodge/Floor.hs 24;" f
initialWorld src/Dodge/Initialisation.hs 15;" f initialWorld src/Dodge/Initialisation.hs 15;" f
initialisePlaying src/Sound.hs 77;" f initialisePlaying src/Sound.hs 77;" f
initializeGLState src/Preload/Render.hs 232;" f initializeGLState src/Preload/Render.hs 235;" f
initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f
initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f
initializeTexture2D src/Framebuffer/Update.hs 209;" f initializeTexture2D src/Framebuffer/Update.hs 201;" f
inorderNumberTree src/TreeHelp.hs 190;" f inorderNumberTree src/TreeHelp.hs 190;" f
insertAt src/Padding.hs 63;" f insertAt src/Padding.hs 63;" f
insertIMInZone src/Dodge/Base.hs 54;" f insertIMInZone src/Dodge/Base.hs 54;" f
@@ -3949,8 +3950,8 @@ lineThick src/Picture/Base.hs 234;" f
lineUp src/Dodge/Creature/Boid.hs 150;" f lineUp src/Dodge/Creature/Boid.hs 150;" f
linksDAGToPath src/Dodge/Room/Path.hs 13;" f linksDAGToPath src/Dodge/Room/Path.hs 13;" f
linksOnPath src/Dodge/Room/CheckConsistency.hs 6;" f linksOnPath src/Dodge/Room/CheckConsistency.hs 6;" f
listConfig src/Dodge/Menu.hs 239;" f listConfig src/Dodge/Menu.hs 233;" f
listControls src/Dodge/Menu.hs 251;" f listControls src/Dodge/Menu.hs 245;" f
listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f
listGuard src/Dodge/Creature/ReaderUpdate.hs 195;" f listGuard src/Dodge/Creature/ReaderUpdate.hs 195;" f
listSelectionColorPicture src/Dodge/DisplayInventory.hs 302;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 302;" f
@@ -4626,9 +4627,10 @@ resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 47;" f
resetPLUse src/Dodge/PlacementSpot.hs 92;" f resetPLUse src/Dodge/PlacementSpot.hs 92;" f
resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f
resetTerminal src/Dodge/WorldEffect.hs 109;" f resetTerminal src/Dodge/WorldEffect.hs 109;" f
resizeFBOTO src/Framebuffer/Update.hs 191;" f resizeFBOTO src/Framebuffer/Update.hs 183;" f
resizeFBOTO3 src/Framebuffer/Update.hs 163;" f resizeFBOTO2 src/Framebuffer/Update.hs 131;" f
resizeRBO src/Framebuffer/Update.hs 82;" f resizeFBOTO3 src/Framebuffer/Update.hs 155;" f
resizeRBO src/Framebuffer/Update.hs 74;" f
respawn src/Dodge/SpawnAt.hs 12;" f respawn src/Dodge/SpawnAt.hs 12;" f
restrictInLinks src/Dodge/RoomLink.hs 44;" f restrictInLinks src/Dodge/RoomLink.hs 44;" f
restrictLinkType src/Dodge/RoomLink.hs 34;" f restrictLinkType src/Dodge/RoomLink.hs 34;" f
@@ -4827,7 +4829,7 @@ setTiles src/Dodge/Layout.hs 67;" f
setTreeInts src/Dodge/Room/Tutorial.hs 98;" f setTreeInts src/Dodge/Room/Tutorial.hs 98;" f
setViewDistance src/Dodge/Update/Camera.hs 239;" f setViewDistance src/Dodge/Update/Camera.hs 239;" f
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
setViewport src/Dodge/Render.hs 446;" f setViewport src/Dodge/Render.hs 467;" f
setVol src/Dodge/Config.hs 47;" f setVol src/Dodge/Config.hs 47;" f
setWristShieldPos src/Dodge/Equipment.hs 49;" f setWristShieldPos src/Dodge/Equipment.hs 49;" f
setWristShieldPos src/Dodge/Euse.hs 38;" f setWristShieldPos src/Dodge/Euse.hs 38;" f
@@ -4927,7 +4929,7 @@ singleDT src/Dodge/DoubleTree.hs 10;" f
singleLDT src/Dodge/DoubleTree.hs 13;" f singleLDT src/Dodge/DoubleTree.hs 13;" f
singleton src/DoubleStack.hs 11;" f singleton src/DoubleStack.hs 11;" f
singletonTrie src/SimpleTrie.hs 20;" f singletonTrie src/SimpleTrie.hs 20;" f
sizeFBOs src/Framebuffer/Update.hs 22;" f sizeFBOs src/Framebuffer/Update.hs 20;" f
skColor src/Dodge/Spark/Draw.hs 14;" f skColor src/Dodge/Spark/Draw.hs 14;" f
skwareFadeTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 512;" f skwareFadeTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 512;" f
slap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 670;" f slap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 670;" f
@@ -5281,7 +5283,7 @@ unfoldrMID src/MonadHelp.hs 33;" f
unigate src/Dodge/Item/Scope.hs 102;" f unigate src/Dodge/Item/Scope.hs 102;" f
unitVectorAtAngle src/Geometry/Vector.hs 101;" f unitVectorAtAngle src/Geometry/Vector.hs 101;" f
unlockInv src/Dodge/Inventory/Lock.hs 12;" f unlockInv src/Dodge/Inventory/Lock.hs 12;" f
unpause src/Dodge/Menu.hs 212;" f unpause src/Dodge/Menu.hs 206;" f
unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 57;" f unsafeBlinkAction src/Dodge/Creature/Action/Blink.hs 57;" f
unsafeBlinker src/Dodge/Item/Held/Utility.hs 33;" f unsafeBlinker src/Dodge/Item/Held/Utility.hs 33;" f
unsafeSwapKeys src/IntMapHelp.hs 75;" f unsafeSwapKeys src/IntMapHelp.hs 75;" f
@@ -5332,8 +5334,9 @@ updateEnergyBall src/Dodge/EnergyBall.hs 31;" f
updateEnergyBalls src/Dodge/Update.hs 661;" f updateEnergyBalls src/Dodge/Update.hs 661;" f
updateEnterRegex src/Dodge/Update/Input/InGame.hs 505;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 505;" f
updateExpBarrel src/Dodge/Barreloid.hs 21;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f
updateFBOTO src/Framebuffer/Update.hs 85;" f updateFBOTO src/Framebuffer/Update.hs 77;" f
updateFBOTO3 src/Framebuffer/Update.hs 119;" f updateFBOTO2 src/Framebuffer/Update.hs 93;" f
updateFBOTO3 src/Framebuffer/Update.hs 111;" f
updateFlame src/Dodge/Flame.hs 19;" f updateFlame src/Dodge/Flame.hs 19;" f
updateFlames src/Dodge/Update.hs 658;" f updateFlames src/Dodge/Update.hs 658;" f
updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f