diff --git a/shader/lighting/cap.vert b/shader/lighting/cap.vert index 0be979d12..7f6b54a3a 100644 --- a/shader/lighting/cap.vert +++ b/shader/lighting/cap.vert @@ -1,11 +1,48 @@ #version 450 core -layout (location = 0) in vec4 position; +struct PosColNorm { vec4 pos; vec4 col; vec4 norm; }; layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; -uniform vec3 lightPos; -uniform vec4 lumRad; -out float drawbit; -void main() +layout (std430, binding = 3) readonly buffer Data { PosColNorm data[]; }; +layout (std430, binding = 4) readonly buffer Indices { uint indices[]; }; +layout(location=0)uniform vec3 lightPos; +layout(location=1)uniform vec4 lumRad; +vec4 projNear (vec4 pos) { - gl_Position = vec4(position.xyz,1); - drawbit = position.w; + // note we project to a specific height + // this is quite brittle, not ideal + vec3 dir = pos.xyz - lightPos ; + float a = (100 - pos.z) / dir.z ; + vec2 xy = (pos.xyz + a * dir).xy ; + return vec4 ( xy, 100 , 1) ; } +vec4 tris[3] = + {vec4(0,0,0,1) + ,vec4(1,1,0,1) + ,vec4(0,1,0,1) + }; +bool ztest (vec4 p) {return p.z - lightPos.z > 0;} +void main() { + int j = gl_VertexID/3; + int i1 = j * 3; + uint t = indices[gl_VertexID]; + //uint t = gl_VertexID; + gl_Position = tris[t]; + //uint t = gl_VertexID % 3; + vec4 p = data[indices[gl_VertexID]].pos; +// gl_Position = (p.w == 1 +// && ztest(data[indices[i1]].pos) +// && ztest(data[indices[i1+1]].pos) +// && ztest(data[indices[i1+2]].pos) +// ? theMat * projNear(p) +// : vec4(1,1,1,0) +// ); +} +//layout (location = 0) in vec4 position; +//layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; +//uniform vec3 lightPos; +//uniform vec4 lumRad; +//out float drawbit; +//void main() +//{ +// gl_Position = vec4(position.xyz,1); +// drawbit = position.w; +//} diff --git a/shader/lighting/wallShadow.vert b/shader/lighting/wallShadow.vert index bf06eade0..49cde9a6c 100644 --- a/shader/lighting/wallShadow.vert +++ b/shader/lighting/wallShadow.vert @@ -1,9 +1,4 @@ #version 450 core -//layout (location = 0) in vec4 poss; -//void main() -//{ -// gl_Position = poss; -//} struct PosTex { vec4 pospos; vec4 texang; }; layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; layout (std430, binding = 2) readonly buffer Pos { PosTex data[]; }; diff --git a/src/Data/Preload/Render.hs b/src/Data/Preload/Render.hs index 931d623d9..3f9f16925 100644 --- a/src/Data/Preload/Render.hs +++ b/src/Data/Preload/Render.hs @@ -44,6 +44,8 @@ data RenderData = RenderData , _matUBO :: GLuint -- BufferObject id , _winSSBO :: GLuint , _wallSSBO :: GLuint + , _shapeSSBO :: GLuint + , _ishapeSSBO :: GLuint -- , _lightsUBO :: GLuint -- BufferObject id , _vboWindows :: VBO , _vboShapes :: VBO diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index 147ef11ba..963c1a3aa 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -116,6 +116,16 @@ doDrawing' win pdata u = do glNamedBufferSubData (pdata ^. wallSSBO) 0 (fromIntegral $ trueNWalls * sizeOf (0::Float) * 8) (pdata ^. wallVBO . vboPtr) + glNamedBufferSubData (pdata ^. shapeSSBO) 0 +-- (fromIntegral $ nShapeVs * (sizeOf (0::Float)*8 + sizeOf (0::Word8)*4)) + (fromIntegral $ nShapeVs * (sizeOf (0::Float)*12)) + (pdata ^. vboShapes . vboPtr) + withArray [0::GLuint,1,2] $ + glNamedBufferSubData (pdata ^. ishapeSSBO) 0 + (fromIntegral $ 3 * (sizeOf (0::GLuint))) +-- glNamedBufferSubData (pdata ^. ishapeSSBO) 0 +-- (fromIntegral $ nIndices * (sizeOf (0::GLushort))) +-- (pdata ^. shapeEBO . eboPtr) setViewport _gr_world_res cfig glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO) glDepthMask GL_TRUE diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index b02cd71d5..f8032d693 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -49,6 +49,15 @@ preloadRender = do glNamedBufferStorage wallssbo (fromIntegral wallssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT glBindBufferBase GL_SHADER_STORAGE_BUFFER 2 wallssbo + shapessbo <- mglCreate glCreateBuffers + let shapessbosize = fromIntegral (sizeOf (0::Float) * 12) * 65536 + glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT + glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo + ishapessbo <- mglCreate glCreateBuffers + let ishapessbosize = fromIntegral (sizeOf (0::GLushort) * 65536) + glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT + glBindBufferBase GL_SHADER_STORAGE_BUFFER 4 ishapessbo + dummyvao <- mglCreate glGenVertexArrays winpull <- makeShaderUsingVAO "pull/window" [vert,frag] pmTriangles (VAO dummyvao) @@ -86,7 +95,8 @@ preloadRender = do --makeShaderUsingVBO "lighting/wallShadow" [vert, geom] (toFloatVAs [4]) pmPoints wallvbo makeShaderUsingVAO "lighting/wallShadow" [vert] pmTriangles (VAO dummyvao) lightingCapShad <- - makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO + --makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO + makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao) lightingLineShadowShad <- makeShaderUsingVAO "lighting/lineShadow" [vert, geom] pmLinesAdjacency shedgevao @@ -214,6 +224,8 @@ preloadRender = do , _matUBO = theUBO , _winSSBO = winssbo , _wallSSBO = wallssbo + , _shapeSSBO = shapessbo + , _ishapeSSBO = ishapessbo -- , _lightsUBO = lightsubo , _vboWindows = winvbo , _vboShapes = shVBO diff --git a/src/Render.hs b/src/Render.hs index 7c40e5bb8..8041d6118 100644 --- a/src/Render.hs +++ b/src/Render.hs @@ -197,12 +197,21 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li glCullFace GL_FRONT glUseProgram (_shaderUINT lcapShad) glUniform3f 0 x y z - glBindVertexArray $ lcapShad ^. shaderVAO . vaoName --Just (_vao $ _shadVAO lcapShad) - glDrawElements - (_unPrimitiveMode $ _shaderPrimitive lcapShad) - (fromIntegral nCaps) - GL_UNSIGNED_SHORT - nullPtr + glUniform4f 1 r g b rad + --glBindVertexArray $ lcapShad ^. shaderVAO . vaoName --Just (_vao $ _shadVAO lcapShad) + glBindVertexArray $ pdata ^. dummyVAO . vaoName + glFrontFace(GL_CW) + glDrawArrays + GL_TRIANGLES + 0 + 3 + --(fromIntegral nCaps) + glFrontFace(GL_CCW) + --glDrawElements + -- (_unPrimitiveMode $ _shaderPrimitive lcapShad) + -- (fromIntegral nCaps) + -- GL_UNSIGNED_SHORT + -- nullPtr glDisable GL_DEPTH_CLAMP _ -> return () --draw lightmap itself diff --git a/src/Shader/Poke.hs b/src/Shader/Poke.hs index 9d65b4c73..05b99f4b9 100644 --- a/src/Shader/Poke.hs +++ b/src/Shader/Poke.hs @@ -446,7 +446,7 @@ pokeJustV :: pokeJustV xdata cp col ptr nv sh = do pokeByteOff ptr (nv * shapeVerxSize) (V4 x y z xdata) pokeByteOff ptr (nv *shapeVerxSize + 4 * floatSize) (toColor8 col) - pokeByteOff ptr (nv *shapeVerxSize + 4 * (floatSize + ubyteSize)) (V4 nx ny nz 1) + pokeByteOff ptr (nv *shapeVerxSize + 8 * floatSize) (V4 nx ny nz 1) return (nv + 1) where V3 x y z = sh @@ -464,7 +464,7 @@ pokeFlatV :: pokeFlatV xdata norm col ptr nv sh = do pokeByteOff ptr (nv * shapeVerxSize) (V4 x y z xdata) pokeByteOff ptr (nv *shapeVerxSize + 4 * floatSize) (toColor8 col) - pokeByteOff ptr (nv *shapeVerxSize + 4 * (floatSize + ubyteSize)) (V4 nx ny nz 1) + pokeByteOff ptr (nv *shapeVerxSize + 8 * floatSize) (V4 nx ny nz 1) return (nv + 1) where V3 x y z = sh diff --git a/src/Shape/Parameters.hs b/src/Shape/Parameters.hs index 65fe7b54f..a92f30303 100644 --- a/src/Shape/Parameters.hs +++ b/src/Shape/Parameters.hs @@ -1,19 +1,20 @@ -module Shape.Parameters +module Shape.Parameters + (shapeVerxSize,shapeVerxAttributes) where import Shader.Parameters import Shader.Data -import Data.Word +--import Data.Word import Foreign.Storable import Graphics.GL.Core45 shapeVerxSize :: Int -shapeVerxSize = sizeOf (0 :: Float) * 8 + 4 * sizeOf (0 :: Word8) +shapeVerxSize = sizeOf (0 :: Float) * 12 shapeVerxAttributes :: [VertexAttribute] shapeVerxAttributes = [VertexAttribute 4 GL_FLOAT GL_FALSE 0 ,VertexAttribute 4 GL_UNSIGNED_BYTE GL_TRUE (fromIntegral (4 :: Int) * fromIntegral floatSize) - ,VertexAttribute 4 GL_FLOAT GL_FALSE (fromIntegral (4 :: Int) * fromIntegral (floatSize + ubyteSize)) + ,VertexAttribute 4 GL_FLOAT GL_FALSE (fromIntegral (8 :: Int) * fromIntegral (floatSize)) ] diff --git a/tags b/tags index 94685c405..c344aac10 100644 --- a/tags +++ b/tags @@ -92,6 +92,7 @@ BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 178;" C BLOWTORCH src/Dodge/Data/Item/Combine.hs 165;" C BLUE src/Color/Data.hs 14;" C BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 148;" C +BOType src/Shader/Data.hs 86;" t BQuad src/Geometry/Bezier.hs 9;" t BRAINHAT src/Dodge/Data/Item/Combine.hs 125;" C BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 133;" C @@ -355,7 +356,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 86;" t +EBO src/Shader/Data.hs 94;" 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 @@ -435,6 +436,7 @@ FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 50;" C Flee src/Dodge/Data/ActionPlan.hs 143;" C Flesh src/Dodge/Data/Material.hs 17;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 14;" C +FloatBO src/Shader/Data.hs 88;" t FloatConst src/Dodge/Data/FloatFunction.hs 15;" C FloatDistLinearNearFar src/Dodge/Data/FloatFunction.hs 13;" C FloatFOV src/Dodge/Data/FloatFunction.hs 11;" C @@ -988,7 +990,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 97;" t +PrimitiveMode src/Shader/Data.hs 105;" 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 +1151,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 92;" t +ShaderTexture src/Shader/Data.hs 100;" t ShadowFidelity src/Shape/Data.hs 19;" t ShadowRendering src/Dodge/Data/Config.hs 103;" t Shape src/Shape/Data.hs 48;" t @@ -1456,6 +1458,7 @@ WeaponScopeSF src/Dodge/Data/ComposedItem.hs 19;" C WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 20;" C West src/Dodge/Data/CardinalPoint.hs 10;" C West8 src/Dodge/Data/CardinalPoint.hs 34;" C +WindowPoss src/Shader/Data.hs 86;" C WlID src/Dodge/Data/CrWlID.hs 10;" C Wood src/Dodge/Data/Material.hs 11;" C World src/Dodge/Data/World.hs 34;" t @@ -1502,7 +1505,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 26;" f +_barrelShader src/Data/Preload/Render.hs 27;" 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 +1523,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 24;" f +_bloomBlurShader src/Data/Preload/Render.hs 25;" 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 @@ -1534,6 +1537,9 @@ _bmPoints src/Dodge/Data/Beam.hs 22;" f _bmPos src/Dodge/Data/Beam.hs 18;" f _bmRange src/Dodge/Data/Beam.hs 24;" f _bmType src/Dodge/Data/Beam.hs 27;" f +_boName src/Shader/Data.hs 89;" f +_boPtr src/Shader/Data.hs 90;" f +_boType src/Shader/Data.hs 91;" f _boffEff src/Dodge/Data/Button.hs 21;" f _bonEff src/Dodge/Data/Button.hs 20;" f _bounceTolerance src/Dodge/Data/Projectile.hs 46;" f @@ -1586,8 +1592,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 51;" f -_chasmVBO src/Data/Preload/Render.hs 50;" f +_chasmShader src/Data/Preload/Render.hs 53;" f +_chasmVBO src/Data/Preload/Render.hs 52;" 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 +1622,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 56;" f -_cloudShader src/Data/Preload/Render.hs 55;" f -_cloudVBO src/Data/Preload/Render.hs 54;" f +_cloudEBO src/Data/Preload/Render.hs 58;" f +_cloudShader src/Data/Preload/Render.hs 57;" f +_cloudVBO src/Data/Preload/Render.hs 56;" f _clouds src/Dodge/Data/LWorld.hs 96;" f -_colorBlurShader src/Data/Preload/Render.hs 25;" 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 @@ -1748,28 +1754,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 +_dummyVAO src/Data/Preload/Render.hs 60;" 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 87;" f -_eboPtr src/Shader/Data.hs 88;" f +_eboName src/Shader/Data.hs 95;" f +_eboPtr src/Shader/Data.hs 96;" 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 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 +_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 _flItPos src/Dodge/Data/FloorItem.hs 11;" f _flItRot src/Dodge/Data/FloorItem.hs 11;" f _flPos src/Dodge/Data/Flame.hs 13;" f @@ -1780,13 +1786,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 49;" f -_floorVBO src/Data/Preload/Render.hs 48;" f +_floorShader src/Data/Preload/Render.hs 51;" f +_floorVBO src/Data/Preload/Render.hs 50;" 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 22;" f +_fullscreenShader src/Data/Preload/Render.hs 23;" 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 @@ -1818,7 +1824,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 27;" 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 @@ -1939,7 +1945,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 43;" f +_matUBO src/Data/Preload/Render.hs 44;" 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 +2048,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 31;" f +_pictureShaders src/Data/Preload/Render.hs 32;" 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 @@ -2085,6 +2091,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 _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 @@ -2123,7 +2130,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 42;" f +_rboBaseBloom src/Data/Preload/Render.hs 43;" 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 +2193,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 57;" f +_screenTextureVAO src/Data/Preload/Render.hs 59;" 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 +2223,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 29;" f +_shapeEBO src/Data/Preload/Render.hs 30;" f _shapeHalfSize src/Shape/Data.hs 13;" f -_shapeShader src/Data/Preload/Render.hs 28;" f +_shapeShader src/Data/Preload/Render.hs 29;" 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 +2237,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 30;" f +_silhouetteEBO src/Data/Preload/Render.hs 31;" 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 +2302,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 93;" f +_textureObject src/Shader/Data.hs 101;" 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 +2336,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 23;" f +_transparencyCompShader src/Data/Preload/Render.hs 24;" f _trieChildren src/SimpleTrie.hs 12;" f _trieMVal src/SimpleTrie.hs 11;" f _triggers src/Dodge/Data/LWorld.hs 126;" f @@ -2351,7 +2358,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 97;" f +_unPrimitiveMode src/Shader/Data.hs 105;" f _unPutCrit src/Dodge/Data/GenWorld.hs 32;" f _unST src/Dodge/Data/MetaTree.hs 20;" f _unTO src/Shader/Data.hs 59;" f @@ -2391,9 +2398,9 @@ _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 +_vboShapes src/Data/Preload/Render.hs 49;" f _vboVertexBytes src/Shader/Data.hs 82;" f -_vboWindows src/Data/Preload/Render.hs 46;" f +_vboWindows src/Data/Preload/Render.hs 48;" 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,18 +2422,18 @@ _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 53;" f -_wallVBO src/Data/Preload/Render.hs 52;" f +_wallSSBO src/Data/Preload/Render.hs 46;" f +_wallShader src/Data/Preload/Render.hs 55;" f +_wallVBO src/Data/Preload/Render.hs 54;" 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 +_winSSBO src/Data/Preload/Render.hs 45;" 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 _wlHeight src/Dodge/Data/Wall.hs 25;" f @@ -2636,7 +2643,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 251;" f +bindFBO src/Render.hs 252;" f bingate src/Dodge/Item/Scope.hs 109;" f black src/Color.hs 27;" f blank src/Picture/Base.hs 59;" f @@ -2692,7 +2699,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 466;" f +bufferPerspectiveMatrixUBO src/Dodge/Render.hs 471;" f bufferPokedVBO src/Shader/Bind.hs 19;" f bufferShaderLayers src/Shader/Bind.hs 36;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f @@ -2785,7 +2792,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 258;" f +cleanUpRenderPreload src/Preload/Render.hs 267;" f cleanUpSoundPreload src/Preload.hs 15;" f cleanupHalted src/Sound.hs 117;" f cleatLabel src/Dodge/Cleat.hs 30;" f @@ -2871,7 +2878,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 235;" f +cornerList src/Preload/Render.hs 244;" f corpseOrGib src/Dodge/Creature/Update.hs 111;" f corridor src/Dodge/Room/Corridor.hs 17;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f @@ -3434,7 +3441,7 @@ facesToVF src/Polyhedra/Geodesic.hs 69;" f farWallDistDirection src/Dodge/Update/Camera.hs 244;" f fdiv src/ShortShow.hs 41;" f feet src/Dodge/Creature/Picture.hs 51;" f -ffoldM src/Framebuffer/Update.hs 71;" f +ffoldM src/Framebuffer/Update.hs 73;" f filter3 src/FoldableHelp.hs 76;" f filterSectionsPair src/Dodge/DisplayInventory.hs 157;" f findBlips src/Dodge/RadarSweep.hs 63;" f @@ -3498,7 +3505,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 100;" f +frag src/Shader/Data.hs 108;" f freeShaderPointers' src/Shader.hs 37;" f fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f fromJust' src/MaybeHelp.hs 22;" f @@ -3528,7 +3535,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 100;" f +geom src/Shader/Data.hs 108;" f geometryQuickCheckTests test/Spec.hs 55;" f geometryTests test/Spec.hs 17;" f geometryUnitTests test/Spec.hs 22;" f @@ -3547,7 +3554,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 472;" f +getDistortions src/Dodge/Render.hs 477;" f getEdgesCrossing src/Dodge/Path.hs 37;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f @@ -3698,10 +3705,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 253;" f +initializeGLState src/Preload/Render.hs 262;" f initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f -initializeTexture2D src/Framebuffer/Update.hs 203;" f +initializeTexture2D src/Framebuffer/Update.hs 205;" f inorderNumberTree src/TreeHelp.hs 190;" f insertAt src/Padding.hs 63;" f insertIMInZone src/Dodge/Base.hs 54;" f @@ -4323,7 +4330,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 227;" f +pingPongBetween src/Render.hs 228;" 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 @@ -4352,16 +4359,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 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 +pmLineLoop src/Shader/Data.hs 113;" f +pmLineStrip src/Shader/Data.hs 113;" f +pmLines src/Shader/Data.hs 113;" f +pmLinesAdjacency src/Shader/Data.hs 113;" f +pmPatches src/Shader/Data.hs 113;" f +pmPoints src/Shader/Data.hs 113;" f +pmQuads src/Shader/Data.hs 113;" f +pmTriangleFan src/Shader/Data.hs 113;" f +pmTriangleStrip src/Shader/Data.hs 113;" f +pmTriangles src/Shader/Data.hs 113;" f pnZoneSize src/Dodge/Zoning/Pathing.hs 26;" f pointIfNotClose src/Dodge/LevelGen/StaticWalls/Deprecated.hs 68;" f pointInCircle src/Geometry.hs 209;" f @@ -4601,7 +4608,7 @@ renderDataResizeUpdate src/Preload/Update.hs 26;" f renderFlatLighting src/Render.hs 107;" f renderInfoListAt src/Dodge/Render/InfoBox.hs 17;" f renderInfoListsAt src/Dodge/Render/InfoBox.hs 44;" f -renderLayer src/Render.hs 240;" f +renderLayer src/Render.hs 241;" f renderLightingNoShadows src/Render.hs 48;" f renderListAt src/Dodge/Render/List.hs 192;" f renderShadows src/Render.hs 122;" f @@ -4611,10 +4618,10 @@ 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 185;" f -resizeFBOTO2 src/Framebuffer/Update.hs 133;" f -resizeFBOTO3 src/Framebuffer/Update.hs 157;" f -resizeRBO src/Framebuffer/Update.hs 74;" f +resizeFBOTO src/Framebuffer/Update.hs 187;" f +resizeFBOTO2 src/Framebuffer/Update.hs 135;" f +resizeFBOTO3 src/Framebuffer/Update.hs 159;" f +resizeRBO src/Framebuffer/Update.hs 76;" f respawn src/Dodge/SpawnAt.hs 12;" f restrictInLinks src/Dodge/RoomLink.hs 44;" f restrictLinkType src/Dodge/RoomLink.hs 34;" f @@ -4813,7 +4820,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 477;" f +setViewport src/Dodge/Render.hs 482;" f setVol src/Dodge/Config.hs 47;" f setWristShieldPos src/Dodge/Equipment.hs 49;" f setWristShieldPos src/Dodge/Euse.hs 38;" f @@ -5318,9 +5325,9 @@ updateEnergyBall src/Dodge/EnergyBall.hs 31;" f updateEnergyBalls src/Dodge/Update.hs 658;" f updateEnterRegex src/Dodge/Update/Input/InGame.hs 505;" f updateExpBarrel src/Dodge/Barreloid.hs 21;" f -updateFBOTO src/Framebuffer/Update.hs 77;" f -updateFBOTO2 src/Framebuffer/Update.hs 95;" f -updateFBOTO3 src/Framebuffer/Update.hs 113;" f +updateFBOTO src/Framebuffer/Update.hs 79;" f +updateFBOTO2 src/Framebuffer/Update.hs 97;" f +updateFBOTO3 src/Framebuffer/Update.hs 115;" f updateFlame src/Dodge/Flame.hs 19;" f updateFlames src/Dodge/Update.hs 655;" f updateFloatingCamera src/Dodge/Update/Camera.hs 36;" f @@ -5448,7 +5455,7 @@ validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" 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 100;" f +vert src/Shader/Data.hs 108;" f vertScale src/MatrixHelper.hs 95;" f vertTrans src/MatrixHelper.hs 103;" f verticalPipe src/Dodge/Picture.hs 19;" f