diff --git a/shader/lighting/cloud.frag b/shader/lighting/cloud.frag index 7f6e011b3..edb576945 100644 --- a/shader/lighting/cloud.frag +++ b/shader/lighting/cloud.frag @@ -1,13 +1,13 @@ #version 450 core layout(early_fragment_tests) in; layout (std140, binding = 1) uniform TheLight { vec4 lightPos; vec4 lumRad; }; -layout (binding = 0) uniform sampler2D screenTexture; +layout (binding = 0) uniform sampler2D posTexture; layout (binding = 1) uniform sampler2D normals; in vec2 vTexPos; out vec4 fColor; float rad = lumRad.a; void main() { - vec3 pos = texture(screenTexture, vTexPos).xyz; + vec3 pos = texture(posTexture, vTexPos).xyz; vec3 distVec = pos - lightPos.xyz; float dist = dot(distVec, distVec); vec3 norm = texture(normals, vTexPos).xyz; diff --git a/shader/lighting/texture.frag b/shader/lighting/texture.frag index 99ebf6421..085c55ebe 100644 --- a/shader/lighting/texture.frag +++ b/shader/lighting/texture.frag @@ -1,13 +1,13 @@ #version 450 core layout(early_fragment_tests) in; layout (std140, binding = 1) uniform TheLight { vec4 lightPos; vec4 lumRad; }; -layout (binding = 0) uniform sampler2D screenTexture; +layout (binding = 0) uniform sampler2D posTexture; layout (binding = 1) uniform sampler2D normals; in vec2 vTexPos; out vec4 fColor; float rad = lumRad.a; void main() { - vec3 pos = texture(screenTexture, vTexPos).xyz; + vec3 pos = texture(posTexture, vTexPos).xyz; vec3 distVec = pos - lightPos.xyz; float dist = dot(distVec, distVec); // float dist = dot(distVec.xy, distVec.xy); diff --git a/shader/texture2D/alphaDivide.vert b/shader/texture2D/alphaDivide.vert index 927b83cec..233100765 100644 --- a/shader/texture2D/alphaDivide.vert +++ b/shader/texture2D/alphaDivide.vert @@ -1,5 +1,5 @@ #version 450 core -layout (std140, binding = 2) uniform PosTex { vec4 posTex[6]; }; +layout (std140, binding = 2) uniform PosTex { vec4 posTex[3]; }; out vec2 vTexPos; void main() { gl_Position = vec4(posTex[gl_VertexID].xy,0,1); diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index 57da65a6f..6676b8c0a 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -62,11 +62,7 @@ doDrawing' win pdata u = do ((nWins, trueNWalls), (nShapeVs, nIndices, nSilIndices)) <- MP.liftM3 (\_ a b -> (a, b)) - ( pokeLayVerxs - shadV - pokeCounts - wp - ) + ( pokeLayVerxs shadV pokeCounts wp) ( pokeWallsWindows (pdata ^. winVBO . vboPtr) (pdata ^. wallVBO . vboPtr) @@ -81,7 +77,7 @@ doDrawing' win pdata u = do (0, 0, 0) ws ) - nCloudVs' <- + nCloudVs' <- -- foldM (pokeCloud $ pdata ^. cloudVBO . vboPtr) 0 (w ^. cWorld . lWorld . clouds) V.foldM' (pokeCloud (pdata ^. cloudVBO . vboPtr)) 0 @@ -162,9 +158,9 @@ doDrawing' win pdata u = do (pdata ^. fboBase . _2 . _3) lightPoints pdata - -- no longer need base positions/normals - withArray [GL_COLOR_ATTACHMENT1,GL_COLOR_ATTACHMENT2] $ - glInvalidateNamedFramebufferData (pdata ^. fboBase . _1 . unFBO) 2 +-- -- no longer need base positions/normals +-- withArray [GL_COLOR_ATTACHMENT1,GL_COLOR_ATTACHMENT2] $ +-- glInvalidateNamedFramebufferData (pdata ^. fboBase . _1 . unFBO) 2 glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE --apply lightmap to base buffer glDepthFunc GL_ALWAYS @@ -177,8 +173,8 @@ doDrawing' win pdata u = do --glDrawArrays GL_TRIANGLES 0 6 glDrawArrays GL_TRIANGLES 0 3 -- no longer need lighting texture - with GL_COLOR_ATTACHMENT0 $ - glInvalidateNamedFramebufferData (pdata ^. fboLighting . _1 . unFBO) 1 +-- with GL_COLOR_ATTACHMENT0 $ +-- glInvalidateNamedFramebufferData (pdata ^. fboLighting . _1 . unFBO) 1 --draw bloom onto bloom buffer glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBloom . _1 . unFBO) withArray [0, 0, 0, 0] $ @@ -255,6 +251,7 @@ doDrawing' win pdata u = do when (_gr_cloud_shadows cfig) $ do ----render transparency depths -- glDepthMask GL_TRUE +-- glDepthMask GL_TRUE glDepthFunc GL_ALWAYS withArray [GL_NONE, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2] $ glNamedFramebufferDrawBuffers (pdata ^. fboCloud . _1 . unFBO) 3 @@ -272,10 +269,7 @@ doDrawing' win pdata u = do glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6) glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboPos . _1 . unFBO) withArray [0, 0, 0, 0] $ - glClearNamedFramebufferfv - (pdata ^. fboPos . _1 . unFBO) - GL_COLOR - 0 + glClearNamedFramebufferfv (pdata ^. fboPos . _1 . unFBO) GL_COLOR 0 glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _2 . unTO) glDepthMask GL_FALSE glUseProgram (pdata ^. alphaDivideShader) @@ -285,7 +279,7 @@ doDrawing' win pdata u = do glDepthMask GL_TRUE glDepthFunc GL_LESS glEnable GL_BLEND - glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboLighting pdata))) + glBindFramebuffer GL_FRAMEBUFFER $ pdata ^. fboLighting . _1 . unFBO createLightMap True (w ^. wCam) @@ -333,7 +327,7 @@ doDrawing' win pdata u = do withArray [GL_COLOR_ATTACHMENT0, GL_NONE] $ glNamedFramebufferDrawBuffers (pdata ^. fboCloud . _1 . unFBO) 2 glDepthFunc GL_ALWAYS - glBindTextureUnit 0 (_unTO . snd $ _fboLighting pdata) + glBindTextureUnit 0 (pdata ^. fboLighting . _2 . unTO) glEnable GL_BLEND glBlendFuncSeparate GL_ZERO GL_ONE_MINUS_SRC_COLOR GL_ZERO GL_ONE glUseProgram (pdata ^. fullscreenShader) diff --git a/src/Framebuffer/Update.hs b/src/Framebuffer/Update.hs index 05292e416..be13f0175 100644 --- a/src/Framebuffer/Update.hs +++ b/src/Framebuffer/Update.hs @@ -5,8 +5,6 @@ -} module Framebuffer.Update (sizeFBOs) where -import Control.Lens -import Control.Monad import Data.Preload.Render import Dodge.Data.Config import Dodge.WindowSize @@ -51,14 +49,15 @@ sizeFBOs cfig rdata = GL_NEAREST GL_NEAREST GL_RGBA16F - -- [fboBloom] -- fboPos probably doesn't need the alpha channel ) - >>= foldUpdateFBOTO - _gr_world_res - GL_NEAREST - GL_NEAREST - GL_RGBA8 - [fboLighting] + >>= fboLighting + ( resizeFBOTO' + (getWindowSize _gr_world_res cfig) + 1 + GL_NEAREST + GL_NEAREST + GL_RGBA8 + ) >>= fboBloom ( resizeFBOTO' (getWindowSize _gr_world_res cfig) @@ -82,18 +81,14 @@ sizeFBOs cfig rdata = GL_LINEAR GL_RGBA16F ) --- >>= foldUpdateFBOTO --- _gr_downsize_res --- GL_LINEAR_MIPMAP_LINEAR --- GL_LINEAR --- GL_RGBA16F --- [fboHalf] - >>= foldUpdateFBOTO - (const SixteenthRes) - GL_LINEAR_MIPMAP_LINEAR - GL_LINEAR - GL_RGBA16F - [fboQuarter] + >>= fboQuarter + ( resizeFBOTO' + (getWindowSize (const SixteenthRes) cfig) + 1 + GL_LINEAR_MIPMAP_LINEAR + GL_LINEAR + GL_RGBA16F + ) >>= fboWindow ( resizeFBOTO2 (getWindowSize _gr_world_res cfig) @@ -102,32 +97,10 @@ sizeFBOs cfig rdata = GL_RGBA8 GL_RGBA8 ) - where - updateFBOTO' f = updateFBOTO (getWindowSize f cfig) - foldUpdateFBOTO f minfilt magfilt form = - ffoldM (updateFBOTO' f minfilt magfilt form) - -ffoldM :: (Foldable t, Monad m) => (a1 -> a2 -> m a1) -> t a2 -> a1 -> m a1 -ffoldM f = flip $ foldM f resizeRBO :: GLuint -> GLsizei -> GLsizei -> IO () resizeRBO rboName = glNamedRenderbufferStorage rboName GL_DEPTH24_STENCIL8 -updateFBOTO :: - V2 Int -> - -- | minification filter - GLenum -> - -- | magnification filter - GLenum -> - -- | internal color format - GLenum -> - RenderData -> - ALens' RenderData (FBO, TO) -> - IO RenderData -updateFBOTO wsize minfilt magfilt form pdata target = do - newfbo2 <- resizeFBOTO wsize minfilt magfilt form (pdata ^# target) - return $ storing target newfbo2 pdata - resizeFBOTO2 :: V2 Int -> -- | minification filter diff --git a/src/Shader/Poke.hs b/src/Shader/Poke.hs index e4a30303a..871dc0f9a 100644 --- a/src/Shader/Poke.hs +++ b/src/Shader/Poke.hs @@ -34,6 +34,7 @@ pokeVerxs :: UMV.MVector (PrimState IO) Int -> Picture -> IO () +{-# INLINE pokeVerxs #-} pokeVerxs vbos count = VFSM.mapM_ (pokeVerx vbos count) . VFSM.fromList pokeVerx :: MV.MVector (PrimState IO) (Shader, VBO) -> UMV.MVector (PrimState IO) Int -> Verx -> IO () @@ -472,6 +473,7 @@ pokeLayVerxs :: UMV.MVector (PrimState IO) Int -> Picture -> IO () +{-# INLINE pokeLayVerxs #-} pokeLayVerxs vbos counts = VFSM.mapM_ (pokeLayVerx vbos counts) . VFSM.fromList pokeLayVerx diff --git a/src/Shader/Poke/Cloud.hs b/src/Shader/Poke/Cloud.hs index da5db1243..5d7344f99 100644 --- a/src/Shader/Poke/Cloud.hs +++ b/src/Shader/Poke/Cloud.hs @@ -11,9 +11,11 @@ import Foreign import Geometry.Data pokeCloud :: Ptr Float -> Int -> Cloud -> IO Int +{-# INLINE pokeCloud #-} pokeCloud vptr nv = pokeCloudLike vptr nv . mkCloudCloudLike pokeDust :: Ptr Float -> Int -> Dust -> IO Int +{-# INLINE pokeDust #-} pokeDust vptr nv = pokeCloudLike vptr nv . mkDustCloudLike mkCloudCloudLike :: Cloud -> (Point3, Point4) diff --git a/tags b/tags index 9c6b5b4c4..4a2d35295 100644 --- a/tags +++ b/tags @@ -1597,8 +1597,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 19;" f -_chasmShader src/Data/Preload/Render.hs 46;" f -_chasmVBO src/Data/Preload/Render.hs 45;" f +_chasmShader src/Data/Preload/Render.hs 47;" f +_chasmVBO src/Data/Preload/Render.hs 46;" 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 @@ -1627,8 +1627,8 @@ _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 50;" f -_cloudVBO src/Data/Preload/Render.hs 49;" f +_cloudShader src/Data/Preload/Render.hs 51;" f +_cloudVBO src/Data/Preload/Render.hs 50;" f _clouds src/Dodge/Data/LWorld.hs 96;" f _coolEnd src/Dodge/Data/TriggerType.hs 17;" f _coolSound src/Dodge/Data/Item/Params.hs 22;" f @@ -1766,14 +1766,15 @@ _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 -_fboBase src/Data/Preload/Render.hs 33;" f -_fboBloom src/Data/Preload/Render.hs 36;" f -_fboCloud src/Data/Preload/Render.hs 34;" f -_fboHalf1 src/Data/Preload/Render.hs 31;" f -_fboHalf2 src/Data/Preload/Render.hs 32;" f -_fboLighting src/Data/Preload/Render.hs 38;" f -_fboPos src/Data/Preload/Render.hs 37;" f -_fboWindow src/Data/Preload/Render.hs 35;" 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 +_fboFullscreen src/Data/Preload/Render.hs 31;" f +_fboHalf src/Data/Preload/Render.hs 32;" f +_fboLighting src/Data/Preload/Render.hs 39;" f +_fboPos src/Data/Preload/Render.hs 38;" f +_fboQuarter src/Data/Preload/Render.hs 33;" 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 @@ -1787,8 +1788,8 @@ _flboName src/Shader/Data.hs 86;" f _flboPtr src/Shader/Data.hs 87;" f _flboStride src/Shader/Data.hs 88;" f _floorItems src/Dodge/Data/LWorld.hs 127;" f -_floorShader src/Data/Preload/Render.hs 44;" f -_floorVBO src/Data/Preload/Render.hs 43;" f +_floorShader src/Data/Preload/Render.hs 45;" f +_floorVBO src/Data/Preload/Render.hs 44;" 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 @@ -1910,7 +1911,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 41;" f +_lightUBO src/Data/Preload/Render.hs 42;" f _lightingCapShader src/Data/Preload/Render.hs 16;" f _lightingCloudShader src/Data/Preload/Render.hs 18;" f _lightingLineShadowShader src/Data/Preload/Render.hs 15;" f @@ -1947,7 +1948,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 40;" 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 @@ -2132,7 +2133,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 39;" f +_rboBaseBloom src/Data/Preload/Render.hs 40;" f _rdDist1 src/Dodge/Data/Distortion.hs 13;" f _rdDist2 src/Dodge/Data/Distortion.hs 14;" f _rdPos src/Dodge/Data/Distortion.hs 12;" f @@ -2409,7 +2410,7 @@ _vaOffset src/Shader/Data.hs 70;" f _vaType src/Shader/Data.hs 68;" f _vboName src/Shader/Data.hs 80;" f _vboPtr src/Shader/Data.hs 81;" f -_vboShapes src/Data/Preload/Render.hs 42;" f +_vboShapes src/Data/Preload/Render.hs 43;" 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 @@ -2432,13 +2433,13 @@ _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 48;" f +_wallVBO src/Data/Preload/Render.hs 49;" 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 47;" f +_winVBO src/Data/Preload/Render.hs 48;" f _windowPosX src/Dodge/Data/Config.hs 64;" f _windowPosY src/Dodge/Data/Config.hs 65;" f _windowPullShader src/Data/Preload/Render.hs 21;" f @@ -2651,7 +2652,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 234;" f +bindFBO src/Render.hs 235;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f blank src/Picture/Base.hs 59;" f @@ -2695,9 +2696,9 @@ bounceSound src/Dodge/Projectile/Update.hs 74;" f boundPoints src/Bound.hs 10;" f boundedGrid src/Grid.hs 17;" f boxABC src/Polyhedra.hs 108;" f -boxEdgeIndices src/Shader/Poke.hs 357;" f -boxSurfaces src/Shader/Poke.hs 276;" f -boxSurfacesIndices src/Shader/Poke.hs 289;" f +boxEdgeIndices src/Shader/Poke.hs 358;" f +boxSurfaces src/Shader/Poke.hs 277;" f +boxSurfacesIndices src/Shader/Poke.hs 290;" f boxXYZ src/Polyhedra.hs 94;" f boxXYZnobase src/Polyhedra.hs 80;" f brainHat src/Dodge/Item/Equipment.hs 73;" f @@ -2708,7 +2709,7 @@ brightX src/Color.hs 116;" f btSPic src/Dodge/Render/ShapePicture.hs 131;" f btText src/Dodge/Inventory/SelectionList.hs 237;" f bufferEBO src/Shader/Bind.hs 28;" f -bufferPerspectiveMatrixUBO src/Dodge/Render.hs 410;" f +bufferPerspectiveMatrixUBO src/Dodge/Render.hs 411;" f bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 32;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f @@ -2792,7 +2793,7 @@ circleSolid src/Picture/Base.hs 164;" f circleSolidCol src/Picture/Base.hs 168;" f clAlt src/Dodge/Cloud.hs 5;" f clClSpringVel src/Dodge/Update.hs 836;" f -clColor src/Shader/Poke/Cloud.hs 37;" f +clColor src/Shader/Poke/Cloud.hs 39;" f clZoneSize src/Dodge/Zoning/Cloud.hs 21;" f clampPath src/Dodge/Room/Procedural.hs 146;" f clang1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 572;" f @@ -2885,7 +2886,7 @@ 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 232;" f +cornerList src/Preload/Render.hs 234;" f corpseOrGib src/Dodge/Creature/Update.hs 88;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f @@ -2990,10 +2991,10 @@ cycleL src/DoubleStack.hs 28;" f cycleLT src/IntMapHelp.hs 97;" f cycleOptions src/Dodge/Menu/Option.hs 75;" f cycleR src/DoubleStack.hs 32;" f -cylinderIndices src/Shader/Poke.hs 381;" f +cylinderIndices src/Shader/Poke.hs 382;" f cylinderOnSeg src/Geometry.hs 122;" f cylinderPoly src/Shape.hs 82;" f -cylinderRoundIndices src/Shader/Poke.hs 388;" f +cylinderRoundIndices src/Shader/Poke.hs 389;" f dShadCol src/Dodge/Render/List.hs 222;" f damMatSideEffect src/Dodge/Material/Damage.hs 20;" f damThingHitWith src/Dodge/Damage.hs 72;" f @@ -3382,7 +3383,7 @@ dtToLRAdjEither src/Dodge/DoubleTree.hs 181;" f dtToRootIntMap' src/Dodge/DoubleTree.hs 153;" f dtToUpDownAdj src/Dodge/DoubleTree.hs 158;" f dummyMenuOption src/Dodge/Menu/Option.hs 72;" f -dustColor src/Shader/Poke/Cloud.hs 44;" f +dustColor src/Shader/Poke/Cloud.hs 46;" f dustSpringVel src/Dodge/Update.hs 847;" f ebColor src/Dodge/EnergyBall.hs 77;" f ebDamage src/Dodge/EnergyBall.hs 85;" f @@ -3453,7 +3454,6 @@ facesToVF src/Polyhedra/Geodesic.hs 69;" f farWallDistDirection src/Dodge/Update/Camera.hs 246;" f fdiv src/ShortShow.hs 41;" f feet src/Dodge/Creature/Picture.hs 51;" f -ffoldM src/Framebuffer/Update.hs 88;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 157;" f findBlips src/Dodge/RadarSweep.hs 63;" f @@ -3565,7 +3565,7 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 338;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 325;" f getDebugMouseOver src/Dodge/Update.hs 374;" f -getDistortions src/Dodge/Render.hs 422;" f +getDistortions src/Dodge/Render.hs 423;" f getEdgesCrossing src/Dodge/Path.hs 37;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f @@ -3717,10 +3717,10 @@ 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 251;" f +initializeGLState src/Preload/Render.hs 253;" f initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f -initializeTexture2D src/Framebuffer/Update.hs 225;" f +initializeTexture2D src/Framebuffer/Update.hs 220;" f inorderNumberTree src/TreeHelp.hs 190;" f insertAt src/Padding.hs 63;" f insertIMInZone src/Dodge/Base.hs 54;" f @@ -4115,12 +4115,12 @@ megaBattery src/Dodge/Item/Ammo.hs 55;" f megaShellMag src/Dodge/Item/Ammo.hs 44;" f megaTinMag src/Dodge/Item/Ammo.hs 23;" f meleeHeadingMove src/Dodge/Creature/Boid.hs 295;" f -memoBoxEdgeIndices src/Shader/Poke.hs 351;" f -memoBoxSurfaces src/Shader/Poke.hs 285;" f -memoCylinderIndices src/Shader/Poke.hs 322;" f -memoFlatIndices src/Shader/Poke.hs 310;" f -memoTopPrismEdgeIndices src/Shader/Poke.hs 328;" f -memoTopPrismIndices src/Shader/Poke.hs 316;" f +memoBoxEdgeIndices src/Shader/Poke.hs 352;" f +memoBoxSurfaces src/Shader/Poke.hs 286;" f +memoCylinderIndices src/Shader/Poke.hs 323;" f +memoFlatIndices src/Shader/Poke.hs 311;" f +memoTopPrismEdgeIndices src/Shader/Poke.hs 329;" f +memoTopPrismIndices src/Shader/Poke.hs 317;" f menuLDP src/Dodge/ListDisplayParams.hs 52;" f menuOptionToSelectionItem src/Dodge/Menu/Option.hs 91;" f merge src/ListHelp.hs 83;" f @@ -4162,9 +4162,9 @@ missileLaunchS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 694;" f mixColors src/Color.hs 86;" f mixColorsFrac src/Color.hs 82;" f mixColorsLinear src/Color.hs 95;" f -mkCloudCloudLike src/Shader/Poke/Cloud.hs 19;" f +mkCloudCloudLike src/Shader/Poke/Cloud.hs 21;" f mkCustomLenses src/ThirdPartyLens.hs 7;" f -mkDustCloudLike src/Shader/Poke/Cloud.hs 25;" f +mkDustCloudLike src/Shader/Poke/Cloud.hs 27;" f mkGraphFromEdges src/GraphHelp.hs 4;" f mkNode src/Dodge/Graph.hs 29;" f mkRectangle src/Dodge/LevelGen/DoorPane.hs 7;" f @@ -4237,7 +4237,7 @@ noclipCheck src/Dodge/WallCreatureCollisions.hs 23;" f nodeFormatting src/Dodge/Combine/Graph.hs 145;" f nodesNear src/Dodge/Path.hs 75;" f normalGait src/Dodge/Creature/State/WalkCycle.hs 30;" f -normalTo8 src/Shader/Poke.hs 465;" f +normalTo8 src/Shader/Poke.hs 466;" f normalizeAngle src/Geometry/Vector.hs 128;" f normalizeAnglePi src/Dodge/Base.hs 154;" f normalizeColor src/Color.hs 76;" f @@ -4341,7 +4341,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 209;" f +pingPongBetween src/Render.hs 210;" 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 @@ -4385,36 +4385,36 @@ pointerYourSelectedItem src/Dodge/Item/Location.hs 26;" f pointsToPoly src/Geometry/ConvexPoly.hs 35;" f poisonSPic src/Dodge/Creature/Update.hs 102;" f poisonSprayer src/Dodge/Item/Held/SprayGuns.hs 17;" f -poke34 src/Shader/Poke.hs 507;" f -pokeArrayOff src/Shader/Poke.hs 519;" f -pokeBox src/Shader/Poke.hs 228;" f -pokeBoxSurface src/Shader/Poke.hs 261;" f +poke34 src/Shader/Poke.hs 509;" f +pokeArrayOff src/Shader/Poke.hs 521;" f +pokeBox src/Shader/Poke.hs 229;" f +pokeBoxSurface src/Shader/Poke.hs 262;" f pokeChasm src/Shader/Poke/Floor.hs 25;" f pokeChasmVerx src/Shader/Poke/Floor.hs 28;" f pokeCloud src/Shader/Poke/Cloud.hs 13;" f -pokeCloudLike src/Shader/Poke/Cloud.hs 31;" f -pokeCylinder src/Shader/Poke.hs 173;" f -pokeCylinderCaps src/Shader/Poke.hs 216;" f -pokeDust src/Shader/Poke/Cloud.hs 16;" f -pokeF src/Shader/Poke.hs 68;" f -pokeFlatV src/Shader/Poke.hs 447;" f -pokeFloors src/Shader/Poke.hs 62;" f -pokeIndex src/Shader/Poke.hs 296;" f -pokeJustV src/Shader/Poke.hs 436;" f -pokeLayVerx src/Shader/Poke.hs 477;" f -pokeLayVerxs src/Shader/Poke.hs 470;" f -pokeRoundedCurve src/Shader/Poke.hs 205;" f -pokeRoundedFaces src/Shader/Poke.hs 141;" f -pokeShape src/Shader/Poke.hs 112;" f -pokeShapeObj src/Shader/Poke.hs 125;" f -pokeStride src/Shader/Poke.hs 500;" f +pokeCloudLike src/Shader/Poke/Cloud.hs 33;" f +pokeCylinder src/Shader/Poke.hs 174;" f +pokeCylinderCaps src/Shader/Poke.hs 217;" f +pokeDust src/Shader/Poke/Cloud.hs 17;" f +pokeF src/Shader/Poke.hs 69;" f +pokeFlatV src/Shader/Poke.hs 448;" f +pokeFloors src/Shader/Poke.hs 63;" f +pokeIndex src/Shader/Poke.hs 297;" f +pokeJustV src/Shader/Poke.hs 437;" f +pokeLayVerx src/Shader/Poke.hs 479;" f +pokeLayVerxs src/Shader/Poke.hs 471;" f +pokeRoundedCurve src/Shader/Poke.hs 206;" f +pokeRoundedFaces src/Shader/Poke.hs 142;" f +pokeShape src/Shader/Poke.hs 113;" f +pokeShapeObj src/Shader/Poke.hs 126;" f +pokeStride src/Shader/Poke.hs 502;" f pokeTile src/Shader/Poke/Floor.hs 13;" f pokeTileVerx src/Shader/Poke/Floor.hs 19;" f -pokeVerx src/Shader/Poke.hs 39;" f +pokeVerx src/Shader/Poke.hs 40;" f pokeVerxs src/Shader/Poke.hs 32;" f -pokeW src/Shader/Poke.hs 90;" f -pokeWall src/Shader/Poke.hs 79;" f -pokeWallsWindows src/Shader/Poke.hs 51;" f +pokeW src/Shader/Poke.hs 91;" f +pokeWall src/Shader/Poke.hs 80;" f +pokeWallsWindows src/Shader/Poke.hs 52;" f poly3 src/Picture/Base.hs 84;" f poly3Col src/Picture/Base.hs 88;" f polyChasm src/Dodge/Room/Tutorial.hs 173;" f @@ -4566,7 +4566,7 @@ randomTreeStructure src/Dodge/Layout/Generate.hs 18;" f randsOnCirc src/RandomHelp.hs 127;" f randsSpread src/RandomHelp.hs 120;" f ratIntersectLineLine src/Geometry/Intersect.hs 216;" f -rdToVec2s src/Dodge/Render.hs 405;" f +rdToVec2s src/Dodge/Render.hs 406;" f readSaveSlot src/Dodge/Save.hs 45;" f recoilAmount src/Dodge/HeldUse.hs 467;" f rectNSWE src/Geometry/Polygon.hs 15;" f @@ -4607,7 +4607,7 @@ renderDataResizeUpdate src/Preload/Update.hs 27;" f renderFlatLighting src/Render.hs 104;" f renderInfoListAt src/Dodge/Render/InfoBox.hs 17;" f renderInfoListsAt src/Dodge/Render/InfoBox.hs 44;" f -renderLayer src/Render.hs 223;" f +renderLayer src/Render.hs 224;" f renderLightingNoShadows src/Render.hs 51;" f renderListAt src/Dodge/Render/List.hs 192;" f renderShadows src/Render.hs 119;" f @@ -4617,12 +4617,12 @@ resetCrVocCoolDown src/Dodge/Creature/Vocalization.hs 47;" f resetPLUse src/Dodge/PlacementSpot.hs 92;" f resetStride src/Dodge/Creature/State/WalkCycle.hs 25;" f resetTerminal src/Dodge/WorldEffect.hs 109;" f -resizeFBOTO src/Framebuffer/Update.hs 190;" f -resizeFBOTO' src/Framebuffer/Update.hs 207;" f -resizeFBOTO2 src/Framebuffer/Update.hs 109;" f -resizeFBOTO3 src/Framebuffer/Update.hs 132;" f -resizeFBOTO3' src/Framebuffer/Update.hs 159;" f -resizeRBO src/Framebuffer/Update.hs 91;" f +resizeFBOTO src/Framebuffer/Update.hs 185;" f +resizeFBOTO' src/Framebuffer/Update.hs 202;" f +resizeFBOTO2 src/Framebuffer/Update.hs 104;" f +resizeFBOTO3 src/Framebuffer/Update.hs 127;" f +resizeFBOTO3' src/Framebuffer/Update.hs 154;" f +resizeRBO src/Framebuffer/Update.hs 101;" f respawn src/Dodge/SpawnAt.hs 12;" f restrictInLinks src/Dodge/RoomLink.hs 44;" f restrictLinkType src/Dodge/RoomLink.hs 34;" f @@ -4821,7 +4821,7 @@ setTiles src/Dodge/Layout.hs 67;" f setTreeInts src/Dodge/Room/Tutorial.hs 79;" f setViewDistance src/Dodge/Update/Camera.hs 241;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f -setViewport src/Dodge/Render.hs 427;" f +setViewport src/Dodge/Render.hs 428;" f setVol src/Dodge/Config.hs 47;" f setWindowColor src/Dodge/Render/Walls.hs 32;" f setWristShieldPos src/Dodge/Equipment.hs 49;" f @@ -4913,7 +4913,7 @@ singleDT src/Dodge/DoubleTree.hs 10;" f singleLDT src/Dodge/DoubleTree.hs 13;" f singleton src/DoubleStack.hs 11;" f singletonTrie src/SimpleTrie.hs 20;" f -sizeFBOs src/Framebuffer/Update.hs 21;" f +sizeFBOs src/Framebuffer/Update.hs 19;" f skColor src/Dodge/Spark/Draw.hs 14;" f skwareFadeTwoSecS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 524;" f slap1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 690;" f @@ -5166,8 +5166,8 @@ tone440raiseS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 684;" f tone440sawtoothS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 620;" f tone440sawtoothquietS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 460;" f topInvW src/Dodge/ListDisplayParams.hs 49;" f -topPrismEdgeIndices src/Shader/Poke.hs 334;" f -topPrismIndices src/Shader/Poke.hs 409;" f +topPrismEdgeIndices src/Shader/Poke.hs 335;" f +topPrismIndices src/Shader/Poke.hs 410;" f topTestPart src/Dodge/TestString.hs 49;" f torchShape src/Dodge/Item/Draw/SPic.hs 277;" f torqueAmount src/Dodge/HeldUse.hs 581;" f @@ -5318,7 +5318,6 @@ updateEnergyBall src/Dodge/EnergyBall.hs 31;" f updateEnergyBalls src/Dodge/Update.hs 655;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 505;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f -updateFBOTO src/Framebuffer/Update.hs 94;" f updateFlame src/Dodge/Flame.hs 19;" f updateFlames src/Dodge/Update.hs 652;" f updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f