diff --git a/shader/pull/window.frag b/shader/pull/window.frag new file mode 100644 index 000000000..9fadbac0f --- /dev/null +++ b/shader/pull/window.frag @@ -0,0 +1,11 @@ +#version 450 core +layout (location=0) out vec4 fCol; +layout (location=1) out vec4 fPos; +in vec4 vCol; +in vec4 vPos; +void main() +{ + //fCol = vec4 (1,0.5,0,0.5); + fCol = vCol; + fPos = vPos; +} diff --git a/shader/pull/window.vert b/shader/pull/window.vert new file mode 100644 index 000000000..e7e296935 --- /dev/null +++ b/shader/pull/window.vert @@ -0,0 +1,34 @@ +#version 450 core +struct PosCol { + vec4 pospos; + vec4 col; +}; +layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; +layout (std430, binding = 1) readonly buffer Pos { PosCol data[]; }; +out vec4 vCol; +out vec4 vPos; +int indices[6] = {0,1,2,2,3,0}; +vec4 iface[6] = + { vec4 (-1,-1,0,1) + , vec4 (-1,1,0,1) + , vec4 (1,1,0,1) + , vec4 (1,1,0,1) + , vec4 (1,-1,0,1) + , vec4 (-1,-1,0,1) + }; +void main() +{ + //const struct PosCol pc = data[gl_VertexID / 6]; + vec4 pp = data[gl_VertexID / 6].pospos; + vCol = data[gl_VertexID / 6].col; + //vCol = vec4(1,0.5,0,0.5); + int j = indices[gl_VertexID % 6]; + float z = (j / 2 > 0 ? 5000 : 0); + //vec2 xy = (j % 2 > 0 ? pc.pospos.xy : pc.pospos.zw); + vec2 xy = (j % 2 > 0 ? pp.xy : pp.zw); + vPos = vec4( xy, z, 1); +// vPos = vec4( 0,0,0, 1); + //vCol = pc.col; + gl_Position = theMat * vPos; + //gl_Position = iface[gl_VertexID % 6]; +} diff --git a/src/Data/Preload/Render.hs b/src/Data/Preload/Render.hs index d52cee429..b409fc861 100644 --- a/src/Data/Preload/Render.hs +++ b/src/Data/Preload/Render.hs @@ -18,6 +18,7 @@ data RenderData = RenderData , _ceilingStencilShader :: Shader , _alphaDivideShader :: Shader , _windowShader :: Shader + , _windowPullShader :: Shader , _fullscreenShader :: Shader , _transparencyCompShader :: Shader , _bloomBlurShader :: Shader @@ -40,7 +41,8 @@ data RenderData = RenderData , _fboLighting :: (FBO, TO) , _rboBaseBloom :: GLuint -- RenderbufferObject id , _matUBO :: GLuint -- BufferObject id - , _lightsUBO :: GLuint -- BufferObject id + , _winSSBO :: GLuint +-- , _lightsUBO :: GLuint -- BufferObject id , _vboWindows :: VBO , _vboShapes :: VBO , _floorVBO :: VBO @@ -53,6 +55,7 @@ data RenderData = RenderData , _cloudShader :: Shader , _cloudEBO :: EBO , _screenTextureVAO :: VAO + , _dummyVAO :: VAO } makeLenses ''RenderData diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index d2415a8d5..015201a8d 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -110,6 +110,9 @@ doDrawing' win pdata u = do ] -- set the coordinate uniform ready for drawing elements using world coordinates bufferPerspectiveMatrixUBO cfig (w ^. wCam) (pdata ^. matUBO) + glNamedBufferSubData (pdata ^. winSSBO) 0 + (fromIntegral $ nWins * sizeOf (0::Float) * 8) + (pdata ^. vboWindows . vboPtr) setViewport _gr_world_res cfig glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO) glDepthMask GL_TRUE @@ -373,7 +376,12 @@ doDrawing' win pdata u = do glDepthFunc GL_LEQUAL glCullFace GL_BACK glDisable GL_BLEND - drawShader (_windowShader pdata) nWins + glDepthFunc GL_ALWAYS + glDisable GL_CULL_FACE + glUseProgram $ pdata ^. windowPullShader . shaderUINT + glBindVertexArray $ pdata ^. dummyVAO . vaoName + glDrawArrays GL_TRIANGLES 0 (fromIntegral nWins * 6) + --drawShader (_windowShader pdata) nWins glDisable GL_DEPTH_CLAMP glDisable GL_CULL_FACE glInvalidateBufferData (pdata ^. vboShapes . vboName) diff --git a/src/GLHelp.hs b/src/GLHelp.hs index 3489fd318..e06d4630a 100644 --- a/src/GLHelp.hs +++ b/src/GLHelp.hs @@ -1,4 +1,4 @@ -module GLHelp where +module GLHelp (mglCreate,mglDelete,checkGLError) where import Foreign.Marshal import Foreign.Ptr @@ -6,13 +6,10 @@ import Foreign.Storable import Graphics.GL.Core45 mglCreate :: (GLsizei -> Ptr GLuint -> IO ()) -> IO GLuint -mglCreate f = - alloca $ \nameptr -> do - f 1 nameptr - peek nameptr +mglCreate f = alloca $ \ptr -> f 1 ptr >> peek ptr mglDelete :: (GLsizei -> Ptr GLuint -> IO ()) -> GLuint -> IO () -mglDelete f i = with i $ \ptr -> f 1 ptr +mglDelete f i = with i $ f 1 checkGLError :: String -> IO () checkGLError s = do diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index 81704f25a..7cab15792 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -35,12 +35,25 @@ preloadRender = do -- set up uniform buffer object putStrLn "Setup UBO" theUBO <- mglCreate glCreateBuffers - glNamedBufferData theUBO 64 nullPtr GL_STREAM_DRAW + --glNamedBufferData theUBO 64 nullPtr GL_STREAM_DRAW + glNamedBufferStorage theUBO 64 nullPtr GL_DYNAMIC_STORAGE_BIT glBindBufferBase GL_UNIFORM_BUFFER 0 theUBO - lightsubo <- mglCreate glCreateBuffers - glNamedBufferData lightsubo 640 nullPtr GL_STREAM_DRAW - glBindBufferBase GL_UNIFORM_BUFFER 1 lightsubo + winssbo <- mglCreate glCreateBuffers + let winssbosize = sizeOf (0::Float) * 8 * 1024 +-- winssboptr <- mallocBytes winssbosize + glNamedBufferStorage winssbo (fromIntegral winssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT + glBindBufferBase GL_SHADER_STORAGE_BUFFER 1 winssbo + + --dummyvao <- mglCreate glCreateVertexArrays + dummyvao <- mglCreate glGenVertexArrays + + winpull <- makeShaderUsingVAO "pull/window" [vert,frag] pmTriangles (VAO dummyvao) + +-- lightsubo <- mglCreate glCreateBuffers +-- --glNamedBufferData lightsubo 640 nullPtr GL_STREAM_DRAW +-- glNamedBufferStorage lightsubo 640 nullPtr GL_DYNAMIC_STORAGE_BIT +-- glBindBufferBase GL_UNIFORM_BUFFER 1 lightsubo -- setup shape geometry/cap VBO and two VAOs putStrLn "Setup shape VBO, VAO, EBO" @@ -181,6 +194,7 @@ preloadRender = do , _lightingWallShadShader = lightingWallShadShad , _ceilingStencilShader = ceilingstencilshader , _windowShader = windowshader + , _windowPullShader = winpull , _fullscreenShader = fsShad , _transparencyCompShader = transcompshader , _alphaDivideShader = alphadivideshader @@ -201,7 +215,8 @@ preloadRender = do , _fboPos = fboPosName , _rboBaseBloom = rboBaseBloomName , _matUBO = theUBO - , _lightsUBO = lightsubo + , _winSSBO = winssbo +-- , _lightsUBO = lightsubo , _vboWindows = winvbo , _vboShapes = shVBO , _floorVBO = floorvbo @@ -214,6 +229,7 @@ preloadRender = do , _cloudShader = cloudshader , _cloudEBO = cloudebo , _screenTextureVAO = screentexturevao + , _dummyVAO = VAO dummyvao } --------------------end preloadRender diff --git a/tags b/tags index ef1749c9d..94685c405 100644 --- a/tags +++ b/tags @@ -355,7 +355,7 @@ DropItem src/Dodge/Data/ActionPlan.hs 38;" C DudPayload src/Dodge/Data/Payload.hs 11;" C Dungeon src/Dodge/Data/Scenario.hs 66;" C Dust src/Dodge/Data/Cloud.hs 27;" t -EBO src/Shader/Data.hs 88;" t +EBO src/Shader/Data.hs 86;" t EBSound src/Dodge/Data/SoundOrigin.hs 39;" C ECW src/Dodge/Material/Damage.hs 14;" t ELEPHANTGUN src/Dodge/Data/Item/Combine.hs 157;" C @@ -988,7 +988,7 @@ PosInf src/Dodge/Data/CardinalPoint.hs 44;" C PosRooms src/Dodge/Tree/Shift.hs 28;" t Posture src/Dodge/Data/Creature/Stance.hs 33;" t PreloadData src/Data/Preload.hs 10;" t -PrimitiveMode src/Shader/Data.hs 99;" t +PrimitiveMode src/Shader/Data.hs 97;" t PrintMaterial src/Dodge/Data/AmmoType.hs 12;" C Prison src/Dodge/Data/Scenario.hs 65;" C Projectile src/Dodge/Data/Projectile.hs 15;" t @@ -1149,7 +1149,7 @@ SetLSCol src/Dodge/Data/WorldEffect.hs 24;" C SetTrigger src/Dodge/Data/WorldEffect.hs 22;" C ShadNum src/Picture/Data.hs 33;" t Shader src/Shader/Data.hs 51;" t -ShaderTexture src/Shader/Data.hs 94;" t +ShaderTexture src/Shader/Data.hs 92;" t ShadowFidelity src/Shape/Data.hs 19;" t ShadowRendering src/Dodge/Data/Config.hs 103;" t Shape src/Shape/Data.hs 48;" t @@ -1388,11 +1388,11 @@ UsedPosHigh src/Dodge/Data/Room.hs 88;" C UsedPosLow src/Dodge/Data/Room.hs 86;" C UsedPosMid src/Dodge/Data/Room.hs 87;" C VAO src/Shader/Data.hs 64;" t -VBO src/Shader/Data.hs 81;" t +VBO src/Shader/Data.hs 79;" t VF src/Polyhedra/Data.hs 21;" t VIOLET src/Color/Data.hs 19;" C VOLLEYGUN src/Dodge/Data/Item/Combine.hs 151;" C -VertexAttribute src/Shader/Data.hs 68;" t +VertexAttribute src/Shader/Data.hs 66;" t Verx src/Picture/Data.hs 11;" t View_boundaries src/Dodge/Data/Config.hs 76;" C ViewingDeckSS src/Dodge/Data/Scenario.hs 106;" C @@ -1502,7 +1502,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 25;" f +_barrelShader src/Data/Preload/Render.hs 26;" 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 @@ -1520,7 +1520,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 23;" 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 @@ -1586,8 +1586,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 49;" f -_chasmVBO src/Data/Preload/Render.hs 48;" 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 @@ -1616,11 +1616,11 @@ _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 -_cloudEBO src/Data/Preload/Render.hs 54;" f -_cloudShader src/Data/Preload/Render.hs 53;" f -_cloudVBO src/Data/Preload/Render.hs 52;" f +_cloudEBO src/Data/Preload/Render.hs 56;" 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 24;" f +_colorBlurShader src/Data/Preload/Render.hs 25;" 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 @@ -1748,27 +1748,28 @@ _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 58;" 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 _ebTimer src/Dodge/Data/EnergyBall.hs 18;" f _ebType src/Dodge/Data/EnergyBall.hs 19;" f _ebVel src/Dodge/Data/EnergyBall.hs 16;" f -_eboName src/Shader/Data.hs 89;" f -_eboPtr src/Shader/Data.hs 90;" f +_eboName src/Shader/Data.hs 87;" f +_eboPtr src/Shader/Data.hs 88;" 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 31;" f -_fbo3 src/Data/Preload/Render.hs 32;" f -_fboBase src/Data/Preload/Render.hs 35;" f -_fboBloom src/Data/Preload/Render.hs 38;" f -_fboCloud src/Data/Preload/Render.hs 36;" f -_fboHalf1 src/Data/Preload/Render.hs 33;" f -_fboHalf2 src/Data/Preload/Render.hs 34;" f -_fboLighting src/Data/Preload/Render.hs 40;" f -_fboPos src/Data/Preload/Render.hs 39;" f -_fboWindow src/Data/Preload/Render.hs 37;" f +_fbo2 src/Data/Preload/Render.hs 32;" f +_fbo3 src/Data/Preload/Render.hs 33;" f +_fboBase src/Data/Preload/Render.hs 36;" f +_fboBloom src/Data/Preload/Render.hs 39;" f +_fboCloud src/Data/Preload/Render.hs 37;" f +_fboHalf1 src/Data/Preload/Render.hs 34;" f +_fboHalf2 src/Data/Preload/Render.hs 35;" f +_fboLighting src/Data/Preload/Render.hs 41;" f +_fboPos src/Data/Preload/Render.hs 40;" f +_fboWindow src/Data/Preload/Render.hs 38;" 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 @@ -1779,13 +1780,13 @@ _flankTarget src/Dodge/Data/ActionPlan.hs 129;" f _flares src/Dodge/Data/LWorld.hs 108;" f _flatShieldWlMIX src/Dodge/Data/Item/Params.hs 14;" f _floorItems src/Dodge/Data/LWorld.hs 127;" f -_floorShader src/Data/Preload/Render.hs 47;" f -_floorVBO src/Data/Preload/Render.hs 46;" 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 21;" 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 @@ -1817,7 +1818,7 @@ _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 26;" f +_grayscaleShader src/Data/Preload/Render.hs 27;" 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 @@ -1907,7 +1908,6 @@ _lightingLineShadowShader src/Data/Preload/Render.hs 15;" f _lightingTextureShader src/Data/Preload/Render.hs 17;" f _lightingWallShadShader src/Data/Preload/Render.hs 14;" f _lights src/Dodge/Data/LWorld.hs 134;" f -_lightsUBO src/Data/Preload/Render.hs 43;" f _linearShockwaves src/Dodge/Data/LWorld.hs 116;" f _linkGapEW src/Dodge/Data/Room.hs 36;" f _linkGapNS src/Dodge/Data/Room.hs 37;" f @@ -1939,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 42;" f +_matUBO src/Data/Preload/Render.hs 43;" 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 @@ -2042,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 30;" f +_pictureShaders src/Data/Preload/Render.hs 31;" 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 @@ -2123,7 +2123,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 41;" f +_rboBaseBloom src/Data/Preload/Render.hs 42;" f _renderData src/Data/Preload.hs 11;" f _respawnDelay src/Dodge/Data/World.hs 62;" f _respawnPos src/Dodge/Data/LWorld.hs 145;" f @@ -2186,7 +2186,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 55;" f +_screenTextureVAO src/Data/Preload/Render.hs 57;" 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 @@ -2216,9 +2216,9 @@ _sfVs src/Shape/Data.hs 38;" 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 28;" f +_shapeEBO src/Data/Preload/Render.hs 29;" f _shapeHalfSize src/Shape/Data.hs 13;" f -_shapeShader src/Data/Preload/Render.hs 27;" f +_shapeShader src/Data/Preload/Render.hs 28;" 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 @@ -2230,7 +2230,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 29;" f +_silhouetteEBO src/Data/Preload/Render.hs 30;" 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 @@ -2295,7 +2295,7 @@ _terminals src/Dodge/Data/LWorld.hs 122;" f _teslaArcs src/Dodge/Data/LWorld.hs 110;" f _testFloat src/Dodge/Data/World.hs 42;" f _textInput src/Dodge/Data/Input.hs 46;" f -_textureObject src/Shader/Data.hs 95;" f +_textureObject src/Shader/Data.hs 93;" f _tiText src/Dodge/Data/Terminal/Status.hs 14;" f _tileArrayZ src/Data/Tile.hs 24;" f _tilePoly src/Data/Tile.hs 17;" f @@ -2329,7 +2329,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 22;" 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 @@ -2351,7 +2351,7 @@ _unFBO src/Shader/Data.hs 57;" f _unNInt src/NewInt.hs 16;" f _unNIntMap src/NewInt.hs 22;" f _unNIntSet src/NewInt.hs 19;" f -_unPrimitiveMode src/Shader/Data.hs 99;" f +_unPrimitiveMode src/Shader/Data.hs 97;" f _unPutCrit src/Dodge/Data/GenWorld.hs 32;" f _unST src/Dodge/Data/MetaTree.hs 20;" f _unTO src/Shader/Data.hs 59;" f @@ -2384,16 +2384,16 @@ _uvSideEffects src/Dodge/Data/Universe.hs 35;" f _uvSoundQueue src/Dodge/Data/Universe.hs 51;" f _uvTestString src/Dodge/Data/Universe.hs 37;" f _uvWorld src/Dodge/Data/Universe.hs 31;" f -_vaCount src/Shader/Data.hs 69;" f -_vaNormalize src/Shader/Data.hs 71;" f -_vaOffset src/Shader/Data.hs 72;" f -_vaType src/Shader/Data.hs 70;" f -_vaoName src/Shader/Data.hs 65;" f -_vboName src/Shader/Data.hs 82;" f -_vboPtr src/Shader/Data.hs 83;" f -_vboShapes src/Data/Preload/Render.hs 45;" f -_vboVertexBytes src/Shader/Data.hs 84;" f -_vboWindows src/Data/Preload/Render.hs 44;" f +_vaCount src/Shader/Data.hs 67;" f +_vaNormalize src/Shader/Data.hs 69;" f +_vaOffset src/Shader/Data.hs 70;" f +_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 47;" f +_vboVertexBytes src/Shader/Data.hs 82;" f +_vboWindows src/Data/Preload/Render.hs 46;" f _vcCoolDown src/Dodge/Data/Creature/Misc.hs 22;" f _vcMaxCoolDown src/Dodge/Data/Creature/Misc.hs 21;" f _vertices src/Polyhedra/Data.hs 22;" f @@ -2415,15 +2415,17 @@ _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 -_wallShader src/Data/Preload/Render.hs 51;" f -_wallVBO src/Data/Preload/Render.hs 50;" f +_wallShader src/Data/Preload/Render.hs 53;" f +_wallVBO src/Data/Preload/Render.hs 52;" 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 +_winSSBO src/Data/Preload/Render.hs 44;" 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 _windowShader src/Data/Preload/Render.hs 20;" f _windowX src/Dodge/Data/Config.hs 51;" f _windowY src/Dodge/Data/Config.hs 52;" f @@ -2579,8 +2581,8 @@ attachList src/Dodge/Tree/Compose.hs 80;" f 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 74;" f -attribSize src/Shader/Compile.hs 306;" f +attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 75;" f +attribSize src/Shader/Compile.hs 312;" 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 @@ -2631,7 +2633,7 @@ battery src/Dodge/Item/Ammo.hs 63;" f batteryPack src/Dodge/Item/Equipment.hs 46;" f belowNumX src/Dodge/Combine/Graph.hs 84;" f beltMag src/Dodge/Item/Ammo.hs 39;" f -bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 225;" 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 251;" f @@ -2690,7 +2692,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 464;" f +bufferPerspectiveMatrixUBO src/Dodge/Render.hs 466;" f bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 36;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f @@ -2735,7 +2737,7 @@ chartreuse src/Color.hs 24;" f chaseCrit src/Dodge/Creature/ChaseCrit.hs 27;" f chaseCritAwarenessUpdate src/Dodge/Creature/Perception.hs 65;" f chaseCritInternal src/Dodge/Humanoid.hs 7;" f -chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 120;" f +chaseCritMv src/Dodge/Creature/ReaderUpdate.hs 121;" f chaseCritPerceptionUpdate src/Dodge/Creature/Perception.hs 32;" f chaseCritVocalization src/Dodge/Creature/ChaseCrit.hs 36;" f chasmSimpleMaze src/Dodge/Room/Tutorial.hs 208;" f @@ -2746,9 +2748,9 @@ 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 255;" f +checkErrorGL src/Shader/Compile.hs 261;" f checkFBO src/Framebuffer/Check.hs 6;" f -checkGLError src/GLHelp.hs 17;" f +checkGLError src/GLHelp.hs 14;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f checkInventorySelectionExists src/Dodge/DisplayInventory.hs 93;" f checkTermDist src/Dodge/Update.hs 316;" f @@ -2783,7 +2785,7 @@ clang2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 676;" f clangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 542;" f cldtPropagateFold src/Dodge/DoubleTree.hs 358;" f cleanUpPreload src/Preload.hs 10;" f -cleanUpRenderPreload src/Preload/Render.hs 243;" f +cleanUpRenderPreload src/Preload/Render.hs 258;" f cleanUpSoundPreload src/Preload.hs 15;" f cleanupHalted src/Sound.hs 117;" f cleatLabel src/Dodge/Cleat.hs 30;" f @@ -2848,7 +2850,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 277;" f +compileAndCheckShader src/Shader/Compile.hs 283;" 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 @@ -2869,7 +2871,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 220;" f +cornerList src/Preload/Render.hs 235;" f corpseOrGib src/Dodge/Creature/Update.hs 111;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f @@ -2995,7 +2997,7 @@ damageSensor src/Dodge/Placement/Instance/Sensor.hs 14;" f damageStone src/Dodge/Material/Damage.hs 33;" f damageThingHit src/Dodge/Bullet.hs 180;" f damageTypeThreshold src/Dodge/Placement/Instance/Sensor.hs 34;" f -damageWall src/Dodge/Wall/Damage.hs 42;" f +damageWall src/Dodge/Wall/Damage.hs 28;" f damsToExpBarrel src/Dodge/Barreloid.hs 50;" f dark src/Color.hs 108;" f darkenBackground src/Dodge/Render/MenuScreen.hs 32;" f @@ -3092,15 +3094,15 @@ deleteWallIDs src/Dodge/Wall/Delete.hs 27;" f denormalEdges src/Polyhedra.hs 136;" f destroyAllInvItems src/Dodge/Inventory.hs 53;" f destroyBlock src/Dodge/Block.hs 17;" f -destroyDoor src/Dodge/Wall/Damage.hs 66;" f +destroyDoor src/Dodge/Wall/Damage.hs 54;" f destroyInvItem src/Dodge/Inventory.hs 40;" f destroyItem src/Dodge/Inventory.hs 62;" f destroyLSFlashAt src/Dodge/LightSource.hs 44;" f destroyMachine src/Dodge/Machine/Destroy.hs 13;" f destroyMatS src/Dodge/Material/Sound.hs 7;" f destroyMcType src/Dodge/Machine/Destroy.hs 22;" f -destroyMount src/Dodge/Wall/Damage.hs 87;" f -destroyMounts src/Dodge/Wall/Damage.hs 84;" f +destroyMount src/Dodge/Wall/Damage.hs 75;" f +destroyMounts src/Dodge/Wall/Damage.hs 72;" f destroyProjectile src/Dodge/Projectile/Update.hs 109;" f detV src/Geometry/Vector.hs 94;" f detector src/Dodge/Item/Held/Utility.hs 27;" f @@ -3185,7 +3187,7 @@ doRoomShift src/Dodge/Room/Link.hs 33;" f 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 171;" f +doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 172;" f doTestDrawing src/Dodge/Render.hs 41;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f @@ -3471,7 +3473,7 @@ fleeFrom src/Dodge/CreatureEffect.hs 92;" f flickerMod src/Dodge/Placement/Instance/LightSource/Flicker.hs 10;" f flickerUpdate src/Dodge/Placement/Instance/LightSource/Flicker.hs 24;" f floatSize src/Shader/Parameters.hs 17;" f -flockACC src/Dodge/Creature/ReaderUpdate.hs 95;" f +flockACC src/Dodge/Creature/ReaderUpdate.hs 96;" f flockArmourChaseCrit src/Dodge/Creature/ArmourChase.hs 14;" f flockChaseTarget src/Dodge/Creature/Boid.hs 188;" f flockPointTarget src/Dodge/Creature/Boid.hs 204;" f @@ -3496,7 +3498,7 @@ forceSpine src/StrictHelp.hs 4;" f fourEmbossDecoration src/Dodge/Placement/TopDecoration.hs 29;" f fpsText src/Dodge/Render/Picture.hs 59;" f fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 145;" f -frag src/Shader/Data.hs 102;" f +frag src/Shader/Data.hs 100;" f freeShaderPointers' src/Shader.hs 37;" f fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f fromJust' src/MaybeHelp.hs 22;" f @@ -3526,7 +3528,7 @@ generateGraphs src/Dodge/Menu.hs 149;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f generateLevelFromRoomList src/Dodge/Layout.hs 35;" f generateWorldFromSeed src/Dodge/LevelGen.hs 17;" f -geom src/Shader/Data.hs 102;" f +geom src/Shader/Data.hs 100;" f geometryQuickCheckTests test/Spec.hs 55;" f geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f @@ -3545,7 +3547,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 470;" f +getDistortions src/Dodge/Render.hs 472;" f getEdgesCrossing src/Dodge/Path.hs 37;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f @@ -3577,7 +3579,6 @@ girder src/Dodge/Room/Foreground.hs 206;" f girderV src/Dodge/Room/Foreground.hs 177;" f girderV' src/Dodge/Room/Foreground.hs 153;" f girderZ src/Dodge/Room/Foreground.hs 108;" f -glNamedBufferSubDataH src/Shader/Bind.hs 53;" f glassLesson src/Dodge/Room/GlassLesson.hs 23;" f glassLessonRunPast src/Dodge/Room/GlassLesson.hs 68;" f glassShat1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 648;" f @@ -3589,7 +3590,7 @@ glassSwitchBackCrits src/Dodge/Room/Room.hs 106;" f glauncherPic src/Dodge/Item/Draw/SPic.hs 400;" f glushortSize src/Shader/Parameters.hs 25;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f -goToTarget src/Dodge/Creature/ReaderUpdate.hs 149;" f +goToTarget src/Dodge/Creature/ReaderUpdate.hs 150;" f grahamEliminate src/Geometry/Polygon.hs 163;" f grahamScan src/Geometry/Polygon.hs 154;" f grapeCannon src/Dodge/Item/Held/Cone.hs 17;" f @@ -3697,7 +3698,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 238;" 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 203;" f @@ -3939,7 +3940,7 @@ linksOnPath src/Dodge/Room/CheckConsistency.hs 6;" f listConfig src/Dodge/Menu.hs 233;" f listControls src/Dodge/Menu.hs 245;" f listCursorChooseBorderScale src/Dodge/Render/List.hs 135;" f -listGuard src/Dodge/Creature/ReaderUpdate.hs 195;" f +listGuard src/Dodge/Creature/ReaderUpdate.hs 196;" f listSelectionColorPicture src/Dodge/DisplayInventory.hs 302;" f litCorridor90 src/Dodge/Room/RoadBlock.hs 26;" f lmt src/MatrixHelper.hs 53;" f @@ -4015,7 +4016,7 @@ 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 128;" f +makeByteStringShaderUsingVAO src/Shader/Compile.hs 132;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeColorTermLine src/Dodge/Terminal.hs 111;" f makeColorTermPara src/Dodge/Terminal.hs 108;" f @@ -4042,13 +4043,13 @@ 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 53;" f -makeShaderProgram src/Shader/Compile.hs 241;" f -makeShaderUsingVAO src/Shader/Compile.hs 146;" f +makeShaderProgram src/Shader/Compile.hs 247;" f +makeShaderUsingVAO src/Shader/Compile.hs 150;" f makeShaderUsingVBO src/Shader/Compile.hs 69;" f makeShaderVBO src/Shader/Compile.hs 32;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 11;" f makeShrapnelAt src/Dodge/Payload.hs 24;" f -makeSourcedShader src/Shader/Compile.hs 167;" f +makeSourcedShader src/Shader/Compile.hs 171;" f makeSpark src/Dodge/Spark.hs 45;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f @@ -4068,8 +4069,8 @@ maxInvSlots src/Dodge/Inventory/CheckSlots.hs 30;" f maxShowX src/Dodge/Combine/Graph.hs 48;" f maxViewDistance src/Dodge/Viewpoints.hs 26;" f maybeBlockedPassage src/Dodge/Room/RezBox.hs 80;" f -maybeDestroyBlock src/Dodge/Wall/Damage.hs 56;" f -maybeDestroyDoor src/Dodge/Wall/Damage.hs 61;" f +maybeDestroyBlock src/Dodge/Wall/Damage.hs 44;" f +maybeDestroyDoor src/Dodge/Wall/Damage.hs 49;" f maybeExitCombine src/Dodge/Update/Input/InGame.hs 562;" f maybeOpenConsole src/Dodge/Update.hs 126;" f maybeReadFile src/Dodge/LoadSeed.hs 10;" f @@ -4118,7 +4119,7 @@ metal6S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 692;" f metal7S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 536;" f metalPlate src/Dodge/Item/Craftable.hs 35;" f mglCreate src/GLHelp.hs 8;" f -mglDelete src/GLHelp.hs 14;" f +mglDelete src/GLHelp.hs 11;" f midBarDecoration src/Dodge/Placement/TopDecoration.hs 16;" f midBounds src/Dodge/Room/Foreground.hs 150;" f midChasm src/Dodge/Room/Tutorial.hs 171;" f @@ -4279,7 +4280,7 @@ overlapCircWalls src/Dodge/Base/Collide.hs 230;" f overlapCircWallsClosest src/Dodge/Base/Collide.hs 272;" f overlapSegCrs src/Dodge/Base/Collide.hs 59;" f overlapSegWalls src/Dodge/Base/Collide.hs 211;" f -overrideInternal src/Dodge/Creature/ReaderUpdate.hs 179;" f +overrideInternal src/Dodge/Creature/ReaderUpdate.hs 180;" f overrideMeleeCloseTarget src/Dodge/Creature/ReaderUpdate.hs 35;" f overwriteLabel src/Dodge/Tree/Compose.hs 31;" f p src/ShortShow.hs 48;" f @@ -4351,16 +4352,16 @@ playSoundAndUpdate src/Sound.hs 54;" f playSoundQueue src/Sound.hs 132;" f playSoundUnlessRewinding appDodge/Main.hs 118;" f plusDecoration src/Dodge/Placement/TopDecoration.hs 35;" f -pmLineLoop src/Shader/Data.hs 107;" f -pmLineStrip src/Shader/Data.hs 107;" f -pmLines src/Shader/Data.hs 107;" f -pmLinesAdjacency src/Shader/Data.hs 107;" f -pmPatches src/Shader/Data.hs 107;" f -pmPoints src/Shader/Data.hs 107;" f -pmQuads src/Shader/Data.hs 107;" f -pmTriangleFan src/Shader/Data.hs 107;" f -pmTriangleStrip src/Shader/Data.hs 107;" f -pmTriangles src/Shader/Data.hs 107;" f +pmLineLoop src/Shader/Data.hs 105;" f +pmLineStrip src/Shader/Data.hs 105;" f +pmLines src/Shader/Data.hs 105;" f +pmLinesAdjacency src/Shader/Data.hs 105;" f +pmPatches src/Shader/Data.hs 105;" f +pmPoints src/Shader/Data.hs 105;" f +pmQuads src/Shader/Data.hs 105;" f +pmTriangleFan src/Shader/Data.hs 105;" f +pmTriangleStrip src/Shader/Data.hs 105;" f +pmTriangles src/Shader/Data.hs 105;" f pnZoneSize src/Dodge/Zoning/Pathing.hs 26;" f pointIfNotClose src/Dodge/LevelGen/StaticWalls/Deprecated.hs 68;" f pointInCircle src/Geometry.hs 209;" f @@ -4604,7 +4605,7 @@ renderLayer src/Render.hs 240;" f renderLightingNoShadows src/Render.hs 48;" f renderListAt src/Dodge/Render/List.hs 192;" f renderShadows src/Render.hs 122;" f -replaceNullWith src/Dodge/Creature/ReaderUpdate.hs 167;" 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 resetPLUse src/Dodge/PlacementSpot.hs 92;" f @@ -4751,7 +4752,7 @@ seagullCry2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 576;" f seagullCryS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 588;" f seagullWhistle1S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 502;" f seagullWhistleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 718;" f -searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 212;" f +searchIfDamaged src/Dodge/Creature/ReaderUpdate.hs 213;" f secondColumnLDP src/Dodge/ListDisplayParams.hs 43;" f sectionsDesiredLines src/Dodge/DisplayInventory.hs 198;" f sectionsSizes src/Dodge/DisplayInventory.hs 201;" f @@ -4803,38 +4804,38 @@ 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 290;" f +setShaderSource src/Shader/Compile.hs 296;" f setShadowLimits src/Dodge/Shadows.hs 11;" f setSoundVolume src/Sound.hs 157;" f -setTargetMv src/Dodge/Creature/ReaderUpdate.hs 82;" f +setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f setTile src/Dodge/Layout.hs 70;" f 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 475;" f +setViewport src/Dodge/Render.hs 477;" 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 188;" f +setupEBO src/Shader/Compile.hs 192;" 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 100;" f -setupVAOUsingVBO src/Shader/Compile.hs 179;" f +setupStaticVBOVAO src/Shader/Compile.hs 102;" f +setupVAOUsingVBO src/Shader/Compile.hs 183;" f setupVBO src/Shader/Compile.hs 83;" f -setupVBOStatic src/Shader/Compile.hs 116;" f -setupVBOVAO src/Shader/Compile.hs 200;" f -setupVertexAttribPointer src/Shader/Compile.hs 224;" f -setupVertexAttribs src/Shader/Compile.hs 218;" f +setupVBOStatic src/Shader/Compile.hs 118;" f +setupVBOVAO src/Shader/Compile.hs 206;" f +setupVertexAttribPointer src/Shader/Compile.hs 230;" f +setupVertexAttribs src/Shader/Compile.hs 224;" 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 172;" f +shaderTypeExt src/Shader/Compile.hs 176;" f shapeBounds src/Dodge/Room/Foreground.hs 147;" f shapePoints src/Dodge/Room/Foreground.hs 144;" f shapeVerxAttributes src/Shape/Parameters.hs 13;" f @@ -5028,7 +5029,7 @@ stone4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 484;" f stone5S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 626;" f stopAllSounds src/Sound.hs 125;" f stopBulletAt src/Dodge/Bullet.hs 200;" f -stopPushing src/Dodge/Wall/Damage.hs 92;" f +stopPushing src/Dodge/Wall/Damage.hs 80;" f stopSoundFrom src/Dodge/SoundLogic.hs 220;" f strFromEquipment src/Dodge/Creature/Statistics.hs 53;" f strFromHeldItem src/Dodge/Creature/Statistics.hs 67;" f @@ -5076,7 +5077,7 @@ targCorner src/Dodge/Targeting/Draw.hs 35;" f targetCursorPic src/Dodge/Targeting/Draw.hs 41;" f targetYouCognizant src/Dodge/Creature/ChooseTarget.hs 14;" f targetYouLOS src/Dodge/Creature/ChooseTarget.hs 8;" f -targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 201;" f +targetYouWhenCognizant src/Dodge/Creature/ReaderUpdate.hs 202;" f targetYouWhenCognizant src/Dodge/Creature/SetTarget.hs 9;" f targetingScope src/Dodge/Item/Scope.hs 38;" f teleS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 528;" f @@ -5146,7 +5147,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 211;" f +toFloatVAs src/Shader/Compile.hs 217;" f toLabel src/Dodge/Cleat.hs 16;" f toMultiset src/Multiset.hs 64;" f toOnward src/Dodge/Tree/Compose.hs 101;" f @@ -5310,9 +5311,9 @@ updateDoors src/Dodge/Update.hs 308;" f updateDust src/Dodge/Update.hs 820;" f updateDusts src/Dodge/Update.hs 670;" f updateEdge src/Dodge/Path.hs 43;" f -updateEdgeWallObs src/Dodge/Update/WallDamage.hs 50;" f -updateEdgesWall src/Dodge/Update/WallDamage.hs 34;" f -updateEdgesWall' src/Dodge/Update/WallDamage.hs 47;" f +updateEdgeWallObs src/Dodge/Update/WallDamage.hs 38;" f +updateEdgesWall src/Dodge/Update/WallDamage.hs 22;" f +updateEdgesWall' src/Dodge/Update/WallDamage.hs 35;" f updateEnergyBall src/Dodge/EnergyBall.hs 31;" f updateEnergyBalls src/Dodge/Update.hs 658;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 505;" f @@ -5393,7 +5394,7 @@ updateUniverseMid src/Dodge/Update.hs 156;" f updateUseInputInGame src/Dodge/Update/Input/InGame.hs 45;" f updateUseInputOnScreen src/Dodge/Update/Input/ScreenLayer.hs 23;" f updateWalkCycle src/Dodge/Creature/State/WalkCycle.hs 11;" f -updateWallDamages src/Dodge/Update/WallDamage.hs 25;" f +updateWallDamages src/Dodge/Update/WallDamage.hs 15;" f updateWheelEvent src/Dodge/Update/Scroll.hs 25;" f updateWheelEvents src/Dodge/Update.hs 412;" f updateWorldEventFlag src/Dodge/Update.hs 120;" f @@ -5444,10 +5445,10 @@ 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 297;" f +vasTightStride src/Shader/Compile.hs 303;" f vecBetweenSpeed src/Dodge/Base.hs 146;" f vecTurnTo src/Dodge/Movement/Turn.hs 19;" f -vert src/Shader/Data.hs 102;" f +vert src/Shader/Data.hs 100;" f vertScale src/MatrixHelper.hs 95;" f vertTrans src/MatrixHelper.hs 103;" f verticalPipe src/Dodge/Picture.hs 19;" f @@ -5457,7 +5458,7 @@ vgunMuzzles src/Dodge/HeldUse.hs 341;" f viewBoundaries src/Dodge/Debug/Picture.hs 331;" f viewClipBounds src/Dodge/Debug/Picture.hs 340;" f viewDistanceFromItems src/Dodge/Update/Camera.hs 197;" f -viewTarget src/Dodge/Creature/ReaderUpdate.hs 154;" f +viewTarget src/Dodge/Creature/ReaderUpdate.hs 155;" f violet src/Color.hs 21;" f visibleWalls src/Dodge/Base/Collide.hs 216;" f visionCheck src/Dodge/Creature/Perception.hs 152;" f @@ -5480,7 +5481,7 @@ wasdM src/Dodge/WASD.hs 9;" f wasdMovement src/Dodge/Creature/YourControl.hs 169;" f wasdWithAiming src/Dodge/Creature/YourControl.hs 126;" f watchCombinations src/Dodge/Combine/Combinations.hs 16;" f -watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 184;" f +watchUpdateStrat src/Dodge/Creature/ReaderUpdate.hs 185;" f weakenMatS src/Dodge/Material/Sound.hs 19;" f weaponBehindPillar src/Dodge/Room/Room.hs 186;" f weaponBetweenPillars src/Dodge/Room/Room.hs 202;" f @@ -5512,7 +5513,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 324;" f +withByteString src/Shader/Compile.hs 330;" 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