Use ssbo/vertex pulling for lighting cap shader

Not yet sure whether the colour vector is correctly input into the ssbo
This commit is contained in:
2025-11-11 14:15:42 +00:00
parent a65a1cab93
commit 219c574931
11 changed files with 90 additions and 85 deletions
+8 -17
View File
@@ -14,27 +14,18 @@ vec4 projNear (vec4 pos)
vec2 xy = (pos.xyz + a * dir).xy ; vec2 xy = (pos.xyz + a * dir).xy ;
return vec4 ( xy, 100 , 1) ; 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;} bool ztest (vec4 p) {return p.z - lightPos.z > 0;}
void main() { void main() {
int j = gl_VertexID/3; int j = gl_VertexID/3;
int i1 = j * 3; int i1 = j * 3;
uint t = indices[gl_VertexID]; vec4 po = data[indices[gl_VertexID]].pos;
//uint t = gl_VertexID; gl_Position = (po.w == 1
gl_Position = tris[t]; && ztest(data[indices[i1]].pos)
//uint t = gl_VertexID % 3; && ztest(data[indices[i1+1]].pos)
vec4 p = data[indices[gl_VertexID]].pos; && ztest(data[indices[i1+2]].pos)
// gl_Position = (p.w == 1 ? theMat * projNear(po)
// && ztest(data[indices[i1]].pos) : vec4(1,1,1,0)
// && 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 (location = 0) in vec4 position;
//layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; //layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
+23 -11
View File
@@ -116,16 +116,28 @@ doDrawing' win pdata u = do
glNamedBufferSubData (pdata ^. wallSSBO) 0 glNamedBufferSubData (pdata ^. wallSSBO) 0
(fromIntegral $ trueNWalls * sizeOf (0::Float) * 8) (fromIntegral $ trueNWalls * sizeOf (0::Float) * 8)
(pdata ^. wallVBO . vboPtr) (pdata ^. wallVBO . vboPtr)
-- withArray
-- [V4 0 0 0 (1:: Float)
-- ,V4 0 0 0 0
-- ,V4 0 0 0 0
-- ,V4 1 1 0 1
-- ,V4 0 0 0 0
-- ,V4 0 0 0 0
-- ,V4 0 1 0 1
-- ,V4 0 0 0 0
-- ,V4 0 0 0 0
-- ]
-- $ glNamedBufferSubData (pdata ^. shapeSSBO) 0
-- (fromIntegral $ 9 * (sizeOf (0::Float)*12))
-- withArray [0::GLuint,1,2] $
-- glNamedBufferSubData (pdata ^. ishapeSSBO) 0
-- (fromIntegral $ 3 * (sizeOf (0::GLuint)))
glNamedBufferSubData (pdata ^. shapeSSBO) 0 glNamedBufferSubData (pdata ^. shapeSSBO) 0
-- (fromIntegral $ nShapeVs * (sizeOf (0::Float)*8 + sizeOf (0::Word8)*4))
(fromIntegral $ nShapeVs * (sizeOf (0::Float)*12)) (fromIntegral $ nShapeVs * (sizeOf (0::Float)*12))
(pdata ^. vboShapes . vboPtr) (pdata ^. vboShapes . vboPtr)
withArray [0::GLuint,1,2] $ glNamedBufferSubData (pdata ^. ishapeSSBO) 0
glNamedBufferSubData (pdata ^. ishapeSSBO) 0 (fromIntegral $ nIndices * (sizeOf (0::GLuint)))
(fromIntegral $ 3 * (sizeOf (0::GLuint))) (pdata ^. shapeEBO . eboPtr)
-- glNamedBufferSubData (pdata ^. ishapeSSBO) 0
-- (fromIntegral $ nIndices * (sizeOf (0::GLushort)))
-- (pdata ^. shapeEBO . eboPtr)
setViewport _gr_world_res cfig setViewport _gr_world_res cfig
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO) glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
glDepthMask GL_TRUE glDepthMask GL_TRUE
@@ -185,7 +197,7 @@ doDrawing' win pdata u = do
glDrawElements glDrawElements
(_unPrimitiveMode $ _shaderPrimitive fs) (_unPrimitiveMode $ _shaderPrimitive fs)
(fromIntegral nIndices) (fromIntegral nIndices)
GL_UNSIGNED_SHORT GL_UNSIGNED_INT
nullPtr nullPtr
-- draw chasm shader blocking floor -- draw chasm shader blocking floor
glUseProgram (pdata ^. chasmShader . shaderUINT) glUseProgram (pdata ^. chasmShader . shaderUINT)
@@ -263,7 +275,7 @@ doDrawing' win pdata u = do
glDrawElements glDrawElements
(pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode) (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
(fromIntegral nCloudIs) (fromIntegral nCloudIs)
GL_UNSIGNED_SHORT GL_UNSIGNED_INT
nullPtr nullPtr
glDepthMask GL_TRUE glDepthMask GL_TRUE
@@ -307,7 +319,7 @@ doDrawing' win pdata u = do
glDrawElements glDrawElements
(pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode) (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
(fromIntegral nCloudIs) (fromIntegral nCloudIs)
GL_UNSIGNED_SHORT GL_UNSIGNED_INT
nullPtr nullPtr
-- glEnable GL_CULL_FACE -- glEnable GL_CULL_FACE
-- glEnable GL_DEPTH_CLAMP -- glEnable GL_DEPTH_CLAMP
@@ -339,7 +351,7 @@ doDrawing' win pdata u = do
glDrawElements glDrawElements
(pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode) (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
(fromIntegral nCloudIs) (fromIntegral nCloudIs)
GL_UNSIGNED_SHORT GL_UNSIGNED_INT
nullPtr nullPtr
--- ---
-- glEnable GL_CULL_FACE -- glEnable GL_CULL_FACE
+1 -1
View File
@@ -54,7 +54,7 @@ preloadRender = do
glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo
ishapessbo <- mglCreate glCreateBuffers ishapessbo <- mglCreate glCreateBuffers
let ishapessbosize = fromIntegral (sizeOf (0::GLushort) * 65536) let ishapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536)
glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_SHADER_STORAGE_BUFFER 4 ishapessbo glBindBufferBase GL_SHADER_STORAGE_BUFFER 4 ishapessbo
+3 -3
View File
@@ -190,7 +190,7 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li
glDrawElements glDrawElements
(_unPrimitiveMode $ _shaderPrimitive llinesShad) (_unPrimitiveMode $ _shaderPrimitive llinesShad)
(fromIntegral nSils) (fromIntegral nSils)
GL_UNSIGNED_SHORT GL_UNSIGNED_INT
nullPtr nullPtr
--draw caps on the near plane as required --draw caps on the near plane as required
glEnable GL_CULL_FACE glEnable GL_CULL_FACE
@@ -204,8 +204,8 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li
glDrawArrays glDrawArrays
GL_TRIANGLES GL_TRIANGLES
0 0
3 --3
--(fromIntegral nCaps) (fromIntegral nCaps)
glFrontFace(GL_CCW) glFrontFace(GL_CCW)
--glDrawElements --glDrawElements
-- (_unPrimitiveMode $ _shaderPrimitive lcapShad) -- (_unPrimitiveMode $ _shaderPrimitive lcapShad)
+1 -1
View File
@@ -30,7 +30,7 @@ bufferEBO ebo numis =
glNamedBufferSubData glNamedBufferSubData
(ebo ^. eboName) (ebo ^. eboName)
0 0
(fromIntegral $ glushortSize * numis) (fromIntegral $ gluintSize * numis)
(ebo ^. eboPtr) (ebo ^. eboPtr)
bufferShaderLayers :: MV.MVector (PrimState IO) (Shader, VBO) -> UMV.MVector (PrimState IO) Int -> IO () bufferShaderLayers :: MV.MVector (PrimState IO) (Shader, VBO) -> UMV.MVector (PrimState IO) Int -> IO ()
+2 -2
View File
@@ -191,12 +191,12 @@ setupVAOUsingVBO vas vbo = do
setupEBO :: VAO -> IO EBO setupEBO :: VAO -> IO EBO
setupEBO vao = do setupEBO vao = do
eboptr <- mallocArray numGLushort eboptr <- mallocArray 65536 -- so we can go back to glushort...
eboname <- mglCreate glCreateBuffers eboname <- mglCreate glCreateBuffers
--glNamedBufferData --glNamedBufferData
glNamedBufferStorage glNamedBufferStorage
eboname eboname
(fromIntegral $ glushortSize * numGLushort) (fromIntegral $ gluintSize * 65536)
nullPtr nullPtr
GL_DYNAMIC_STORAGE_BIT GL_DYNAMIC_STORAGE_BIT
--GL_STREAM_DRAW --GL_STREAM_DRAW
+1 -1
View File
@@ -93,7 +93,7 @@ data FloatBO = FloatBO
data EBO = EBO data EBO = EBO
{ _eboName :: GLuint { _eboName :: GLuint
, _eboPtr :: Ptr GLushort , _eboPtr :: Ptr GLuint
} }
-- | Datatype containing the reference to a texture object. -- | Datatype containing the reference to a texture object.
+8 -8
View File
@@ -3,8 +3,8 @@ module Shader.Parameters
, ubyteSize , ubyteSize
, numDrawableVertices , numDrawableVertices
, numSubElements , numSubElements
, glushortSize , gluintSize
, numGLushort , numGLuint
) where ) where
--import Picture.Data --import Picture.Data
import Graphics.GL.Core45 import Graphics.GL.Core45
@@ -22,13 +22,13 @@ floatSize = sizeOf (0.5 :: GLfloat)
--intSize = sizeOf (1 :: GLuint) --intSize = sizeOf (1 :: GLuint)
--{-# INLINE intSize #-} --{-# INLINE intSize #-}
glushortSize :: Int gluintSize :: Int
glushortSize = sizeOf (0 :: GLushort) gluintSize = sizeOf (0 :: GLuint)
{-# INLINE glushortSize #-} {-# INLINE gluintSize #-}
numGLushort :: Int numGLuint :: Int
numGLushort = fromIntegral (maxBound :: GLushort) + 1 numGLuint = fromIntegral (maxBound :: GLint) + 1
{-# INLINE numGLushort #-} {-# INLINE numGLuint #-}
-- why 6? -- why 6?
numDrawableVertices :: Int numDrawableVertices :: Int
+11 -11
View File
@@ -111,8 +111,8 @@ pokeW ptr i' ((V2 a b, V2 c d), V4 e f g h) = do
pokeShape :: pokeShape ::
(Surface -> Bool) -> (Surface -> Bool) ->
Ptr Float -> Ptr Float ->
Ptr GLushort -> Ptr GLuint ->
Ptr GLushort -> Ptr GLuint ->
(Int, Int, Int) -> (Int, Int, Int) ->
[Surface] -> [Surface] ->
IO (Int, Int, Int) IO (Int, Int, Int)
@@ -124,8 +124,8 @@ pokeShape shadowtest ptr iptr ieptr is =
pokeShapeObj :: pokeShapeObj ::
(Surface -> Bool) -> (Surface -> Bool) ->
Ptr Float -> Ptr Float ->
Ptr GLushort -> Ptr GLuint ->
Ptr GLushort -> Ptr GLuint ->
(Int, Int, Int) -> (Int, Int, Int) ->
Surface -> Surface ->
IO (Int, Int, Int) IO (Int, Int, Int)
@@ -142,8 +142,8 @@ pokeRoundedFaces ::
Point4 -> Point4 ->
Int -> Int ->
Ptr Float -> Ptr Float ->
Ptr GLushort -> Ptr GLuint ->
Ptr GLushort -> Ptr GLuint ->
(Int, Int, Int) -> (Int, Int, Int) ->
[Point3] -> [Point3] ->
IO (Int, Int, Int) IO (Int, Int, Int)
@@ -174,8 +174,8 @@ pokeCylinder ::
Point4 -> Point4 ->
Int -> Int ->
Ptr Float -> Ptr Float ->
Ptr GLushort -> Ptr GLuint ->
Ptr GLushort -> Ptr GLuint ->
(Int, Int, Int) -> (Int, Int, Int) ->
[Point3] -> [Point3] ->
IO (Int, Int, Int) IO (Int, Int, Int)
@@ -229,8 +229,8 @@ pokeBox ::
Point4 -> Point4 ->
Int -> Int ->
Ptr Float -> Ptr Float ->
Ptr GLushort -> Ptr GLuint ->
Ptr GLushort -> Ptr GLuint ->
(Int, Int, Int) -> (Int, Int, Int) ->
[Point3] -> [Point3] ->
IO (Int, Int, Int) IO (Int, Int, Int)
@@ -297,7 +297,7 @@ boxSurfacesIndices n =
pokeIndex :: pokeIndex ::
-- | base index -- | base index
Int -> Int ->
Ptr GLushort -> Ptr GLuint ->
-- | number poked -- | number poked
Int -> Int ->
-- | index offset -- | index offset
+4 -4
View File
@@ -12,10 +12,10 @@ import Geometry.Data
import Graphics.GL.Core45 import Graphics.GL.Core45
import Linear import Linear
pokeCloud :: Ptr Float -> Ptr GLushort -> (Int, Int) -> Cloud -> IO (Int, Int) pokeCloud :: Ptr Float -> Ptr GLuint -> (Int, Int) -> Cloud -> IO (Int, Int)
pokeCloud vptr iptr (nv, ni) = pokeCloudLike vptr iptr (nv, ni) . mkCloudCloudLike pokeCloud vptr iptr (nv, ni) = pokeCloudLike vptr iptr (nv, ni) . mkCloudCloudLike
pokeDust :: Ptr Float -> Ptr GLushort -> (Int, Int) -> Dust -> IO (Int, Int) pokeDust :: Ptr Float -> Ptr GLuint -> (Int, Int) -> Dust -> IO (Int, Int)
pokeDust vptr iptr (nv, ni) = pokeCloudLike vptr iptr (nv, ni) . mkDustCloudLike pokeDust vptr iptr (nv, ni) = pokeCloudLike vptr iptr (nv, ni) . mkDustCloudLike
mkCloudCloudLike :: Cloud -> (Point3, Point4) mkCloudCloudLike :: Cloud -> (Point3, Point4)
@@ -31,7 +31,7 @@ mkDustCloudLike x = (x ^. dsPos, V4 r g b a)
a = a' * min 1 (fromIntegral (_dsTimer x) / 100) a = a' * min 1 (fromIntegral (_dsTimer x) / 100)
pokeCloudLike :: pokeCloudLike ::
Ptr Float -> Ptr GLushort -> (Int, Int) -> (Point3, Point4) -> IO (Int, Int) Ptr Float -> Ptr GLuint -> (Int, Int) -> (Point3, Point4) -> IO (Int, Int)
pokeCloudLike vptr iptr (nv, ni) x = do pokeCloudLike vptr iptr (nv, ni) x = do
UV.imapM_ (pokeCloudLikeVerx vptr x nv) $ UV.imapM_ (pokeCloudLikeVerx vptr x nv) $
UV.fromList [(1, 1), (-1, 1), (-1, -1), (1, -1)] UV.fromList [(1, 1), (-1, 1), (-1, -1), (1, -1)]
@@ -57,7 +57,7 @@ pokeCloudFloat :: Ptr Float -> Int -> Int -> Float -> IO ()
{-# INLINE pokeCloudFloat #-} {-# INLINE pokeCloudFloat #-}
pokeCloudFloat ptr nv i = pokeElemOff ptr (nv * 12 + i) pokeCloudFloat ptr nv i = pokeElemOff ptr (nv * 12 + i)
pokeCloudIndex :: Ptr GLushort -> Int -> Int -> Int -> Int -> IO () pokeCloudIndex :: Ptr GLuint -> Int -> Int -> Int -> Int -> IO ()
{-# INLINE pokeCloudIndex #-} {-# INLINE pokeCloudIndex #-}
pokeCloudIndex ptr nv ni ioff voff = pokeElemOff ptr (ni + ioff) (fromIntegral $ nv + voff) pokeCloudIndex ptr nv ni ioff voff = pokeElemOff ptr (ni + ioff) (fromIntegral $ nv + voff)
+28 -26
View File
@@ -1592,8 +1592,8 @@ _cdtUp src/Dodge/Data/DoubleTree.hs 92;" f
_ceSideEffect src/Dodge/Data/Universe.hs 66;" f _ceSideEffect src/Dodge/Data/Universe.hs 66;" f
_ceString src/Dodge/Data/Universe.hs 67;" f _ceString src/Dodge/Data/Universe.hs 67;" f
_ceilingStencilShader src/Data/Preload/Render.hs 18;" f _ceilingStencilShader src/Data/Preload/Render.hs 18;" f
_chasmShader src/Data/Preload/Render.hs 53;" f _chasmShader src/Data/Preload/Render.hs 55;" f
_chasmVBO src/Data/Preload/Render.hs 52;" f _chasmVBO src/Data/Preload/Render.hs 54;" f
_chasms src/Dodge/Data/CWorld.hs 33;" f _chasms src/Dodge/Data/CWorld.hs 33;" f
_ciFilter src/Dodge/Data/HUD.hs 25;" f _ciFilter src/Dodge/Data/HUD.hs 25;" f
_ciInvIDs src/Dodge/Data/Combine.hs 9;" f _ciInvIDs src/Dodge/Data/Combine.hs 9;" f
@@ -1622,9 +1622,9 @@ _clickPos src/Dodge/Data/Input.hs 42;" f
_clickWorldPos src/Dodge/Data/Input.hs 44;" f _clickWorldPos src/Dodge/Data/Input.hs 44;" f
_closeButtons src/Dodge/Data/HUD.hs 36;" f _closeButtons src/Dodge/Data/HUD.hs 36;" f
_closeItems src/Dodge/Data/HUD.hs 35;" f _closeItems src/Dodge/Data/HUD.hs 35;" f
_cloudEBO src/Data/Preload/Render.hs 58;" f _cloudEBO src/Data/Preload/Render.hs 60;" f
_cloudShader src/Data/Preload/Render.hs 57;" f _cloudShader src/Data/Preload/Render.hs 59;" f
_cloudVBO src/Data/Preload/Render.hs 56;" f _cloudVBO src/Data/Preload/Render.hs 58;" f
_clouds src/Dodge/Data/LWorld.hs 96;" f _clouds src/Dodge/Data/LWorld.hs 96;" f
_colorBlurShader src/Data/Preload/Render.hs 26;" f _colorBlurShader src/Data/Preload/Render.hs 26;" f
_coolEnd src/Dodge/Data/TriggerType.hs 17;" f _coolEnd src/Dodge/Data/TriggerType.hs 17;" f
@@ -1754,7 +1754,7 @@ _dsZoning src/Dodge/Data/World.hs 48;" f
_dtLeft src/Dodge/Data/DoubleTree.hs 29;" f _dtLeft src/Dodge/Data/DoubleTree.hs 29;" f
_dtRight src/Dodge/Data/DoubleTree.hs 29;" f _dtRight src/Dodge/Data/DoubleTree.hs 29;" f
_dtValue src/Dodge/Data/DoubleTree.hs 29;" f _dtValue src/Dodge/Data/DoubleTree.hs 29;" f
_dummyVAO src/Data/Preload/Render.hs 60;" f _dummyVAO src/Data/Preload/Render.hs 62;" f
_dusts src/Dodge/Data/LWorld.hs 97;" f _dusts src/Dodge/Data/LWorld.hs 97;" f
_ebID src/Dodge/Data/EnergyBall/Type.hs 13;" f _ebID src/Dodge/Data/EnergyBall/Type.hs 13;" f
_ebPos src/Dodge/Data/EnergyBall.hs 17;" f _ebPos src/Dodge/Data/EnergyBall.hs 17;" f
@@ -1786,8 +1786,8 @@ _flankTarget src/Dodge/Data/ActionPlan.hs 129;" f
_flares src/Dodge/Data/LWorld.hs 108;" f _flares src/Dodge/Data/LWorld.hs 108;" f
_flatShieldWlMIX src/Dodge/Data/Item/Params.hs 14;" f _flatShieldWlMIX src/Dodge/Data/Item/Params.hs 14;" f
_floorItems src/Dodge/Data/LWorld.hs 127;" f _floorItems src/Dodge/Data/LWorld.hs 127;" f
_floorShader src/Data/Preload/Render.hs 51;" f _floorShader src/Data/Preload/Render.hs 53;" f
_floorVBO src/Data/Preload/Render.hs 50;" f _floorVBO src/Data/Preload/Render.hs 52;" f
_foreShapes src/Dodge/Data/LWorld.hs 132;" f _foreShapes src/Dodge/Data/LWorld.hs 132;" f
_fsDir src/Dodge/Data/ForegroundShape.hs 14;" f _fsDir src/Dodge/Data/ForegroundShape.hs 14;" f
_fsPos src/Dodge/Data/ForegroundShape.hs 13;" f _fsPos src/Dodge/Data/ForegroundShape.hs 13;" f
@@ -1869,6 +1869,7 @@ _incNode src/Dodge/Data/CWorld.hs 30;" f
_incNodeZoning src/Dodge/Data/World.hs 52;" f _incNodeZoning src/Dodge/Data/World.hs 52;" f
_input src/Dodge/Data/World.hs 41;" f _input src/Dodge/Data/World.hs 41;" f
_isWarming src/Dodge/Data/Item/Params.hs 21;" f _isWarming src/Dodge/Data/Item/Params.hs 21;" f
_ishapeSSBO src/Data/Preload/Render.hs 48;" f
_ispCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" f _ispCloseButton src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 31;" f
_ispCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" f _ispCloseItem src/Dodge/Data/Item/Use/Consumption/LoadAction.hs 29;" f
_itConsumables src/Dodge/Data/Item.hs 28;" f _itConsumables src/Dodge/Data/Item.hs 28;" f
@@ -2193,7 +2194,7 @@ _scOptions src/Dodge/Data/Universe.hs 84;" f
_scPositionedMenuOption src/Dodge/Data/Universe.hs 86;" f _scPositionedMenuOption src/Dodge/Data/Universe.hs 86;" f
_scSelectionList src/Dodge/Data/Universe.hs 88;" f _scSelectionList src/Dodge/Data/Universe.hs 88;" f
_scTitle src/Dodge/Data/Universe.hs 83;" f _scTitle src/Dodge/Data/Universe.hs 83;" f
_screenTextureVAO src/Data/Preload/Render.hs 59;" f _screenTextureVAO src/Data/Preload/Render.hs 61;" f
_scrollAmount src/Dodge/Data/Input.hs 40;" f _scrollAmount src/Dodge/Data/Input.hs 40;" f
_scrollItemID src/Dodge/Data/World.hs 68;" f _scrollItemID src/Dodge/Data/World.hs 68;" f
_scrollItemID src/Dodge/Data/World.hs 77;" f _scrollItemID src/Dodge/Data/World.hs 77;" f
@@ -2225,6 +2226,7 @@ _shaderUINT src/Shader/Data.hs 52;" f
_shaderVAO src/Shader/Data.hs 54;" f _shaderVAO src/Shader/Data.hs 54;" f
_shapeEBO src/Data/Preload/Render.hs 30;" f _shapeEBO src/Data/Preload/Render.hs 30;" f
_shapeHalfSize src/Shape/Data.hs 13;" f _shapeHalfSize src/Shape/Data.hs 13;" f
_shapeSSBO src/Data/Preload/Render.hs 47;" f
_shapeShader src/Data/Preload/Render.hs 29;" f _shapeShader src/Data/Preload/Render.hs 29;" f
_shellPayload src/Dodge/Data/Item/Combine.hs 101;" f _shellPayload src/Dodge/Data/Item/Combine.hs 101;" f
_shockwaves src/Dodge/Data/LWorld.hs 112;" f _shockwaves src/Dodge/Data/LWorld.hs 112;" f
@@ -2398,9 +2400,9 @@ _vaType src/Shader/Data.hs 68;" f
_vaoName src/Shader/Data.hs 64;" f _vaoName src/Shader/Data.hs 64;" f
_vboName src/Shader/Data.hs 80;" f _vboName src/Shader/Data.hs 80;" f
_vboPtr src/Shader/Data.hs 81;" f _vboPtr src/Shader/Data.hs 81;" f
_vboShapes src/Data/Preload/Render.hs 49;" f _vboShapes src/Data/Preload/Render.hs 51;" f
_vboVertexBytes src/Shader/Data.hs 82;" f _vboVertexBytes src/Shader/Data.hs 82;" f
_vboWindows src/Data/Preload/Render.hs 48;" f _vboWindows src/Data/Preload/Render.hs 50;" f
_vcCoolDown src/Dodge/Data/Creature/Misc.hs 22;" f _vcCoolDown src/Dodge/Data/Creature/Misc.hs 22;" f
_vcMaxCoolDown src/Dodge/Data/Creature/Misc.hs 21;" f _vcMaxCoolDown src/Dodge/Data/Creature/Misc.hs 21;" f
_vertices src/Polyhedra/Data.hs 22;" f _vertices src/Polyhedra/Data.hs 22;" f
@@ -2423,8 +2425,8 @@ _waitThenAction src/Dodge/Data/ActionPlan.hs 76;" f
_waitThenTimer src/Dodge/Data/ActionPlan.hs 75;" f _waitThenTimer src/Dodge/Data/ActionPlan.hs 75;" f
_wallDamages src/Dodge/Data/LWorld.hs 119;" f _wallDamages src/Dodge/Data/LWorld.hs 119;" f
_wallSSBO src/Data/Preload/Render.hs 46;" f _wallSSBO src/Data/Preload/Render.hs 46;" f
_wallShader src/Data/Preload/Render.hs 55;" f _wallShader src/Data/Preload/Render.hs 57;" f
_wallVBO src/Data/Preload/Render.hs 54;" f _wallVBO src/Data/Preload/Render.hs 56;" f
_walls src/Dodge/Data/LWorld.hs 118;" f _walls src/Dodge/Data/LWorld.hs 118;" f
_wanID src/Dodge/Data/LWorld.hs 158;" f _wanID src/Dodge/Data/LWorld.hs 158;" f
_wanPos src/Dodge/Data/LWorld.hs 157;" f _wanPos src/Dodge/Data/LWorld.hs 157;" f
@@ -2643,7 +2645,7 @@ beltMag src/Dodge/Item/Ammo.hs 39;" f
bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 226;" f bfsThenReturn src/Dodge/Creature/ReaderUpdate.hs 226;" f
bgateCalc src/Dodge/Inventory/SelectionList.hs 118;" f bgateCalc src/Dodge/Inventory/SelectionList.hs 118;" f
bgunSound src/Dodge/HeldUse.hs 514;" f bgunSound src/Dodge/HeldUse.hs 514;" f
bindFBO src/Render.hs 252;" f bindFBO src/Render.hs 261;" f
bingate src/Dodge/Item/Scope.hs 109;" f bingate src/Dodge/Item/Scope.hs 109;" f
black src/Color.hs 27;" f black src/Color.hs 27;" f
blank src/Picture/Base.hs 59;" f blank src/Picture/Base.hs 59;" f
@@ -2699,7 +2701,7 @@ brightX src/Color.hs 116;" f
btSPic src/Dodge/Render/ShapePicture.hs 129;" f btSPic src/Dodge/Render/ShapePicture.hs 129;" f
btText src/Dodge/Inventory/SelectionList.hs 237;" f btText src/Dodge/Inventory/SelectionList.hs 237;" f
bufferEBO src/Shader/Bind.hs 28;" f bufferEBO src/Shader/Bind.hs 28;" f
bufferPerspectiveMatrixUBO src/Dodge/Render.hs 471;" f bufferPerspectiveMatrixUBO src/Dodge/Render.hs 481;" f
bufferPokedVBO src/Shader/Bind.hs 19;" f bufferPokedVBO src/Shader/Bind.hs 19;" f
bufferShaderLayers src/Shader/Bind.hs 36;" f bufferShaderLayers src/Shader/Bind.hs 36;" f
bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f
@@ -2792,7 +2794,7 @@ clang2S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 676;" f
clangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 542;" f clangS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 542;" f
cldtPropagateFold src/Dodge/DoubleTree.hs 358;" f cldtPropagateFold src/Dodge/DoubleTree.hs 358;" f
cleanUpPreload src/Preload.hs 10;" f cleanUpPreload src/Preload.hs 10;" f
cleanUpRenderPreload src/Preload/Render.hs 267;" f cleanUpRenderPreload src/Preload/Render.hs 269;" f
cleanUpSoundPreload src/Preload.hs 15;" f cleanUpSoundPreload src/Preload.hs 15;" f
cleanupHalted src/Sound.hs 117;" f cleanupHalted src/Sound.hs 117;" f
cleatLabel src/Dodge/Cleat.hs 30;" f cleatLabel src/Dodge/Cleat.hs 30;" f
@@ -2878,7 +2880,7 @@ copier src/Dodge/Item/Scope.hs 88;" f
copierItemUpdate src/Dodge/Creature/State.hs 131;" f copierItemUpdate src/Dodge/Creature/State.hs 131;" f
copyItemToFloor src/Dodge/FloorItem.hs 14;" f copyItemToFloor src/Dodge/FloorItem.hs 14;" f
corDoor src/Dodge/Room/Room.hs 385;" f corDoor src/Dodge/Room/Room.hs 385;" f
cornerList src/Preload/Render.hs 244;" f cornerList src/Preload/Render.hs 246;" f
corpseOrGib src/Dodge/Creature/Update.hs 111;" f corpseOrGib src/Dodge/Creature/Update.hs 111;" f
corridor src/Dodge/Room/Corridor.hs 17;" f corridor src/Dodge/Room/Corridor.hs 17;" f
corridorBoss src/Dodge/LockAndKey.hs 133;" f corridorBoss src/Dodge/LockAndKey.hs 133;" f
@@ -3554,7 +3556,7 @@ getCrMoveSpeed src/Dodge/Creature/Statistics.hs 50;" f
getCrsFromRooms src/Dodge/Room/Tutorial.hs 357;" f getCrsFromRooms src/Dodge/Room/Tutorial.hs 357;" f
getCrsFromRooms' src/Dodge/Room/Tutorial.hs 344;" f getCrsFromRooms' src/Dodge/Room/Tutorial.hs 344;" f
getDebugMouseOver src/Dodge/Update.hs 374;" f getDebugMouseOver src/Dodge/Update.hs 374;" f
getDistortions src/Dodge/Render.hs 477;" f getDistortions src/Dodge/Render.hs 487;" f
getEdgesCrossing src/Dodge/Path.hs 37;" f getEdgesCrossing src/Dodge/Path.hs 37;" f
getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f
getInventoryPath src/Dodge/Inventory/Path.hs 9;" f getInventoryPath src/Dodge/Inventory/Path.hs 9;" f
@@ -3595,7 +3597,7 @@ glassShat4S src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 612;" f
glassSwitchBack src/Dodge/Room/Room.hs 72;" f glassSwitchBack src/Dodge/Room/Room.hs 72;" f
glassSwitchBackCrits src/Dodge/Room/Room.hs 106;" f glassSwitchBackCrits src/Dodge/Room/Room.hs 106;" f
glauncherPic src/Dodge/Item/Draw/SPic.hs 400;" f glauncherPic src/Dodge/Item/Draw/SPic.hs 400;" f
glushortSize src/Shader/Parameters.hs 25;" f gluintSize src/Shader/Parameters.hs 25;" f
goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f goToPostStrat src/Dodge/Creature/Strategy.hs 10;" f
goToTarget src/Dodge/Creature/ReaderUpdate.hs 150;" f goToTarget src/Dodge/Creature/ReaderUpdate.hs 150;" f
grahamEliminate src/Geometry/Polygon.hs 163;" f grahamEliminate src/Geometry/Polygon.hs 163;" f
@@ -3705,7 +3707,7 @@ initWallZoning src/Dodge/Wall/Zone.hs 12;" f
initialRoomTree src/Dodge/Floor.hs 24;" f initialRoomTree src/Dodge/Floor.hs 24;" f
initialWorld src/Dodge/Initialisation.hs 15;" f initialWorld src/Dodge/Initialisation.hs 15;" f
initialisePlaying src/Sound.hs 77;" f initialisePlaying src/Sound.hs 77;" f
initializeGLState src/Preload/Render.hs 262;" f initializeGLState src/Preload/Render.hs 264;" f
initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f
initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f
initializeTexture2D src/Framebuffer/Update.hs 205;" f initializeTexture2D src/Framebuffer/Update.hs 205;" f
@@ -4236,7 +4238,7 @@ notLink src/Dodge/Data/Room.hs 72;" f
nulgate src/Dodge/Item/Scope.hs 95;" f nulgate src/Dodge/Item/Scope.hs 95;" f
numColor src/Color.hs 128;" f numColor src/Color.hs 128;" f
numDrawableVertices src/Shader/Parameters.hs 34;" f numDrawableVertices src/Shader/Parameters.hs 34;" f
numGLushort src/Shader/Parameters.hs 29;" f numGLuint src/Shader/Parameters.hs 29;" f
numLayers src/Picture/Data.hs 29;" f numLayers src/Picture/Data.hs 29;" f
numMetaTree src/Dodge/Tree/Compose.hs 119;" f numMetaTree src/Dodge/Tree/Compose.hs 119;" f
numMetaTree' src/Dodge/Tree/Compose.hs 122;" f numMetaTree' src/Dodge/Tree/Compose.hs 122;" f
@@ -4330,7 +4332,7 @@ pincerP src/Dodge/Creature/Boid.hs 63;" f
pincerP' src/Dodge/Creature/Boid.hs 96;" f pincerP' src/Dodge/Creature/Boid.hs 96;" f
pincerP'' src/Dodge/Creature/Boid.hs 106;" f pincerP'' src/Dodge/Creature/Boid.hs 106;" f
pincerP''' src/Dodge/Creature/Boid.hs 77;" f pincerP''' src/Dodge/Creature/Boid.hs 77;" f
pingPongBetween src/Render.hs 228;" f pingPongBetween src/Render.hs 237;" f
pipe src/Dodge/Item/Craftable.hs 32;" f pipe src/Dodge/Item/Craftable.hs 32;" f
pistol src/Dodge/Item/Held/Stick.hs 40;" f pistol src/Dodge/Item/Held/Stick.hs 40;" f
pistolerRoom src/Dodge/Room/Room.hs 330;" f pistolerRoom src/Dodge/Room/Room.hs 330;" f
@@ -4608,7 +4610,7 @@ renderDataResizeUpdate src/Preload/Update.hs 26;" f
renderFlatLighting src/Render.hs 107;" f renderFlatLighting src/Render.hs 107;" f
renderInfoListAt src/Dodge/Render/InfoBox.hs 17;" f renderInfoListAt src/Dodge/Render/InfoBox.hs 17;" f
renderInfoListsAt src/Dodge/Render/InfoBox.hs 44;" f renderInfoListsAt src/Dodge/Render/InfoBox.hs 44;" f
renderLayer src/Render.hs 241;" f renderLayer src/Render.hs 250;" f
renderLightingNoShadows src/Render.hs 48;" f renderLightingNoShadows src/Render.hs 48;" f
renderListAt src/Dodge/Render/List.hs 192;" f renderListAt src/Dodge/Render/List.hs 192;" f
renderShadows src/Render.hs 122;" f renderShadows src/Render.hs 122;" f
@@ -4820,7 +4822,7 @@ setTiles src/Dodge/Layout.hs 67;" f
setTreeInts src/Dodge/Room/Tutorial.hs 98;" f setTreeInts src/Dodge/Room/Tutorial.hs 98;" f
setViewDistance src/Dodge/Update/Camera.hs 239;" f setViewDistance src/Dodge/Update/Camera.hs 239;" f
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
setViewport src/Dodge/Render.hs 482;" f setViewport src/Dodge/Render.hs 492;" f
setVol src/Dodge/Config.hs 47;" f setVol src/Dodge/Config.hs 47;" f
setWristShieldPos src/Dodge/Equipment.hs 49;" f setWristShieldPos src/Dodge/Equipment.hs 49;" f
setWristShieldPos src/Dodge/Euse.hs 38;" f setWristShieldPos src/Dodge/Euse.hs 38;" f
@@ -4845,8 +4847,8 @@ shadVBOptr src/Shader.hs 40;" f
shaderTypeExt src/Shader/Compile.hs 176;" f shaderTypeExt src/Shader/Compile.hs 176;" f
shapeBounds src/Dodge/Room/Foreground.hs 147;" f shapeBounds src/Dodge/Room/Foreground.hs 147;" f
shapePoints src/Dodge/Room/Foreground.hs 144;" f shapePoints src/Dodge/Room/Foreground.hs 144;" f
shapeVerxAttributes src/Shape/Parameters.hs 13;" f shapeVerxAttributes src/Shape/Parameters.hs 14;" f
shapeVerxSize src/Shape/Parameters.hs 10;" f shapeVerxSize src/Shape/Parameters.hs 11;" f
shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f shatterGun src/Dodge/Item/Held/Weapons.hs 8;" f
shatterGunSPic src/Dodge/Item/Draw/SPic.hs 312;" f shatterGunSPic src/Dodge/Item/Draw/SPic.hs 312;" f
shellExplosionCheck src/Dodge/Projectile/Update.hs 50;" f shellExplosionCheck src/Dodge/Projectile/Update.hs 50;" f