Pack shape normals into a word8

This commit is contained in:
2025-11-11 21:03:02 +00:00
parent 7f6e7d2741
commit ce438b7ecd
9 changed files with 109 additions and 113 deletions
+2 -1
View File
@@ -9,5 +9,6 @@ void main()
{
fCol = vCol;
fPos = vPos;
fNorm = vec4(vNorm.xyz - vPos.xyz,1);
//fNorm = vec4(vNorm.xyz - vPos.xyz,1);
fNorm = vNorm ;
}
+5 -2
View File
@@ -1,5 +1,7 @@
#version 450 core
struct PosColNorm { vec4 pos; uint col; vec4 norm; };
//struct PosColNorm { vec4 pos; vec4 norm;uint col; uint dummy; };
struct PosColNorm { vec4 pos; uint norm;uint d1;uint d2; uint d3;uint col; uint dummy; };
// I don't know if the dummy is necessary
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
layout (std430, binding = 3) readonly buffer Data { PosColNorm data[]; };
layout (std430, binding = 4) readonly buffer Indices { uint indices[]; };
@@ -9,7 +11,8 @@ out vec4 vNorm;
void main() {
vPos = data[indices[gl_VertexID]].pos;
vCol = unpackUnorm4x8(data[indices[gl_VertexID]].col);
vNorm = data[indices[gl_VertexID]].norm;
vec4 n = unpackUnorm4x8(data[indices[gl_VertexID]].norm);
vNorm = n *2 - vec4(1,1,1,1);
gl_Position = theMat * vec4(vPos.xyz,1);
}
//layout (location = 0) in vec4 pos;
+2 -2
View File
@@ -44,8 +44,8 @@ data RenderData = RenderData
, _matUBO :: GLuint -- BufferObject id
-- , _winSSBO :: GLuint
-- , _wallSSBO :: GLuint
, _shapeSSBO :: GLuint
, _ishapeSSBO :: GLuint
-- , _shapeSSBO :: GLuint
-- , _ishapeSSBO :: GLuint
, _vboShapes :: VBO
, _floorVBO :: VBO
, _floorShader :: Shader
+4 -9
View File
@@ -4,6 +4,7 @@ module Dodge.Render (
getWindowSize,
) where
import Shape.Parameters
import Control.Lens
import Control.Monad
import qualified Control.Monad.Parallel as MP
@@ -114,10 +115,10 @@ doDrawing' win pdata u = do
glNamedBufferSubData (pdata ^. wallVBO . vboName) 0
(fromIntegral $ trueNWalls * sizeOf (0::Float) * 8)
(pdata ^. wallVBO . vboPtr)
glNamedBufferSubData (pdata ^. shapeSSBO) 0
(fromIntegral $ nShapeVs * (sizeOf (0::Float)*12))
glNamedBufferSubData (pdata ^. vboShapes . vboName) 0
(fromIntegral $ nShapeVs * shapeVerxSize)
(pdata ^. vboShapes . vboPtr)
glNamedBufferSubData (pdata ^. ishapeSSBO) 0
glNamedBufferSubData (pdata ^. shapeEBO . uiboName) 0
(fromIntegral $ nIndices * (sizeOf (0::GLuint)))
(pdata ^. shapeEBO . uiboPtr)
bufferEBO (pdata ^. silhouetteEBO) nSilIndices
@@ -176,13 +177,7 @@ doDrawing' win pdata u = do
--draw object shapes onto base buffer
let fs = _shapeShader pdata
glUseProgram (_shaderUINT fs)
-- glBindVertexArray $ fs ^. shaderVAO . vaoName
glDrawArrays GL_TRIANGLES 0 (fromIntegral nIndices)
-- glDrawElements
-- (_unPrimitiveMode $ _shaderPrimitive fs)
-- (fromIntegral nIndices)
-- GL_UNSIGNED_INT
-- nullPtr
-- draw chasm shader blocking floor
glUseProgram (pdata ^. chasmShader . shaderUINT)
glBindVertexArray $ pdata ^. chasmShader . shaderVAO . vaoName
+2 -2
View File
@@ -4,12 +4,12 @@ module Preload (
import qualified Data.IntMap.Strict as IM
import Data.Preload
import Preload.Render
--import Preload.Render
import qualified SDL.Mixer as Mix
cleanUpPreload :: PreloadData -> IO ()
cleanUpPreload pd = do
cleanUpRenderPreload $ _renderData pd
-- cleanUpRenderPreload $ _renderData pd
cleanUpSoundPreload $ _soundData pd
cleanUpSoundPreload :: IM.IntMap Mix.Chunk -> IO ()
+16 -12
View File
@@ -2,11 +2,12 @@
--{-# OPTIONS_GHC -Wno-unused-top-binds #-}
module Preload.Render (
preloadRender,
cleanUpRenderPreload,
-- cleanUpRenderPreload,
) where
import Shape.Parameters
import Control.Concurrent
import Control.Lens
--import Control.Lens
import Control.Monad
import Data.Preload.Render
import qualified Data.Vector.Mutable as MV
@@ -18,7 +19,7 @@ import Shader.AuxAddition
import Shader.Compile
import Shader.Data
import Shader.Parameters
import Shape.Parameters
--import Shape.Parameters
{- BINDING LIST:
0 base
@@ -35,7 +36,6 @@ preloadRender = do
-- set up uniform buffer object
putStrLn "Setup UBO"
theUBO <- mglCreate glCreateBuffers
--glNamedBufferData theUBO 64 nullPtr GL_STREAM_DRAW
glNamedBufferStorage theUBO 64 nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_UNIFORM_BUFFER 0 theUBO
@@ -55,14 +55,18 @@ preloadRender = do
let wallvbo = VBO wallssbo wallssboptr 8
shapessbo <- mglCreate glCreateBuffers
let shapessbosize = fromIntegral (sizeOf (0::Float) * 12) * 65536
let shapessbosize = fromIntegral shapeVerxSize * 65536
glNamedBufferStorage shapessbo shapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_SHADER_STORAGE_BUFFER 3 shapessbo
shptr <- mallocArray (fromIntegral shapessbosize)
let shVBO = VBO shapessbo shptr shapeVerxSize
ishapessbo <- mglCreate glCreateBuffers
let ishapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536)
glNamedBufferStorage ishapessbo ishapessbosize nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_SHADER_STORAGE_BUFFER 4 ishapessbo
ishptr <- mallocArray 65536
let shEBO = UintBO ishapessbo ishptr
ieshapessbo <- mglCreate glCreateBuffers
let ieshapessbosize = fromIntegral (sizeOf (0::GLuint) * 65536)
@@ -77,9 +81,9 @@ preloadRender = do
wallpull <- makeShaderUsingVAO "pull/wall" [vert,frag] pmTriangles (VAO dummyvao)
putStrLn "Setup shape VBO, VAO, EBO"
shVBO <- setupVBO shapeVerxSize
shPosVAO <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO
shEBO <- setupEBO shPosVAO
-- shVBO <- setupVBO shapeVerxSize
-- shPosVAO <- setupVAOUsingVBO [VertexAttribute 4 GL_FLOAT GL_FALSE 0] shVBO
-- shEBO <- setupEBO shPosVAO
-- note the shape shader vao is distinct from the position vao, but they
-- share an EBO
-- shapeshader <- makeShaderUsingVBO "shape/basic" [vert, frag] shapeVerxAttributes
@@ -221,8 +225,8 @@ preloadRender = do
, _matUBO = theUBO
-- , _winSSBO = winssbo
-- , _wallSSBO = wallssbo
, _shapeSSBO = shapessbo
, _ishapeSSBO = ishapessbo
-- , _shapeSSBO = shapessbo
-- , _ishapeSSBO = ishapessbo
-- , _ieshapeSSBO = ieshapessbo
-- , _lightsUBO = lightsubo
-- , _vboWindows = winvbo
@@ -265,8 +269,8 @@ initializeGLState = do
glEnable GL_DEPTH_TEST
glEnable GL_STENCIL_TEST
cleanUpRenderPreload :: RenderData -> IO ()
cleanUpRenderPreload _ = return ()
--cleanUpRenderPreload :: RenderData -> IO ()
--cleanUpRenderPreload _ = return ()
--cleanUpRenderPreload pd = do
-- TODO fix this
+17 -18
View File
@@ -8,6 +8,8 @@ module Shader.Poke (
pokeFloors,
) where
import Control.Lens
import Linear
import Shape.Parameters
import Color
import Control.Monad.Primitive
@@ -22,7 +24,6 @@ import Geometry.Data
import Geometry.Triangulate
import Geometry.Vector
import Graphics.GL.Core45
import Linear.V3 (cross)
import Picture.Data
import Shader.Data
import Shader.Parameters
@@ -263,7 +264,7 @@ pokeBoxSurface :: Float -> Point4 -> Ptr Float -> UV.Vector Point3 -> Int -> [In
{-# INLINE pokeBoxSurface #-}
pokeBoxSurface xdata col ptr vs n is =
UV.foldM'
(pokeFlatV xdata norm col ptr)
(pokeFlatV xdata pnorm col ptr)
n
v
where
@@ -271,7 +272,7 @@ pokeBoxSurface xdata col ptr vs n is =
x = v UV.! 0
y = v UV.! 1
z = v UV.! 2
norm = negate $ cross (x - y) (z - y)
pnorm = negate $ cross (x - y) (z - y)
-- should probably memoize this
boxSurfaces :: Int -> [[Int]]
@@ -434,23 +435,16 @@ topPrismIndices n =
]
-- consider changing the position to a vec4
pokeJustV ::
Float ->
Point3 ->
Point4 ->
Ptr Float ->
Int ->
Point3 ->
IO Int
pokeJustV :: Float -> Point3 -> Point4 -> Ptr Float -> Int -> Point3 -> IO Int
{-# INLINE 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 + 8 * floatSize) (V4 nx ny nz 1)
pokeByteOff ptr (nv *shapeVerxSize + 4 * floatSize) (normalToColor8 $ V4 nx ny nz 1)
pokeByteOff ptr (nv *shapeVerxSize + 8 * floatSize) (toColor8 col)
return (nv + 1)
where
V3 x y z = sh
V3 nx ny nz = cp
V3 nx ny nz = cp - sh
pokeFlatV ::
Float ->
@@ -461,14 +455,19 @@ pokeFlatV ::
Point3 ->
IO Int
{-# INLINE pokeFlatV #-}
pokeFlatV xdata norm col ptr nv sh = do
pokeFlatV xdata pnorm 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 + 8 * floatSize) (V4 nx ny nz 1)
pokeByteOff ptr (nv *shapeVerxSize + 4 * floatSize) (normalToColor8 $ V4 nx ny nz 1)
pokeByteOff ptr (nv *shapeVerxSize + 8 * floatSize) (toColor8 col)
return (nv + 1)
where
V3 x y z = sh
V3 nx ny nz = sh - norm
V3 nx ny nz = (sh - pnorm) - V3 x y z
normalToColor8 :: Point4 -> Color8
normalToColor8 = over each f . normalize
where
f x = floor $ (x + 1) * 127.5
pokeLayVerxs ::
MV.MVector (PrimState IO) (Shader, VBO) ->
+9 -13
View File
@@ -1,20 +1,16 @@
module Shape.Parameters
(shapeVerxSize,shapeVerxAttributes)
where
module Shape.Parameters (shapeVerxSize) where
-- ,shapeVerxAttributes) where
import Shader.Parameters
import Shader.Data
--import Data.Word
import Foreign.Storable
import Graphics.GL.Core45
shapeVerxSize :: Int
{-# INLINE shapeVerxSize #-}
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 (8 :: Int) * fromIntegral (floatSize))
]
--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 (8 :: Int) * fromIntegral (floatSize))
-- ]
+52 -54
View File
@@ -356,7 +356,6 @@ 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 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
@@ -990,7 +989,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 105;" t
PrimitiveMode src/Shader/Data.hs 110;" 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
@@ -1118,6 +1117,7 @@ SPEEDLEGS src/Dodge/Data/Item/Combine.hs 129;" C
SPRING src/Dodge/Data/Item/Combine.hs 53;" C
SPic src/ShapePicture/Data.hs 7;" t
SQUARE src/Dodge/Data/GenParams.hs 18;" C
SSBO src/Shader/Data.hs 99;" t
SString src/ShortShow.hs 16;" C
ST src/Dodge/Data/MetaTree.hs 20;" C
STEELDRUM src/Dodge/Data/Item/Combine.hs 58;" C
@@ -1151,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 100;" t
ShaderTexture src/Shader/Data.hs 105;" t
ShadowFidelity src/Shape/Data.hs 19;" t
ShadowRendering src/Dodge/Data/Config.hs 103;" t
Shape src/Shape/Data.hs 48;" t
@@ -1349,6 +1349,7 @@ TwoHandUnder src/Dodge/Data/AimStance.hs 11;" C
Typical src/Shape/Data.hs 31;" C
UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 97;" C
UNIGATE src/Dodge/Data/Item/Combine.hs 30;" C
UintBO src/Shader/Data.hs 94;" t
UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 16;" C
UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 15;" C
UnderGround src/Dodge/Data/Scenario.hs 78;" C
@@ -1592,8 +1593,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 56;" f
_chasmVBO src/Data/Preload/Render.hs 55;" 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
@@ -1622,9 +1623,9 @@ _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 61;" f
_cloudShader src/Data/Preload/Render.hs 60;" f
_cloudVBO src/Data/Preload/Render.hs 59;" 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 26;" f
_coolEnd src/Dodge/Data/TriggerType.hs 17;" f
@@ -1754,15 +1755,13 @@ _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 63;" 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 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
@@ -1786,8 +1785,8 @@ _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 54;" f
_floorVBO src/Data/Preload/Render.hs 53;" 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
@@ -1847,7 +1846,6 @@ _ibtHeld src/Dodge/Data/Item/Combine.hs 16;" f
_ibtIntroScanType src/Dodge/Data/Item/Combine.hs 32;" f
_ibtPathing src/Dodge/Data/Item/Combine.hs 28;" f
_ibtTargeting src/Dodge/Data/Item/Combine.hs 21;" f
_ieshapeSSBO src/Data/Preload/Render.hs 49;" f
_ilCrID src/Dodge/Data/Item/Location.hs 30;" f
_ilEquipSite src/Dodge/Data/Item/Location.hs 35;" f
_ilInvID src/Dodge/Data/Item/Location.hs 31;" f
@@ -2195,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 62;" 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
@@ -2272,6 +2270,8 @@ _ssItems src/Dodge/Data/SelectionList.hs 30;" f
_ssOffset src/Dodge/Data/SelectionList.hs 31;" f
_ssShownItems src/Dodge/Data/SelectionList.hs 32;" f
_ssShownLength src/Dodge/Data/SelectionList.hs 33;" f
_ssboName src/Shader/Data.hs 100;" f
_ssboPtr src/Shader/Data.hs 101;" f
_strideAmount src/Dodge/Data/Creature/Stance.hs 23;" f
_strideLength src/Dodge/Data/Creature/Stance.hs 18;" f
_stuckCrID src/Dodge/Data/Projectile.hs 48;" f
@@ -2305,7 +2305,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 101;" f
_textureObject src/Shader/Data.hs 106;" f
_tiText src/Dodge/Data/Terminal/Status.hs 14;" f
_tileArrayZ src/Data/Tile.hs 24;" f
_tilePoly src/Data/Tile.hs 17;" f
@@ -2355,13 +2355,15 @@ _uScope src/Dodge/Data/Item/Use.hs 34;" f
_uValue src/Dodge/Data/Item/Use.hs 33;" f
_uaParams src/Dodge/Data/Item/Use.hs 30;" f
_ubMod src/Dodge/Data/Item/Use.hs 35;" f
_uiboName src/Shader/Data.hs 95;" f
_uiboPtr src/Shader/Data.hs 96;" f
_unCombEdge src/Dodge/Combine/Graph.hs 30;" f
_unCombNode src/Dodge/Combine/Graph.hs 23;" f
_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 105;" f
_unPrimitiveMode src/Shader/Data.hs 110;" f
_unPutCrit src/Dodge/Data/GenWorld.hs 32;" f
_unST src/Dodge/Data/MetaTree.hs 20;" f
_unTO src/Shader/Data.hs 59;" f
@@ -2401,9 +2403,8 @@ _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 52;" f
_vboShapes src/Data/Preload/Render.hs 49;" f
_vboVertexBytes src/Shader/Data.hs 82;" f
_vboWindows src/Data/Preload/Render.hs 51;" 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
@@ -2425,15 +2426,13 @@ _wTime src/Dodge/Data/Item/Params.hs 20;" f
_waitThenAction src/Dodge/Data/ActionPlan.hs 76;" f
_waitThenTimer src/Dodge/Data/ActionPlan.hs 75;" f
_wallDamages src/Dodge/Data/LWorld.hs 119;" f
_wallSSBO src/Data/Preload/Render.hs 46;" f
_wallShader src/Data/Preload/Render.hs 58;" f
_wallVBO src/Data/Preload/Render.hs 57;" f
_wallVBO src/Data/Preload/Render.hs 55;" 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 45;" f
_winVBO src/Data/Preload/Render.hs 54;" 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
@@ -2592,7 +2591,7 @@ 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 75;" f
attribSize src/Shader/Compile.hs 312;" f
attribSize src/Shader/Compile.hs 310;" 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
@@ -2702,9 +2701,9 @@ 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 496;" f
bufferPerspectiveMatrixUBO src/Dodge/Render.hs 471;" f
bufferPokedVBO src/Shader/Bind.hs 19;" f
bufferShaderLayers src/Shader/Bind.hs 36;" f
bufferShaderLayers src/Shader/Bind.hs 32;" f
bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f
bulletBeltPack src/Dodge/Item/Equipment.hs 61;" f
bulletModule src/Dodge/Item/Scope.hs 117;" f
@@ -2758,7 +2757,7 @@ 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 261;" f
checkErrorGL src/Shader/Compile.hs 259;" f
checkFBO src/Framebuffer/Check.hs 6;" f
checkGLError src/GLHelp.hs 14;" f
checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f
@@ -2795,7 +2794,6 @@ 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 276;" f
cleanUpSoundPreload src/Preload.hs 15;" f
cleanupHalted src/Sound.hs 117;" f
cleatLabel src/Dodge/Cleat.hs 30;" f
@@ -2860,7 +2858,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 283;" f
compileAndCheckShader src/Shader/Compile.hs 281;" 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
@@ -2881,7 +2879,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 253;" f
cornerList src/Preload/Render.hs 245;" f
corpseOrGib src/Dodge/Creature/Update.hs 111;" f
corridor src/Dodge/Room/Corridor.hs 17;" f
corridorBoss src/Dodge/LockAndKey.hs 133;" f
@@ -3508,7 +3506,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 108;" f
frag src/Shader/Data.hs 113;" f
freeShaderPointers' src/Shader.hs 37;" f
fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f
fromJust' src/MaybeHelp.hs 22;" f
@@ -3538,7 +3536,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 108;" f
geom src/Shader/Data.hs 113;" f
geometryQuickCheckTests test/Spec.hs 55;" f
geometryTests test/Spec.hs 17;" f
geometryUnitTests test/Spec.hs 22;" f
@@ -3557,7 +3555,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 502;" 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
@@ -3708,7 +3706,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 271;" f
initializeGLState src/Preload/Render.hs 263;" f
initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f
initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f
initializeTexture2D src/Framebuffer/Update.hs 205;" f
@@ -4053,7 +4051,7 @@ 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 247;" f
makeShaderProgram src/Shader/Compile.hs 245;" f
makeShaderUsingVAO src/Shader/Compile.hs 150;" f
makeShaderUsingVBO src/Shader/Compile.hs 69;" f
makeShaderVBO src/Shader/Compile.hs 32;" f
@@ -4362,16 +4360,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 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
pmLineLoop src/Shader/Data.hs 118;" f
pmLineStrip src/Shader/Data.hs 118;" f
pmLines src/Shader/Data.hs 118;" f
pmLinesAdjacency src/Shader/Data.hs 118;" f
pmPatches src/Shader/Data.hs 118;" f
pmPoints src/Shader/Data.hs 118;" f
pmQuads src/Shader/Data.hs 118;" f
pmTriangleFan src/Shader/Data.hs 118;" f
pmTriangleStrip src/Shader/Data.hs 118;" f
pmTriangles src/Shader/Data.hs 118;" f
pnZoneSize src/Dodge/Zoning/Pathing.hs 26;" f
pointIfNotClose src/Dodge/LevelGen/StaticWalls/Deprecated.hs 68;" f
pointInCircle src/Geometry.hs 209;" f
@@ -4814,7 +4812,7 @@ 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 296;" f
setShaderSource src/Shader/Compile.hs 294;" f
setShadowLimits src/Dodge/Shadows.hs 11;" f
setSoundVolume src/Sound.hs 157;" f
setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f
@@ -4823,7 +4821,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 507;" 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
@@ -4839,9 +4837,9 @@ 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 118;" f
setupVBOVAO src/Shader/Compile.hs 206;" f
setupVertexAttribPointer src/Shader/Compile.hs 230;" f
setupVertexAttribs src/Shader/Compile.hs 224;" f
setupVBOVAO src/Shader/Compile.hs 204;" f
setupVertexAttribPointer src/Shader/Compile.hs 228;" f
setupVertexAttribs src/Shader/Compile.hs 222;" f
setupWorldBounds src/Dodge/Layout.hs 116;" f
sfInvColor src/Dodge/Item/InventoryColor.hs 12;" f
shadVBOptr src/Shader.hs 40;" f
@@ -5157,7 +5155,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 217;" f
toFloatVAs src/Shader/Compile.hs 215;" f
toLabel src/Dodge/Cleat.hs 16;" f
toMultiset src/Multiset.hs 64;" f
toOnward src/Dodge/Tree/Compose.hs 101;" f
@@ -5455,10 +5453,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 303;" f
vasTightStride src/Shader/Compile.hs 301;" f
vecBetweenSpeed src/Dodge/Base.hs 146;" f
vecTurnTo src/Dodge/Movement/Turn.hs 19;" f
vert src/Shader/Data.hs 108;" f
vert src/Shader/Data.hs 113;" f
vertScale src/MatrixHelper.hs 95;" f
vertTrans src/MatrixHelper.hs 103;" f
verticalPipe src/Dodge/Picture.hs 19;" f
@@ -5523,7 +5521,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 330;" f
withByteString src/Shader/Compile.hs 328;" 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