diff --git a/shader/texture/barrel.frag b/shader/texture/barrel.frag index 26f03be99..98a4dedff 100644 --- a/shader/texture/barrel.frag +++ b/shader/texture/barrel.frag @@ -1,10 +1,23 @@ #version 450 core in vec2 texPos; in vec2 distmask; +in vec2 pinch; out vec4 fColor; layout (binding = 1) uniform sampler2D screenTexture; -float x = min(1, dot(distmask,distmask)); +float x = 1 - min(1, dot(distmask,distmask)); +float xab = abs(distmask.x); +float yab = abs(distmask.y); void main() { - fColor = mix(texture(screenTexture, texPos),vec4(1,0,0,1),x); + fColor = (xab < 1 && yab < 1 + //? vec4 (0.5*(distmask.x+1),0.5*(distmask.y+1),0,1) + ? vec4 (0.5*(distmask.x+1),0.5*(distmask.y+1),0,1) + : texture(screenTexture, texPos)); + //fColor = texture(screenTexture, (texPos + x*x*pinch)); + //fColor = vec4 + // ( texture(screenTexture, (texPos + x*x*pinch)).r + // , texture(screenTexture, (texPos - x*x*pinch)).g + // , texture(screenTexture, (texPos - x*x*(pinch.yx))).b + // , texture(screenTexture, texPos).a + // ) ; } diff --git a/shader/texture/barrel.geom b/shader/texture/barrel.geom deleted file mode 100644 index eec8ae7ac..000000000 --- a/shader/texture/barrel.geom +++ /dev/null @@ -1,44 +0,0 @@ -#version 450 core -layout (points) in; -layout (triangle_strip, max_vertices = 4) out; -in vec2 vRad1[]; -in vec2 vRad2[]; -in vec2 vCen[]; -in float vFactor[]; -out vec2 vcpos; -out vec2 texPos; -out vec2 texDist; -out float gfactor; -vec2 g(float x,float y, vec2 v, vec2 r1, vec2 r2) - { return vec2 - (dot(normalize(r1-v),vec2(x,y)-v) / length(r1-v) - ,dot(normalize(r2-v),vec2(x,y)-v) / length(r2-v) - ); - } -void main() { - vec2 cpos = vCen[0]; - vcpos = cpos; - vec2 grad1 = vRad1[0]; - vec2 grad2 = vRad2[0]; - gfactor = vFactor[0]; - texPos = vec2(1,1); - texDist = g(1,1,cpos,grad1,grad2); - gl_Position = vec4 (1,1,0,1); - EmitVertex(); - texPos = vec2(1,0); - texPos = vec2(1,-1); - texDist = g(1,-1,cpos,grad1,grad2); - gl_Position = vec4 (1,-1,0,1); - EmitVertex(); - texPos = vec2(0,1); - texPos = vec2(-1,1); - texDist = g(-1,1,cpos,grad1,grad2); - gl_Position = vec4 (-1,1,0,1); - EmitVertex(); - texPos = vec2(0,0); - texPos = vec2(-1,-1); - texDist = g(-1,-1,cpos,grad1,grad2); - gl_Position = vec4 (-1,-1,0,1); - EmitVertex(); - EndPrimitive(); -} diff --git a/shader/texture/barrel.vert b/shader/texture/barrel.vert index fe1d86a3c..ae9a5db3e 100644 --- a/shader/texture/barrel.vert +++ b/shader/texture/barrel.vert @@ -1,9 +1,10 @@ #version 450 core -struct DataS { vec2 pos; vec2 rad1; vec2 rad2; }; +struct DataS { vec2 pos; vec2 v1; vec2 v2; vec2 rad; }; layout (std430, binding = 9) readonly buffer Data { DataS data[]; }; layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; out vec2 texPos; out vec2 distmask; +out vec2 pinch; const int ks[6] = {0,1,2 // 2--3 ,2,1,3 // | | @@ -18,10 +19,28 @@ void main() { int k = ks[gl_VertexID]; vec4 off = (theMat * vec4(data[gl_VertexID/6].pos, 0,1)); - float r = distance - ((theMat * vec4(data[gl_VertexID/6].rad1, 0,1)).xy - ,(theMat * vec4(0,0, 0,1)).xy); - distmask = (cs[k] - off.xy)/r; + vec2 r1 = (theMat * vec4(data[gl_VertexID/6].v1, 0,1)).xy + - (theMat * vec4(0,0,0,1)).xy; + vec2 r2 = (theMat * vec4(data[gl_VertexID/6].v2, 0,1)).xy + - (theMat * vec4(0,0, 0,1)).xy; + pinch = + (theMat * vec4(data[gl_VertexID/6].rad, 0,1)).xy + - (theMat * vec4(0,0, 0,1)).xy; +// mat2 distT = mat2(-1/r1.x, -1/r2.x +// ,1/r1.y, -1/r2.y +// ); +// mat2 distT = mat2(2, 0 +// ,-1/sqrt(2), 1/sqrt(2) +// ); +// mat2 distT = mat2(1/r1.x, 2*sqrt(2) +// ,1/r1.y, 2*sqrt(2) +// ); + mat2 distT = inverse (mat2(r1,r2)); +// mat2 distT = mat2(1/r1.x, 1/r2.x +// ,1/r1.y, 1/r2.y +// ); + //distmask = (cs[k] - off.xy)/r; + distmask = distT * (cs[k] - off.xy); texPos = 0.5 * (cs[k]+vec2(1,1)); gl_Position = vec4 (cs[k],0,1); } diff --git a/src/Dodge/Creature/Action/Blink.hs b/src/Dodge/Creature/Action/Blink.hs index 0834821cd..a080be667 100644 --- a/src/Dodge/Creature/Action/Blink.hs +++ b/src/Dodge/Creature/Action/Blink.hs @@ -43,13 +43,14 @@ blinkActionMousePos cr w = pushIntoMaybe (x,my) = (x,) <$> my blinkDistortions :: Point2 -> Point2 -> World -> World -blinkDistortions sp ep = cWorld . lWorld . distortions .++~ distortionBulge - where - distR = 120 - distortionBulge = - [ RadialDistortion ep (ep +.+ V2 distR 0) (ep +.+ V2 0 distR) 0.1 - , RadialDistortion sp (sp +.+ V2 distR 0) (sp +.+ V2 0 distR) 1.9 - ] +blinkDistortions _ _ = id +--blinkDistortions sp ep = cWorld . lWorld . distortions .++~ distortionBulge +-- where +-- distR = 120 +-- distortionBulge = +-- [ RadialDistortion ep (ep +.+ V2 distR 0) (ep +.+ V2 0 distR) 0.1 +-- , RadialDistortion sp (sp +.+ V2 distR 0) (sp +.+ V2 0 distR) 1.9 +-- ] {- | Teleport a creature to the mouse position. Can go through walls, if ending up in wall does big damage. @@ -87,12 +88,12 @@ blinkActionFail :: Creature -> World -> World blinkActionFail cr w = w & soundMultiFrom [TeleSound 0, TeleSound 1] p3 teleS Nothing - & cWorld . lWorld . distortions .:~ distortionBulge +-- & cWorld . lWorld . distortions .:~ distortionBulge & cWorld . lWorld . creatures . ix cid . crPos . _xy .~ p3 & inverseShockwaveAt (cpos `v2z` 20) 40 2 2 where - distR = 120 - distortionBulge = RadialDistortion cpos (cpos +.+ V2 distR 0) (cpos +.+ V2 0 distR) 1.9 +-- distR = 120 +-- distortionBulge = RadialDistortion cpos (cpos +.+ V2 distR 0) (cpos +.+ V2 0 distR) 1.9 cid = _crID cr p1 = w ^. cWorld . lWorld . lAimPos cpos = cr ^. crPos . _xy diff --git a/src/Dodge/Data/Distortion.hs b/src/Dodge/Data/Distortion.hs index b4b67b9ef..b2aa24ebd 100644 --- a/src/Dodge/Data/Distortion.hs +++ b/src/Dodge/Data/Distortion.hs @@ -7,7 +7,7 @@ import Geometry import Data.Aeson import Data.Aeson.TH -data Distortion = RadialDistortion Point2 Point2 Point2 Float +data Distortion = RadialDistortion Point2 Point2 Point2 Point2 Int deriving (Eq, Ord, Show, Read) --Generic, Flat) deriveJSON defaultOptions ''Distortion diff --git a/src/Dodge/Distortion.hs b/src/Dodge/Distortion.hs index 401719b84..3cdadd945 100644 --- a/src/Dodge/Distortion.hs +++ b/src/Dodge/Distortion.hs @@ -5,7 +5,6 @@ import Dodge.Data.Distortion updateDistortion :: Distortion -> Maybe Distortion updateDistortion = \case - RadialDistortion a b c v - | v > 1 -> Just $ RadialDistortion a b c $ max 1 (v - 0.05) - | v < 1 -> Just $ RadialDistortion a b c $ min 1 (v + 0.05) + RadialDistortion a b c d t + | t > 0 -> Just $ RadialDistortion a b c d $ t-1 | otherwise -> Nothing diff --git a/src/Dodge/Event/Test.hs b/src/Dodge/Event/Test.hs index e81fe7568..07da7521d 100644 --- a/src/Dodge/Event/Test.hs +++ b/src/Dodge/Event/Test.hs @@ -10,5 +10,6 @@ testEvent :: World -> World testEvent w = fromMaybe w $ do cpos <- w ^? cWorld . lWorld . creatures . ix 0 . crPos . _xy let distR = 50 - distortionBulge = RadialDistortion cpos (V2 distR 0) (cpos + V2 0 distR) 1.9 + distortionBulge = RadialDistortion cpos (V2 (0.5*distR) (-0.5*distR)) (V2 0 distR) + (V2 (0.5* distR) 0) 20 return $ w & cWorld . lWorld . distortions .~ [distortionBulge] diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index 67dd98dbb..d5a3c34ac 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -366,9 +366,9 @@ doDrawing' win pdata u = do glBindFramebuffer GL_FRAMEBUFFER 0 glUseProgram (pdata ^. fullscreenShader) glDrawArrays GL_TRIANGLES 0 6 - (RadialDistortion (V2 a b) (V2 c d) (V2 e f) g:_) -> do + (RadialDistortion (V2 a b) (V2 c d) (V2 e f) (V2 g h) _:_) -> do glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fbo2 . _1 . unFBO) - pokeArray (pdata ^. barrelShader . _2 . vboPtr) [a, b, c, d, e, f] + pokeArray (pdata ^. barrelShader . _2 . vboPtr) [a, b, c, d, e, f, g, h] withArray [a, b, c, d, e, f, g] $ glNamedBufferSubData (pdata ^. barrelShader . _2 . vboName) 0 (6 * fromIntegral (sizeOf (0 :: Float))) diff --git a/src/Dodge/TestString.hs b/src/Dodge/TestString.hs index 0c3e9da8d..5fa0ecc6a 100644 --- a/src/Dodge/TestString.hs +++ b/src/Dodge/TestString.hs @@ -32,7 +32,8 @@ import Data.Foldable import Data.Monoid testStringInit :: Universe -> [String] -testStringInit u = [ show $ fmap ( +testStringInit u = [ show (u ^. uvWorld . wCam . camRot) + ,show $ fmap ( worldPosToScreen (u ^. uvWorld . wCam) ) $ u ^? uvWorld . cWorld . lWorld . creatures . ix 0 . crPos . _xy ] diff --git a/src/Dodge/Update/Camera.hs b/src/Dodge/Update/Camera.hs index 3e829265b..18b0089ee 100644 --- a/src/Dodge/Update/Camera.hs +++ b/src/Dodge/Update/Camera.hs @@ -39,27 +39,29 @@ updateFloatingCamera cfig w = & updateBounds cfig & wCam %~ setViewDistance cfig & wCam %~ translateFloatingCamera theinput + & rotateCamera cfig & wCam %~ translateFloatingCameraKeys theinput & wCam %~ zoomFloatingCamera theinput where theinput = w ^. input translateFloatingCamera :: Input -> Camera -> Camera -translateFloatingCamera theinput cam = fromMaybe cam $ do - lpresstime <- theinput ^. mouseButtons . at ButtonLeft - rpresstime <- theinput ^. mouseButtons . at ButtonRight - if lpresstime > rpresstime - then do - hpos <- theinput ^? heldPos . ix ButtonLeft - let thetran = - screenToWorldPos cam hpos - -.- screenToWorldPos cam (theinput ^. mousePos) - return $ - cam & camCenter +~ thetran - & camViewFrom +~ thetran - else do - a <- theinput ^. heldPos . at SDL.ButtonRight - return $ cam & camRot -~ angleBetween (theinput ^. mousePos) a +translateFloatingCamera _ cam = cam -- fromMaybe cam $ do +---- lpresstime <- theinput ^. mouseButtons . at ButtonLeft +-- _ <- theinput ^. mouseButtons . at ButtonRight +---- guard (theinput ^. mouseButtons . at ButtonRight == Nothing) +---- if lpresstime > rpresstime +---- then do +-- hpos <- theinput ^? heldPos . ix ButtonRight +-- let thetran = +-- screenToWorldPos cam hpos +-- -.- screenToWorldPos cam (theinput ^. mousePos) +-- return $ +-- cam & camCenter +~ thetran +-- & camViewFrom +~ thetran +---- else do +---- a <- theinput ^. heldPos . at SDL.ButtonRight +---- return $ cam & camRot -~ angleBetween (theinput ^. mousePos) a translateFloatingCameraKeys :: Input -> Camera -> Camera translateFloatingCameraKeys theinput cam = diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index c9e4a87b7..0c074382c 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -129,11 +129,11 @@ preloadRender = do lightingTextureShad <- makeSourcedShader "lighting/texture" [vert, frag] distbo <- mglCreate glCreateBuffers - let distbosize = sizeOf (0 :: Float) * 6 * 1024 + let distbosize = sizeOf (0 :: Float) * 8 * 1024 glNamedBufferStorage distbo (fromIntegral distbosize) nullPtr GL_DYNAMIC_STORAGE_BIT glBindBufferBase GL_SHADER_STORAGE_BUFFER 9 distbo distptr <- mallocBytes distbosize - let distvbo = VBO distbo distptr (sizeOf (0::Float) * 6) + let distvbo = VBO distbo distptr (sizeOf (0::Float) * 8) barrelShad <- makeSourcedShader "texture/barrel" [vert,frag] putStrLn "Setup floor VBO, shader" diff --git a/tags b/tags index b26215a1e..63bcaf090 100644 --- a/tags +++ b/tags @@ -1598,8 +1598,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 47;" f -_chasmVBO src/Data/Preload/Render.hs 46;" f +_chasmShader src/Data/Preload/Render.hs 46;" f +_chasmVBO src/Data/Preload/Render.hs 45;" 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 @@ -1628,8 +1628,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 51;" f -_cloudVBO src/Data/Preload/Render.hs 50;" f +_cloudShader src/Data/Preload/Render.hs 50;" f +_cloudVBO src/Data/Preload/Render.hs 49;" 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 @@ -1758,7 +1758,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 52;" f +_dummyVAO src/Data/Preload/Render.hs 51;" 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 @@ -1769,15 +1769,14 @@ _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 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 +_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 _flItPos src/Dodge/Data/FloorItem.hs 11;" f _flItRot src/Dodge/Data/FloorItem.hs 11;" f _flPos src/Dodge/Data/Flame.hs 13;" f @@ -1791,8 +1790,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 45;" f -_floorVBO src/Data/Preload/Render.hs 44;" f +_floorShader src/Data/Preload/Render.hs 44;" f +_floorVBO src/Data/Preload/Render.hs 43;" 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 @@ -1914,7 +1913,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 42;" f +_lightUBO src/Data/Preload/Render.hs 41;" 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 @@ -1950,7 +1949,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 41;" f +_matUBO src/Data/Preload/Render.hs 40;" 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 @@ -2135,7 +2134,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 40;" f +_rboBaseBloom src/Data/Preload/Render.hs 39;" f _renderData src/Data/Preload.hs 11;" f _respawnDelay src/Dodge/Data/World.hs 62;" f _respawnPos src/Dodge/Data/LWorld.hs 145;" f @@ -2407,7 +2406,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 43;" f +_vboShapes src/Data/Preload/Render.hs 42;" 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 @@ -2430,13 +2429,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 49;" f +_wallVBO src/Data/Preload/Render.hs 48;" 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 48;" f +_winVBO src/Data/Preload/Render.hs 47;" f _windowPosX src/Dodge/Data/Config.hs 64;" f _windowPosY src/Dodge/Data/Config.hs 65;" f _windowPullShader src/Data/Preload/Render.hs 20;" f @@ -2707,7 +2706,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 399;" f +bufferPerspectiveMatrixUBO src/Dodge/Render.hs 400;" f bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 32;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f @@ -2885,7 +2884,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 214;" f +cornerList src/Preload/Render.hs 219;" f corpseOrGib src/Dodge/Creature/Update.hs 111;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f @@ -3178,8 +3177,8 @@ doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f doDoorLerp src/Dodge/Door/DoorLerp.hs 8;" f doDoorMount src/Dodge/Door.hs 30;" f doDrag src/Dodge/Update/Input/InGame.hs 127;" f -doDrawing src/Dodge/Render.hs 34;" f -doDrawing' src/Dodge/Render.hs 45;" f +doDrawing src/Dodge/Render.hs 33;" f +doDrawing' src/Dodge/Render.hs 44;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f doGenFloat src/Dodge/HeldUse.hs 1158;" f doGravityPU src/Dodge/Projectile/Update.hs 35;" f @@ -3202,7 +3201,7 @@ doScopeZoom src/Dodge/Update/Scroll.hs 91;" f doSectionSize src/Dodge/DisplayInventory.hs 211;" f doSideEffects appDodge/Main.hs 125;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 172;" f -doTestDrawing src/Dodge/Render.hs 41;" f +doTestDrawing src/Dodge/Render.hs 40;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doThrust src/Dodge/Projectile/Update.hs 129;" f @@ -3325,8 +3324,7 @@ drawSelect src/Dodge/Render/Picture.hs 257;" f drawSelectionList src/Dodge/Render/List.hs 36;" f drawSelectionListBackground src/Dodge/Render/List.hs 52;" f drawSelectionSections src/Dodge/SelectionSections/Draw.hs 16;" f -drawShader src/Shader.hs 26;" f -drawShaderLay src/Shader.hs 15;" f +drawShaderLay src/Shader.hs 10;" f drawShadowsByImportance src/Dodge/Shadows.hs 8;" f drawShell src/Dodge/Projectile/Draw.hs 22;" f drawShockwave src/Dodge/Shockwave/Draw.hs 6;" f @@ -3561,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 344;" f getDebugMouseOver src/Dodge/Update.hs 374;" f -getDistortions src/Dodge/Render.hs 411;" f +getDistortions src/Dodge/Render.hs 412;" f getEdgesCrossing src/Dodge/Path.hs 37;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f @@ -3712,7 +3710,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 235;" f +initializeGLState src/Preload/Render.hs 240;" f initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f initializeTexture2D src/Framebuffer/Update.hs 214;" f @@ -4819,7 +4817,7 @@ 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 416;" f +setViewport src/Dodge/Render.hs 417;" f setVol src/Dodge/Config.hs 47;" f setWristShieldPos src/Dodge/Equipment.hs 49;" f setWristShieldPos src/Dodge/Euse.hs 38;" f @@ -4837,7 +4835,6 @@ setupVertexAttribPointer src/Shader/Compile.hs 110;" f setupVertexAttribs src/Shader/Compile.hs 104;" f setupWorldBounds src/Dodge/Layout.hs 116;" f sfInvColor src/Dodge/Item/InventoryColor.hs 12;" f -shadVBOptr src/Shader.hs 36;" f shaderTypeExt src/Shader/Compile.hs 67;" f shapeBounds src/Dodge/Room/Foreground.hs 147;" f shapePoints src/Dodge/Room/Foreground.hs 144;" f