From a7a11ccc03400ef85f9b4e29a5b0aee296fff12f Mon Sep 17 00:00:00 2001 From: justin Date: Thu, 13 Nov 2025 17:52:01 +0000 Subject: [PATCH] Cleanup shaders --- shader/fullscreen/transparencyComp.vert | 7 +- shader/shape/basic.frag | 2 +- shader/shape/basic.vert | 13 --- shader/texture/bloomBlur.vert | 8 +- src/Data/Preload/Render.hs | 16 +-- src/Dodge/Render.hs | 14 +-- src/Framebuffer/Update.hs | 54 ++++++---- src/Preload/Render.hs | 48 ++------- src/Preload/Update.hs | 7 +- src/Render.hs | 20 ++-- src/Shader/Compile.hs | 20 +--- tags | 138 ++++++++++++------------ 12 files changed, 142 insertions(+), 205 deletions(-) diff --git a/shader/fullscreen/transparencyComp.vert b/shader/fullscreen/transparencyComp.vert index fa5cbb7f5..927b83cec 100644 --- a/shader/fullscreen/transparencyComp.vert +++ b/shader/fullscreen/transparencyComp.vert @@ -1,8 +1,7 @@ #version 450 core -layout(location = 0) in vec2 pos; -layout(location = 1) in vec2 texPos; +layout (std140, binding = 2) uniform PosTex { vec4 posTex[6]; }; out vec2 vTexPos; void main() { - gl_Position = vec4(pos, 0.0, 1.0); - vTexPos = texPos; + gl_Position = vec4(posTex[gl_VertexID].xy,0,1); + vTexPos = posTex[gl_VertexID].zw; } diff --git a/shader/shape/basic.frag b/shader/shape/basic.frag index c217f0445..1b55a92be 100644 --- a/shader/shape/basic.frag +++ b/shader/shape/basic.frag @@ -9,5 +9,5 @@ void main() { fCol = vCol; fPos = vPos; - fNorm = vNorm ; + fNorm = vNorm; } diff --git a/shader/shape/basic.vert b/shader/shape/basic.vert index 7859a3a0a..5ba16fe79 100644 --- a/shader/shape/basic.vert +++ b/shader/shape/basic.vert @@ -12,16 +12,3 @@ void main() { vNorm = unpackSnorm4x8(data[indices[gl_VertexID]].norm); gl_Position = theMat * vec4(vPos.xyz,1); } -//layout (location = 0) in vec4 pos; -//layout (location = 1) in vec4 col; -//layout (location = 2) in vec4 norm; -//layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; -//out vec4 vCol; -//out vec4 vPos; -//out vec4 vNorm; -//void main() { -// gl_Position = theMat * vec4(pos.xyz,1); -// vCol = col; -// vPos = pos; -// vNorm = norm; -//} diff --git a/shader/texture/bloomBlur.vert b/shader/texture/bloomBlur.vert index 09216fb41..2672e2b06 100644 --- a/shader/texture/bloomBlur.vert +++ b/shader/texture/bloomBlur.vert @@ -1,10 +1,8 @@ #version 450 core -layout (location = 0) in vec2 pos; -layout (location = 1) in vec2 texPos; -uniform vec2 winSize; +layout (std140, binding = 2) uniform PosTex { vec4 posTex[6]; }; out vec2 vTexPos; void main() { - gl_Position = vec4(pos,0,1); - vTexPos = texPos; + gl_Position = vec4(posTex[gl_VertexID].xy,0,1); + vTexPos = posTex[gl_VertexID].zw; } diff --git a/src/Data/Preload/Render.hs b/src/Data/Preload/Render.hs index a5d119f5e..c4d04e07a 100644 --- a/src/Data/Preload/Render.hs +++ b/src/Data/Preload/Render.hs @@ -14,18 +14,15 @@ data RenderData = RenderData { _shadWallShader :: GLuint , _lightingLineShadowShader :: GLuint , _lightingCapShader :: GLuint - , _lightingTextureShader :: Shader + , _lightingTextureShader :: GLuint , _ceilingStencilShader :: GLuint - , _alphaDivideShader :: Shader --- , _windowShader :: Shader + , _alphaDivideShader :: GLuint , _windowPullShader :: GLuint , _pullWallShader :: GLuint , _fullscreenShader :: GLuint - , _transparencyCompShader :: Shader - , _bloomBlurShader :: Shader - , _colorBlurShader :: Shader + , _transparencyCompShader :: GLuint + , _bloomBlurShader :: GLuint , _barrelShader :: (Shader,VBO) - , _grayscaleShader :: Shader , _shapeShader :: GLuint , _shapeEBO :: UintBO , _silhouetteEBO :: UintBO @@ -43,10 +40,6 @@ data RenderData = RenderData , _rboBaseBloom :: GLuint -- RenderbufferObject id , _matUBO :: GLuint -- BufferObject id , _lightUBO :: GLuint -- BufferObject id --- , _winSSBO :: GLuint --- , _wallSSBO :: GLuint --- , _shapeSSBO :: GLuint --- , _ishapeSSBO :: GLuint , _vboShapes :: VBO , _floorVBO :: VBO , _floorShader :: Shader @@ -56,7 +49,6 @@ data RenderData = RenderData , _wallVBO :: VBO , _cloudVBO :: VBO , _cloudShader :: GLuint - , _screenTextureVAO :: VAO , _dummyVAO :: VAO } diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index ff1672ea2..aea88e924 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -242,9 +242,10 @@ doDrawing' win pdata u = do -- withArray [0, 0, 0, 0] $ -- glClearNamedFramebufferfv (pdata ^. fboHalf2 . _1 . unFBO) GL_COLOR 0 -- glBlendFunc GL_ONE GL_ONE_MINUS_SRC_ALPHA - drawShader (_bloomBlurShader pdata) 4 + glUseProgram (_bloomBlurShader pdata) + glDrawArrays GL_TRIANGLES 0 6 when (cfig ^. gr_bloom) $ do - replicateM_ 2 $ + replicateM_ 1 $ pingPongBetween (_fboHalf1 pdata) (_fboHalf2 pdata) @@ -317,8 +318,7 @@ doDrawing' win pdata u = do ptr glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _2 . unTO) glDepthMask GL_FALSE --- drawShader (pdata ^. alphaDivideShader) 4 - glUseProgram (pdata ^. alphaDivideShader . shaderUINT) + glUseProgram (pdata ^. alphaDivideShader) glDrawArrays GL_TRIANGLES 0 6 ----draw lightmap for cloud buffer glDepthMask GL_TRUE @@ -370,7 +370,6 @@ doDrawing' win pdata u = do glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA -- bind base buffer for drawing clouds and bloom - --glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboBase pdata))) glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO) -- --draw shadowed clouds onto base buffer @@ -385,7 +384,10 @@ doDrawing' win pdata u = do glBindTextureUnit 2 (pdata ^. fboCloud . _2 . _1 . unTO) --glBindTextureUnit 3 (pdata ^. fboCloud . _2 . _2 . unTO) glBindTextureUnit 3 (pdata ^. fboPos . _2 . unTO) - drawShader (_transparencyCompShader pdata) 4 + + --drawShader (_transparencyCompShader pdata) 4 + glUseProgram (pdata ^. transparencyCompShader) + glDrawArrays GL_TRIANGLES 0 6 --Draw blurred bloom onto base buffer glEnable GL_BLEND diff --git a/src/Framebuffer/Update.hs b/src/Framebuffer/Update.hs index 776fd5157..59171e354 100644 --- a/src/Framebuffer/Update.hs +++ b/src/Framebuffer/Update.hs @@ -20,20 +20,29 @@ import Unsafe.Coerce sizeFBOs :: Config -> RenderData -> IO RenderData sizeFBOs cfig rdata = uncurry (resizeRBO (_rboBaseBloom rdata)) (getWindowSize _gr_world_res cfig) - >> foldM - ( uncurry - updateFBOTO3 - (getWindowSize _gr_world_res cfig) - GL_NEAREST - GL_NEAREST - GL_RGBA8 - GL_RGBA16F -- could possibly recover using depth in a clever way - -- but probably not, because the projection matrix is - -- not always on-center - GL_RGBA16F -- make this smaller? - ) + >> uncurry + updateFBOTO3 + (getWindowSize _gr_world_res cfig) + GL_NEAREST + GL_NEAREST + GL_RGBA8 + GL_RGBA16F -- could possibly recover using depth in a clever way + -- but probably not, because the projection matrix is + -- not always on-center + GL_RGBA16F -- make this smaller? rdata - [fboBase, fboCloud] + fboBase + >>= flip + ( uncurry + updateFBOTO3 + (getWindowSize _gr_world_res cfig) + GL_NEAREST + GL_NEAREST + GL_RGBA8 + GL_RGBA16F + GL_RGBA16F + ) + fboCloud >>= foldUpdateFBOTO _gr_world_res GL_NEAREST @@ -58,12 +67,15 @@ sizeFBOs cfig rdata = GL_LINEAR GL_RGBA16F [fboHalf1, fboHalf2] - >>= flip (uncurry updateFBOTO2 - (getWindowSize _gr_world_res cfig) - GL_NEAREST - GL_NEAREST - GL_RGBA8 - GL_RGBA16F) + >>= flip + ( uncurry + updateFBOTO2 + (getWindowSize _gr_world_res cfig) + GL_NEAREST + GL_NEAREST + GL_RGBA8 + GL_RGBA16F + ) fboWindow where updateFBOTO' f = uncurry updateFBOTO (getWindowSize f cfig) @@ -202,8 +214,8 @@ resizeFBOTO (fbo, oldto) xsize ysize minfilt magfilt form = do checkFBO fbo return (fbo, TO to1) -initializeTexture2D - :: FBO -> GLenum -> Int -> Int -> GLenum -> GLenum -> GLenum -> IO GLuint +initializeTexture2D :: + FBO -> GLenum -> Int -> Int -> GLenum -> GLenum -> GLenum -> IO GLuint initializeTexture2D fbo attachpoint x y minfilt magfilt form = do let xsize' = fromIntegral x ysize' = fromIntegral y diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index ca23dd8fa..dbbd56ac4 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -31,7 +31,7 @@ preloadRender = do putStrLn "Number cores available:" getNumCapabilities >>= print - -- set up uniform buffer object + -- set up uniform buffer objects putStrLn "Setup UBO" theUBO <- mglCreate glCreateBuffers glNamedBufferStorage theUBO 64 nullPtr GL_DYNAMIC_STORAGE_BIT @@ -43,7 +43,7 @@ preloadRender = do fulltexbo <- mglCreate glCreateBuffers let ftsize = fromIntegral $ sizeOf (0::Float) * 6 * 4 - withArray cornerList' $ \ptr -> + withArray cornerList $ \ptr -> glNamedBufferStorage fulltexbo ftsize ptr 0 glBindBufferBase GL_UNIFORM_BUFFER 2 fulltexbo @@ -121,20 +121,12 @@ preloadRender = do -- GL_NEAREST_MIPMAP_LINEAR GL_LINEAR ? initTexture2DArray 50 "data/charMaps/cMap16x32.Custom.png" 2 16 32 256 GL_NEAREST GL_NEAREST putStrLn "Setup full screen shaders" - (_, screentexturevao) <- setupStaticVBOVAO (toFloatVAs [2, 2]) (concat cornerList) - alphadivideshader <- makeShaderUsingVAO "texture2D/alphaDivide" [vert, frag] pmTriangleStrip screentexturevao +-- (_, screentexturevao) <- setupStaticVBOVAO (toFloatVAs [2, 2]) (concat cornerList) + alphadivideshader <- makeSourcedShader "texture2D/alphaDivide" [vert, frag] fsShad <- makeSourcedShader "texture/simple" [vert, frag] - transcompshader <- - makeShaderUsingVAO - "fullscreen/transparencyComp" - [vert, frag] - pmTriangleStrip - screentexturevao - bloomBlurShad <- makeShaderUsingVAO "texture/bloomBlur" [vert, frag] pmTriangleStrip screentexturevao - colorBlurShad <- makeShaderUsingVAO "texture/colorBlur" [vert, frag] pmTriangleStrip screentexturevao - grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert, frag] pmTriangleStrip screentexturevao - lightingTextureShad <- - makeShaderUsingVAO "lighting/texture" [vert, frag] pmTriangleStrip screentexturevao + transcompshader <- makeSourcedShader "fullscreen/transparencyComp" [vert, frag] + bloomBlurShad <- makeSourcedShader "texture/bloomBlur" [vert, frag] + lightingTextureShad <- makeSourcedShader "lighting/texture" [vert, frag] barrelShad <- makeShaderVBO "texture/barrel" [vert, geom, frag] (toFloatVAs [2, 2, 2, 1]) pmPoints -- blank wallShader putStrLn "Setup floor VBO, shader" @@ -154,21 +146,12 @@ preloadRender = do (toFloatVAs [3]) pmTriangles chasmvbo - -- putStrLn "Setup cloud VBO, shader" - -- let cloudverxsizes = [4, 4, 4] - -- cloudvbo <- setupVBO (floatSize * sum cloudverxsizes) - -- (cloudshader, cloudebo) <- - -- makeShaderEBO "cloud/basic" [vert, frag] (toFloatVAs cloudverxsizes) pmTriangles cloudvbo framebuf2 <- newTextureFramebuffer framebuf3 <- newTextureFramebuffer putStrLn "Setup framebuffers" rboBaseBloomName <- mglCreate glCreateRenderbuffers - glNamedRenderbufferStorage - rboBaseBloomName - GL_DEPTH24_STENCIL8 - 800 - 600 + glNamedRenderbufferStorage rboBaseBloomName GL_DEPTH24_STENCIL8 800 600 -- if adding to this list, recall you need to sizeFBOs fboBaseName <- setupFramebuffer3GivenStencil rboBaseBloomName @@ -203,9 +186,7 @@ preloadRender = do , _alphaDivideShader = alphadivideshader , _lightingTextureShader = lightingTextureShad , _bloomBlurShader = bloomBlurShad - , _colorBlurShader = colorBlurShad , _barrelShader = barrelShad - , _grayscaleShader = grayscaleShad , _fbo2 = framebuf2 , _fbo3 = framebuf3 , _fboHalf1 = fboHalf1Name @@ -228,20 +209,13 @@ preloadRender = do , _winVBO = winvbo , _cloudVBO = cloudvbo , _cloudShader = cloudshader - , _screenTextureVAO = screentexturevao +-- , _screenTextureVAO = screentexturevao , _dummyVAO = VAO dummyvao } --------------------end preloadRender -cornerList :: [[Float]] -cornerList = - [ [-1, 1, 0, 1] - , [-1, -1, 0, 0] - , [1, 1, 1, 1] - , [1, -1, 1, 0] - ] -cornerList' :: [Float] -cornerList' = concat +cornerList :: [Float] +cornerList = concat [ bl, br, tl , tl, br, tr ] diff --git a/src/Preload/Update.hs b/src/Preload/Update.hs index f02a9b3fa..d573026ae 100644 --- a/src/Preload/Update.hs +++ b/src/Preload/Update.hs @@ -32,10 +32,5 @@ renderDataResizeUpdate cfig rdata = do (bh, bmid) = BS.breakSubstring "(" bbFrag (_, btt) = BS.breakSubstring ")" bmid bbFrag' = BS.append bh $ BS.append (BSC.pack $ '(' : show xsize ++ "," ++ show ysize) btt - bbShad <- - makeByteStringShaderUsingVAO - "bloomBlur" - [(vert, bbVert), (frag, bbFrag')] - pmTriangleStrip - (rdata ^. screenTextureVAO) + bbShad <- makeShaderProgram "bloomBlur" [(vert, bbVert), (frag, bbFrag')] return rdata'{_bloomBlurShader = bbShad} diff --git a/src/Render.hs b/src/Render.hs index 8d55399cc..e745e23da 100644 --- a/src/Render.hs +++ b/src/Render.hs @@ -70,6 +70,7 @@ renderLightingNoShadows positiontexture normaltexture lightPoints pdata = do glStencilOpSeparate GL_FRONT GL_KEEP GL_KEEP GL_INCR_WRAP glStencilOpSeparate GL_BACK GL_KEEP GL_KEEP GL_DECR_WRAP flip VFSM.mapM_ (VFSM.fromList lightPoints) $ \(V3 x y z, rad, V3 r g b) -> do + withArray [x,y,z,1,r,g,b,rad] $ glNamedBufferSubData (pdata ^. lightUBO) 0 32 glDepthFunc GL_LESS -- setup stencil glColorMask GL_FALSE GL_FALSE GL_FALSE GL_FALSE @@ -88,14 +89,8 @@ renderLightingNoShadows positiontexture normaltexture lightPoints pdata = do glBindTextureUnit 1 (normaltexture ^. unTO) glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE glStencilFunc GL_EQUAL 0 255 - glUseProgram (ltextShad ^. shaderUINT) - glUniform3f 0 x y z - glUniform4f 1 r g b rad - glBindVertexArray $ ltextShad ^. shaderVAO . vaoName - glDrawArrays - (_unPrimitiveMode (_shaderPrimitive ltextShad)) - 0 - (fromIntegral (4 :: Int)) + glUseProgram ltextShad + glDrawArrays GL_TRIANGLES 0 6 --cleanup: may not be necessary, depending on what comes after... glDisable GL_CULL_FACE glStencilFunc GL_NOTEQUAL 128 255 @@ -200,7 +195,7 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li glDisable GL_CULL_FACE glColorMask GL_TRUE GL_TRUE GL_TRUE GL_FALSE glStencilFunc GL_EQUAL 0 255 - glUseProgram (ltextShad ^. shaderUINT) + glUseProgram ltextShad glDrawArrays GL_TRIANGLES 0 6 --cleanup: may not be necessary, depending on what comes after... -- glDisable GL_STENCIL_TEST @@ -213,15 +208,16 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li pingPongBetween :: (FBO, TO) -> (FBO, TO) -> - Shader -> + GLuint -> IO () pingPongBetween (fb1, to1) (fb2, to2) fs = do glBindFramebuffer GL_FRAMEBUFFER (_unFBO fb2) glBindTextureUnit 0 (_unTO to1) - drawShader fs 4 + glUseProgram fs + glDrawArrays GL_TRIANGLES 0 6 glBindFramebuffer GL_FRAMEBUFFER (_unFBO fb1) glBindTextureUnit 0 (_unTO to2) - drawShader fs 4 + glDrawArrays GL_TRIANGLES 0 6 renderLayer :: Layer -> diff --git a/src/Shader/Compile.hs b/src/Shader/Compile.hs index 2ff76a271..c546419e1 100644 --- a/src/Shader/Compile.hs +++ b/src/Shader/Compile.hs @@ -4,7 +4,8 @@ module Shader.Compile ( makeShaderEBO, makeShaderVBO, makeShaderUsingVBO, - makeByteStringShaderUsingVAO, + makeShaderProgram, +-- makeByteStringShaderUsingVAO, makeShaderUsingVAO, setupVAOUsingVBO, setupEBO, @@ -131,23 +132,6 @@ setupVBOStatic vertexsize = do --GL_STATIC_DRAW return VBO{_vboName = vboname, _vboPtr = thePtr, _vboVertexBytes = vertexsize} -makeByteStringShaderUsingVAO :: - -- | (Arbitrary) name of the shader - String -> - -- | Filetype extensions and shader data - [(GLenum, BS.ByteString)] -> - PrimitiveMode -> - VAO -> - IO Shader -makeByteStringShaderUsingVAO s shaderlist pm vao = do - prog <- makeShaderProgram s shaderlist - return - Shader - { _shaderUINT = prog - , _shaderVAO = vao - , _shaderPrimitive = pm - } - -- | Takes the VAO from elsewhere makeShaderUsingVAO :: -- | First part of the name of the shader diff --git a/tags b/tags index c2539eed3..8913873e7 100644 --- a/tags +++ b/tags @@ -1504,7 +1504,7 @@ _avMoveSpeed src/Dodge/Data/Creature/Misc.hs 65;" f _avStrength src/Dodge/Data/Creature/Misc.hs 62;" f _avatarMaterial src/Dodge/Data/Creature/Misc.hs 61;" f _avatarPulse src/Dodge/Data/Creature/Misc.hs 60;" f -_barrelShader src/Data/Preload/Render.hs 27;" f +_barrelShader src/Data/Preload/Render.hs 25;" f _barrelType src/Dodge/Data/Creature/Misc.hs 71;" f _bdColor src/Dodge/Data/Prop.hs 23;" f _bdMaxX src/Dodge/Data/Bounds.hs 12;" f @@ -1522,7 +1522,7 @@ _blPos src/Dodge/Data/Block.hs 26;" f _blShadows src/Dodge/Data/Block.hs 24;" f _blWallIDs src/Dodge/Data/Block.hs 22;" f _blocks src/Dodge/Data/LWorld.hs 125;" f -_bloomBlurShader src/Data/Preload/Render.hs 25;" f +_bloomBlurShader src/Data/Preload/Render.hs 24;" f _bmColor src/Dodge/Data/Beam.hs 21;" f _bmDamage src/Dodge/Data/Beam.hs 20;" f _bmDir src/Dodge/Data/Beam.hs 19;" f @@ -1588,8 +1588,8 @@ _cdtUp src/Dodge/Data/DoubleTree.hs 92;" f _ceSideEffect src/Dodge/Data/Universe.hs 66;" f _ceString src/Dodge/Data/Universe.hs 67;" f _ceilingStencilShader src/Data/Preload/Render.hs 18;" f -_chasmShader src/Data/Preload/Render.hs 54;" f -_chasmVBO src/Data/Preload/Render.hs 53;" f +_chasmShader src/Data/Preload/Render.hs 51;" f +_chasmVBO src/Data/Preload/Render.hs 50;" f _chasms src/Dodge/Data/CWorld.hs 33;" f _ciFilter src/Dodge/Data/HUD.hs 25;" f _ciInvIDs src/Dodge/Data/Combine.hs 9;" f @@ -1618,10 +1618,9 @@ _clickPos src/Dodge/Data/Input.hs 42;" f _clickWorldPos src/Dodge/Data/Input.hs 44;" f _closeButtons src/Dodge/Data/HUD.hs 36;" f _closeItems src/Dodge/Data/HUD.hs 35;" f -_cloudShader src/Data/Preload/Render.hs 58;" f -_cloudVBO src/Data/Preload/Render.hs 57;" f +_cloudShader src/Data/Preload/Render.hs 55;" f +_cloudVBO src/Data/Preload/Render.hs 54;" f _clouds src/Dodge/Data/LWorld.hs 96;" f -_colorBlurShader src/Data/Preload/Render.hs 26;" f _coolEnd src/Dodge/Data/TriggerType.hs 17;" f _coolSound src/Dodge/Data/Item/Params.hs 22;" f _coolStart src/Dodge/Data/TriggerType.hs 16;" f @@ -1749,7 +1748,7 @@ _dsZoning src/Dodge/Data/World.hs 48;" f _dtLeft src/Dodge/Data/DoubleTree.hs 29;" f _dtRight src/Dodge/Data/DoubleTree.hs 29;" f _dtValue src/Dodge/Data/DoubleTree.hs 29;" f -_dummyVAO src/Data/Preload/Render.hs 61;" f +_dummyVAO src/Data/Preload/Render.hs 57;" f _dusts src/Dodge/Data/LWorld.hs 97;" f _ebID src/Dodge/Data/EnergyBall/Type.hs 13;" f _ebPos src/Dodge/Data/EnergyBall.hs 17;" f @@ -1759,16 +1758,16 @@ _ebVel src/Dodge/Data/EnergyBall.hs 16;" f _emoMenuOption src/Dodge/Data/Universe.hs 77;" f _energyBalls src/Dodge/Data/LWorld.hs 104;" f _fbSize src/Dodge/Data/EnergyBall/Type.hs 12;" f -_fbo2 src/Data/Preload/Render.hs 33;" f -_fbo3 src/Data/Preload/Render.hs 34;" f -_fboBase src/Data/Preload/Render.hs 37;" f -_fboBloom src/Data/Preload/Render.hs 40;" f -_fboCloud src/Data/Preload/Render.hs 38;" f -_fboHalf1 src/Data/Preload/Render.hs 35;" f -_fboHalf2 src/Data/Preload/Render.hs 36;" f -_fboLighting src/Data/Preload/Render.hs 42;" f -_fboPos src/Data/Preload/Render.hs 41;" f -_fboWindow src/Data/Preload/Render.hs 39;" f +_fbo2 src/Data/Preload/Render.hs 30;" f +_fbo3 src/Data/Preload/Render.hs 31;" f +_fboBase src/Data/Preload/Render.hs 34;" f +_fboBloom src/Data/Preload/Render.hs 37;" f +_fboCloud src/Data/Preload/Render.hs 35;" f +_fboHalf1 src/Data/Preload/Render.hs 32;" f +_fboHalf2 src/Data/Preload/Render.hs 33;" f +_fboLighting src/Data/Preload/Render.hs 39;" 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 _flItRot src/Dodge/Data/FloorItem.hs 11;" f _flPos src/Dodge/Data/Flame.hs 13;" f @@ -1782,13 +1781,13 @@ _flboName src/Shader/Data.hs 87;" f _flboPtr src/Shader/Data.hs 88;" f _flboStride src/Shader/Data.hs 89;" f _floorItems src/Dodge/Data/LWorld.hs 127;" f -_floorShader src/Data/Preload/Render.hs 52;" f -_floorVBO src/Data/Preload/Render.hs 51;" f +_floorShader src/Data/Preload/Render.hs 49;" f +_floorVBO src/Data/Preload/Render.hs 48;" f _foreShapes src/Dodge/Data/LWorld.hs 132;" f _fsDir src/Dodge/Data/ForegroundShape.hs 14;" f _fsPos src/Dodge/Data/ForegroundShape.hs 13;" f _fsSPic src/Dodge/Data/ForegroundShape.hs 15;" f -_fullscreenShader src/Data/Preload/Render.hs 23;" f +_fullscreenShader src/Data/Preload/Render.hs 22;" f _futureWorlds src/Dodge/Data/World.hs 67;" f _futureWorlds src/Dodge/Data/World.hs 73;" f _gameplay_rotate_to_wall src/Dodge/Data/Config.hs 55;" f @@ -1820,7 +1819,6 @@ _gr_num_shadow_casters src/Dodge/Data/Config.hs 50;" f _gr_shadow_rendering src/Dodge/Data/Config.hs 45;" f _gr_shadow_size src/Dodge/Data/Config.hs 46;" f _gr_world_res src/Dodge/Data/Config.hs 48;" f -_grayscaleShader src/Data/Preload/Render.hs 28;" f _gsZoning src/Dodge/Data/World.hs 54;" f _guID src/Dodge/Data/Gust.hs 12;" f _guPos src/Dodge/Data/Gust.hs 13;" f @@ -1905,7 +1903,7 @@ _ldtRight src/Dodge/Data/DoubleTree.hs 35;" f _ldtValue src/Dodge/Data/DoubleTree.hs 33;" f _leadTargetBy src/Dodge/Data/ActionPlan.hs 115;" f _lightSources src/Dodge/Data/LWorld.hs 133;" f -_lightUBO src/Data/Preload/Render.hs 45;" f +_lightUBO src/Data/Preload/Render.hs 42;" f _lightingCapShader src/Data/Preload/Render.hs 16;" f _lightingLineShadowShader src/Data/Preload/Render.hs 15;" f _lightingTextureShader src/Data/Preload/Render.hs 17;" f @@ -1941,7 +1939,7 @@ _manObject src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 15;" f _mapInvItmID src/Dodge/Data/HUD.hs 20;" f _mapInvOffset src/Dodge/Data/HUD.hs 18;" f _mapInvZoom src/Dodge/Data/HUD.hs 19;" f -_matUBO src/Data/Preload/Render.hs 44;" f +_matUBO src/Data/Preload/Render.hs 41;" f _mbAttach src/Dodge/Data/MetaTree.hs 18;" f _mbTree src/Dodge/Data/MetaTree.hs 18;" f _mcColor src/Dodge/Data/Machine.hs 34;" f @@ -2044,7 +2042,7 @@ _phRemoteID src/Dodge/Data/Projectile.hs 41;" f _phTargetingID src/Dodge/Data/Projectile.hs 42;" f _pickUpLevel src/Dodge/Layout/Generate.hs 14;" f _pickUps src/Dodge/Layout/Generate.hs 15;" f -_pictureShaders src/Data/Preload/Render.hs 32;" f +_pictureShaders src/Data/Preload/Render.hs 29;" f _piercedPoints src/Dodge/Data/Creature/Misc.hs 87;" f _pjBarrelSpin src/Dodge/Data/Projectile.hs 23;" f _pjDetonatorID src/Dodge/Data/Projectile.hs 25;" f @@ -2087,7 +2085,7 @@ _psRoomEff src/Dodge/Data/GenWorld.hs 96;" f _psRoomRandPointNum src/Dodge/Data/GenWorld.hs 100;" f _psRot src/Dodge/Data/GenWorld.hs 92;" f _psSelect src/Dodge/Data/GenWorld.hs 95;" f -_pullWallShader src/Data/Preload/Render.hs 22;" f +_pullWallShader src/Data/Preload/Render.hs 21;" f _pulseBalls src/Dodge/Data/LWorld.hs 115;" f _pulseLasers src/Dodge/Data/LWorld.hs 114;" f _pulseProgress src/Dodge/Data/Creature/Misc.hs 54;" f @@ -2126,7 +2124,7 @@ _rbPos src/Dodge/Data/RadarBlip.hs 17;" f _rbRad src/Dodge/Data/RadarBlip.hs 16;" f _rbState src/Dodge/Data/World.hs 43;" f _rbTime src/Dodge/Data/RadarBlip.hs 14;" f -_rboBaseBloom src/Data/Preload/Render.hs 43;" f +_rboBaseBloom src/Data/Preload/Render.hs 40;" f _renderData src/Data/Preload.hs 11;" f _respawnDelay src/Dodge/Data/World.hs 62;" f _respawnPos src/Dodge/Data/LWorld.hs 145;" f @@ -2189,7 +2187,7 @@ _scOptions src/Dodge/Data/Universe.hs 84;" f _scPositionedMenuOption src/Dodge/Data/Universe.hs 86;" f _scSelectionList src/Dodge/Data/Universe.hs 88;" f _scTitle src/Dodge/Data/Universe.hs 83;" f -_screenTextureVAO src/Data/Preload/Render.hs 60;" f +_screenTextureVAO src/Data/Preload/Render.hs 56;" f _scrollAmount src/Dodge/Data/Input.hs 40;" f _scrollItemID src/Dodge/Data/World.hs 68;" f _scrollItemID src/Dodge/Data/World.hs 77;" f @@ -2220,9 +2218,9 @@ _shadWallShader src/Data/Preload/Render.hs 14;" f _shaderPrimitive src/Shader/Data.hs 53;" f _shaderUINT src/Shader/Data.hs 52;" f _shaderVAO src/Shader/Data.hs 54;" f -_shapeEBO src/Data/Preload/Render.hs 30;" f +_shapeEBO src/Data/Preload/Render.hs 27;" f _shapeHalfSize src/Shape/Data.hs 13;" f -_shapeShader src/Data/Preload/Render.hs 29;" f +_shapeShader src/Data/Preload/Render.hs 26;" f _shellPayload src/Dodge/Data/Item/Combine.hs 101;" f _shockwaves src/Dodge/Data/LWorld.hs 112;" f _siColor src/Dodge/Data/SelectionList.hs 47;" f @@ -2234,7 +2232,7 @@ _siPictures src/Dodge/Data/SelectionList.hs 43;" f _siWidth src/Dodge/Data/SelectionList.hs 45;" f _sideEffect src/Loop/Data.hs 13;" f _sideImpulses src/Dodge/Data/ActionPlan.hs 122;" f -_silhouetteEBO src/Data/Preload/Render.hs 31;" f +_silhouetteEBO src/Data/Preload/Render.hs 28;" f _skOldPos src/Dodge/Data/Spark.hs 14;" f _skPos src/Dodge/Data/Spark.hs 13;" f _skType src/Dodge/Data/Spark.hs 15;" f @@ -2335,7 +2333,7 @@ _toPlaySounds src/Dodge/Data/World.hs 39;" f _topBoxSize src/Shape/Data.hs 12;" f _tptString src/Dodge/Data/Terminal/Status.hs 15;" f _tractorBeams src/Dodge/Data/LWorld.hs 117;" f -_transparencyCompShader src/Data/Preload/Render.hs 24;" f +_transparencyCompShader src/Data/Preload/Render.hs 23;" f _trieChildren src/SimpleTrie.hs 12;" f _trieMVal src/SimpleTrie.hs 11;" f _triggers src/Dodge/Data/LWorld.hs 126;" f @@ -2399,7 +2397,7 @@ _vaType src/Shader/Data.hs 68;" f _vaoName src/Shader/Data.hs 64;" f _vboName src/Shader/Data.hs 80;" f _vboPtr src/Shader/Data.hs 81;" f -_vboShapes src/Data/Preload/Render.hs 50;" f +_vboShapes src/Data/Preload/Render.hs 47;" f _vboVertexBytes src/Shader/Data.hs 82;" f _vcCoolDown src/Dodge/Data/Creature/Misc.hs 22;" f _vcMaxCoolDown src/Dodge/Data/Creature/Misc.hs 21;" f @@ -2422,16 +2420,16 @@ _wTime src/Dodge/Data/Item/Params.hs 20;" f _waitThenAction src/Dodge/Data/ActionPlan.hs 76;" f _waitThenTimer src/Dodge/Data/ActionPlan.hs 75;" f _wallDamages src/Dodge/Data/LWorld.hs 119;" f -_wallVBO src/Data/Preload/Render.hs 56;" f +_wallVBO src/Data/Preload/Render.hs 53;" f _walls src/Dodge/Data/LWorld.hs 118;" f _wanID src/Dodge/Data/LWorld.hs 158;" f _wanPos src/Dodge/Data/LWorld.hs 157;" f _warmMax src/Dodge/Data/TriggerType.hs 19;" f _warmStart src/Dodge/Data/TriggerType.hs 15;" f -_winVBO src/Data/Preload/Render.hs 55;" f +_winVBO src/Data/Preload/Render.hs 52;" f _windowPosX src/Dodge/Data/Config.hs 53;" f _windowPosY src/Dodge/Data/Config.hs 54;" f -_windowPullShader src/Data/Preload/Render.hs 21;" f +_windowPullShader src/Data/Preload/Render.hs 20;" f _windowX src/Dodge/Data/Config.hs 51;" f _windowY src/Dodge/Data/Config.hs 52;" f _wlHeight src/Dodge/Data/Wall.hs 25;" f @@ -2587,7 +2585,7 @@ attachOnward src/Dodge/Tree/Compose.hs 95;" f attachOnward' src/Dodge/Tree/Compose.hs 98;" f attachTree src/Dodge/Tree/Compose.hs 38;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 75;" f -attribSize src/Shader/Compile.hs 320;" f +attribSize src/Shader/Compile.hs 304;" f autoAmr src/Dodge/Item/Held/Rod.hs 39;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 488;" f autoCrit src/Dodge/Creature/AutoCrit.hs 10;" f @@ -2641,7 +2639,7 @@ beltMag src/Dodge/Item/Ammo.hs 39;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 226;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 118;" f bgunSound src/Dodge/HeldUse.hs 514;" f -bindFBO src/Render.hs 248;" f +bindFBO src/Render.hs 232;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f blank src/Picture/Base.hs 59;" f @@ -2697,7 +2695,7 @@ brightX src/Color.hs 116;" f btSPic src/Dodge/Render/ShapePicture.hs 129;" f btText src/Dodge/Inventory/SelectionList.hs 237;" f bufferEBO src/Shader/Bind.hs 28;" f -bufferPerspectiveMatrixUBO src/Dodge/Render.hs 454;" f +bufferPerspectiveMatrixUBO src/Dodge/Render.hs 445;" f bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 32;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f @@ -2753,7 +2751,7 @@ checkConnection src/Dodge/Inventory/Swap.hs 66;" f checkDeath src/Dodge/Creature/Update.hs 70;" f checkDeath' src/Dodge/Creature/Update.hs 73;" f checkEndGame src/Dodge/Update.hs 766;" f -checkErrorGL src/Shader/Compile.hs 267;" f +checkErrorGL src/Shader/Compile.hs 251;" f checkFBO src/Framebuffer/Check.hs 6;" f checkGLError src/GLHelp.hs 14;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f @@ -2854,7 +2852,7 @@ compP2A src/Dodge/ShiftPoint.hs 11;" f compactDraw src/Dodge/LevelGen.hs 94;" f compactDraw' src/Dodge/LevelGen.hs 105;" f compactDrawTree src/Dodge/LevelGen.hs 88;" f -compileAndCheckShader src/Shader/Compile.hs 289;" f +compileAndCheckShader src/Shader/Compile.hs 273;" f composeNode src/Dodge/Tree/Compose.hs 76;" f composeTree src/Dodge/Tree/Compose.hs 47;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 640;" f @@ -2875,7 +2873,8 @@ copier src/Dodge/Item/Scope.hs 88;" f copierItemUpdate src/Dodge/Creature/State.hs 131;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f corDoor src/Dodge/Room/Room.hs 385;" f -cornerList src/Preload/Render.hs 244;" f +cornerList src/Preload/Render.hs 226;" f +cornerList' src/Preload/Render.hs 233;" f corpseOrGib src/Dodge/Creature/Update.hs 111;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f @@ -3551,7 +3550,7 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 357;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 344;" f getDebugMouseOver src/Dodge/Update.hs 374;" f -getDistortions src/Dodge/Render.hs 466;" f +getDistortions src/Dodge/Render.hs 457;" f getEdgesCrossing src/Dodge/Path.hs 37;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f @@ -3702,7 +3701,7 @@ initWallZoning src/Dodge/Wall/Zone.hs 12;" f initialRoomTree src/Dodge/Floor.hs 24;" f initialWorld src/Dodge/Initialisation.hs 15;" f initialisePlaying src/Sound.hs 77;" f -initializeGLState src/Preload/Render.hs 262;" f +initializeGLState src/Preload/Render.hs 254;" f initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f initializeTexture2D src/Framebuffer/Update.hs 205;" f @@ -4020,7 +4019,6 @@ makeBlockDebris src/Dodge/Block/Debris.hs 36;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f makeBullet src/Dodge/HeldUse.hs 979;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f -makeByteStringShaderUsingVAO src/Shader/Compile.hs 134;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeColorTermLine src/Dodge/Terminal.hs 111;" f makeColorTermPara src/Dodge/Terminal.hs 108;" f @@ -4046,14 +4044,14 @@ makePathBetweenPs src/Dodge/Path.hs 87;" f makePathUsing src/Dodge/Path.hs 51;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 24;" f makeSelectionListPictures src/Dodge/Render/List.hs 66;" f -makeShaderEBO src/Shader/Compile.hs 54;" f -makeShaderProgram src/Shader/Compile.hs 253;" f -makeShaderUsingVAO src/Shader/Compile.hs 152;" f -makeShaderUsingVBO src/Shader/Compile.hs 70;" f -makeShaderVBO src/Shader/Compile.hs 33;" f +makeShaderEBO src/Shader/Compile.hs 55;" f +makeShaderProgram src/Shader/Compile.hs 237;" f +makeShaderUsingVAO src/Shader/Compile.hs 136;" f +makeShaderUsingVBO src/Shader/Compile.hs 71;" f +makeShaderVBO src/Shader/Compile.hs 34;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 11;" f makeShrapnelAt src/Dodge/Payload.hs 24;" f -makeSourcedShader src/Shader/Compile.hs 173;" f +makeSourcedShader src/Shader/Compile.hs 157;" f makeSpark src/Dodge/Spark.hs 45;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f @@ -4328,7 +4326,7 @@ pincerP src/Dodge/Creature/Boid.hs 63;" f pincerP' src/Dodge/Creature/Boid.hs 96;" f pincerP'' src/Dodge/Creature/Boid.hs 106;" f pincerP''' src/Dodge/Creature/Boid.hs 77;" f -pingPongBetween src/Render.hs 224;" f +pingPongBetween src/Render.hs 207;" f pipe src/Dodge/Item/Craftable.hs 32;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f pistolerRoom src/Dodge/Room/Room.hs 330;" f @@ -4448,7 +4446,7 @@ powlistUpToN' src/Multiset.hs 12;" f powlistUpToN'' src/Multiset.hs 31;" f preCritStart src/Dodge/Room/Start.hs 83;" f prePos src/Quaternion.hs 64;" f -preloadRender src/Preload/Render.hs 32;" f +preloadRender src/Preload/Render.hs 29;" f premapMaybe src/FoldlHelp.hs 26;" f prependTwo src/Geometry.hs 177;" f prettyDT src/Dodge/DoubleTree.hs 258;" f @@ -4600,13 +4598,13 @@ removeLights src/Dodge/Room/Tutorial.hs 257;" f removeShieldWall src/Dodge/Item/BackgroundEffect.hs 57;" f removeWallsInPolygon src/Dodge/LevelGen/StaticWalls.hs 182;" f renderDataResizeUpdate src/Preload/Update.hs 26;" f -renderFlatLighting src/Render.hs 107;" f +renderFlatLighting src/Render.hs 101;" f renderInfoListAt src/Dodge/Render/InfoBox.hs 17;" f renderInfoListsAt src/Dodge/Render/InfoBox.hs 44;" f -renderLayer src/Render.hs 237;" f +renderLayer src/Render.hs 221;" f renderLightingNoShadows src/Render.hs 48;" f renderListAt src/Dodge/Render/List.hs 192;" f -renderShadows src/Render.hs 122;" f +renderShadows src/Render.hs 116;" f replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 168;" f replacePutID src/Dodge/Placement/Instance/Wall.hs 105;" f resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 47;" f @@ -4806,7 +4804,7 @@ setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f setRoomInt src/Dodge/Room/Tutorial.hs 91;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f -setShaderSource src/Shader/Compile.hs 302;" f +setShaderSource src/Shader/Compile.hs 286;" f setShadowLimits src/Dodge/Shadows.hs 11;" f setSoundVolume src/Sound.hs 157;" f setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f @@ -4815,29 +4813,29 @@ setTiles src/Dodge/Layout.hs 67;" f setTreeInts src/Dodge/Room/Tutorial.hs 98;" f setViewDistance src/Dodge/Update/Camera.hs 239;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f -setViewport src/Dodge/Render.hs 471;" f +setViewport src/Dodge/Render.hs 462;" f setVol src/Dodge/Config.hs 47;" f setWristShieldPos src/Dodge/Equipment.hs 49;" f setWristShieldPos src/Dodge/Euse.hs 38;" f setupConLoop src/Loop.hs 103;" f setupConLoop' src/Loop.hs 193;" f -setupEBO src/Shader/Compile.hs 197;" f +setupEBO src/Shader/Compile.hs 181;" f setupFramebuffer2GivenStencil src/Framebuffer/Setup.hs 46;" f setupFramebuffer3GivenStencil src/Framebuffer/Setup.hs 62;" f setupFramebufferGivenStencil src/Framebuffer/Setup.hs 31;" f setupLoop src/Loop.hs 30;" f setupShadowFramebuffer src/Framebuffer/Setup.hs 24;" f -setupStaticVBOVAO src/Shader/Compile.hs 103;" f -setupVAOUsingVBO src/Shader/Compile.hs 185;" f -setupVBO src/Shader/Compile.hs 84;" f -setupVBOStatic src/Shader/Compile.hs 120;" f -setupVBOVAO src/Shader/Compile.hs 209;" f -setupVertexAttribPointer src/Shader/Compile.hs 234;" f -setupVertexAttribs src/Shader/Compile.hs 228;" f +setupStaticVBOVAO src/Shader/Compile.hs 104;" f +setupVAOUsingVBO src/Shader/Compile.hs 169;" f +setupVBO src/Shader/Compile.hs 85;" f +setupVBOStatic src/Shader/Compile.hs 121;" f +setupVBOVAO src/Shader/Compile.hs 193;" f +setupVertexAttribPointer src/Shader/Compile.hs 218;" f +setupVertexAttribs src/Shader/Compile.hs 212;" f setupWorldBounds src/Dodge/Layout.hs 116;" f sfInvColor src/Dodge/Item/InventoryColor.hs 12;" f shadVBOptr src/Shader.hs 40;" f -shaderTypeExt src/Shader/Compile.hs 178;" f +shaderTypeExt src/Shader/Compile.hs 162;" f shapeBounds src/Dodge/Room/Foreground.hs 147;" f shapePoints src/Dodge/Room/Foreground.hs 144;" f shapeVerxSize src/Shape/Parameters.hs 5;" f @@ -5148,7 +5146,7 @@ toBinary src/Dodge/Inventory/SelectionList.hs 141;" f toBothLnk src/Dodge/RoomLink.hs 136;" f toClosestMultiple src/HelpNum.hs 3;" f toColor8 src/Color.hs 148;" f -toFloatVAs src/Shader/Compile.hs 220;" f +toFloatVAs src/Shader/Compile.hs 204;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f @@ -5446,7 +5444,7 @@ vShape src/Dodge/Placement/Instance/LightSource.hs 93;" f vToL src/MatrixHelper.hs 56;" f vToQuat src/Quaternion.hs 42;" f validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" f -vasTightStride src/Shader/Compile.hs 309;" f +vasTightStride src/Shader/Compile.hs 293;" f vecBetweenSpeed src/Dodge/Base.hs 146;" f vecTurnTo src/Dodge/Movement/Turn.hs 19;" f vert src/Shader/Data.hs 111;" f @@ -5514,7 +5512,7 @@ windowLine src/Dodge/Placement/Instance/Wall.hs 59;" f windowXFloat src/Dodge/Data/Config.hs 61;" f windowYFloat src/Dodge/Data/Config.hs 63;" f withAlpha src/Color.hs 10;" f -withByteString src/Shader/Compile.hs 338;" f +withByteString src/Shader/Compile.hs 322;" f wlIXsNearCirc src/Dodge/Zoning/Wall.hs 32;" f wlIXsNearPoint src/Dodge/Zoning/Wall.hs 22;" f wlIXsNearRect src/Dodge/Zoning/Wall.hs 29;" f