Cleanup shadows

This commit is contained in:
2025-11-12 22:54:43 +00:00
parent cdf998a1e2
commit 5e9d337288
11 changed files with 118 additions and 428 deletions
-38
View File
@@ -1,38 +0,0 @@
#version 450 core
layout (triangles) in;
layout (triangle_strip, max_vertices = 3) out;
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
layout(location=0)uniform vec3 lightPos;
in float drawbit[];
// the following code is duplicated in lineShadow.geom, should not be changed on its own
vec4 projNear (vec4 pos)
{
// 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) ;
}
void main()
{
vec4 p0 = gl_in[0].gl_Position ;
vec4 p1 = gl_in[1].gl_Position ;
vec4 p2 = gl_in[2].gl_Position ;
if ( //if Light Source is below all vertices, draw cap
// TODO think about when LS is beside the object
(drawbit[0] == 1)
&& ( p0.z - lightPos.z > 0 )
&& ( p1.z - lightPos.z > 0 )
&& ( p2.z - lightPos.z > 0 )
)
{
// the front cap
vec4 v1 = vec4 (0,0,1,0) ;
gl_Position = theMat * projNear(p0); EmitVertex();
gl_Position = theMat * projNear(p2); EmitVertex();
gl_Position = theMat * projNear(p1); EmitVertex();
EndPrimitive();
}
else {}
}
-57
View File
@@ -1,57 +0,0 @@
#version 450 core
// an attempt to test whether a geometry surface occludes the camera from a
// light source
layout (triangles) in;
layout (triangle_strip, max_vertices = 4) out;
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
uniform vec3 lightPos;
uniform vec2 camPos;
void main()
{
vec3 p0 = gl_in[0].gl_Position.xyz ;
vec3 p1 = gl_in[1].gl_Position.xyz ;
vec3 p2 = gl_in[2].gl_Position.xyz ;
// first determine intersection point (if any)
vec3 u = p1 - p0 ;
vec3 v = p2 - p0 ;
vec3 n = cross (u,v) ;
vec3 dir = vec3 (camPos, 100) - lightPos ;
vec3 w0 = p0 - lightPos ;
float a = dot(n, w0) ;
float b = dot(n,dir) ;
if (abs(b) < 0.00001) {}
else {
float r = a / b ;
if (r < 0.0) {}
else {
vec3 ip = lightPos + r * dir ;
float uu, uv, vv, wu, wv, D;
uu = dot(u,u);
uv = dot(u,v);
vv = dot(v,v);
vec3 w = ip - p0;
wu = dot (w,u);
wv = dot (w,v);
D = uv * uv - uu * vv;
//get and test parametric coords
float s, t;
s = (uv * wv - vv * wu) / D;
if (s < 0.0 || s > 1.0) {}
else
{
t = (uv * wu - uu * wv) / D;
if (t < 0.0 || (s + t) > 1.0) {}
else
{
gl_Position = vec4(-1,-1,50,1); EmitVertex();
gl_Position = vec4(-1, 1,50,1); EmitVertex();
gl_Position = vec4( 1,-1,50,1); EmitVertex();
gl_Position = vec4( 1, 1,50,1); EmitVertex();
EndPrimitive();
}
}
}
}
}
-27
View File
@@ -1,27 +0,0 @@
#version 450 core
layout (points) in;
layout (triangle_strip, max_vertices = 4) out;
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
out float lum;
out vec2 dField;
void main()
{
lum = gl_in[0].gl_Position.w;
vec4 cenPos = vec4( gl_in[0].gl_Position.xy, 0.1 , 1);
float gRad = gl_in[0].gl_Position.z;
dField = vec2 ( 1, 1);
gl_Position = theMat * vec4 (cenPos.x + gRad, cenPos.y + gRad, 0.1 , 1);
EmitVertex();
dField = vec2 (-1, 1);
gl_Position = theMat * vec4 (cenPos.x - gRad, cenPos.y + gRad, 0.1 , 1);
EmitVertex();
dField = vec2 ( 1,-1);
gl_Position = theMat * vec4 (cenPos.x + gRad, cenPos.y - gRad, 0.1 , 1);
EmitVertex();
dField = vec2 (-1,-1);
gl_Position = theMat * vec4 (cenPos.x - gRad, cenPos.y - gRad, 0.1 , 1);
EmitVertex();
EndPrimitive();
}
-80
View File
@@ -1,80 +0,0 @@
#version 450 core
layout(lines_adjacency) in;
layout(triangle_strip, max_vertices = 4) out;
layout(std140, binding = 0) uniform TheMat { mat4 theMat; };
layout(location=0) uniform vec3 lightPos;
layout(location=1) uniform float radiusUniform;
float closestPointOnLineParam3 (vec3 a, vec3 b, vec3 p) {
return dot(p - a,b-a) / dot(b-a,b-a);
}
vec3 closestPointOnSeg3 (vec3 a,vec3 b, vec3 p) {
float x = closestPointOnLineParam3(a,b,p);
if (x < 0) {
return a;
} else{ if (x > 1) { return b; }
{ return a + (x * (b- a));}
}
}
vec4 shift(vec4 p) { return (vec4(p.xyz + (10000 * (p.xyz - lightPos)), 1)); }
vec4 shiftBy(float x, vec4 p) {
return (vec4(lightPos + (x * normalize(p.xyz - lightPos)), 1));
}
// copied from lighting/cap.geom, should not be changed on its own
vec4 projNear(vec4 pos) {
// 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 shiftNear(vec4 pos)
{
vec4 sp = shift(pos);
if (sp.z > 100) {
return projNear(pos);
} else {
return sp;
}
}
void main() {
vec4 p0 = gl_in[0].gl_Position;
vec4 p1 = gl_in[1].gl_Position;
vec3 closepoint = closestPointOnSeg3(p0.xyz,p1.xyz,lightPos);
float ru2 = radiusUniform * radiusUniform;
vec4 mid = 0.5 * (p0 + p1);
vec3 n0a = gl_in[2].gl_Position.xyz;
vec3 n1a = gl_in[3].gl_Position.xyz;
vec3 n0 = cross(p1.xyz - p0.xyz, n0a - p0.xyz);
vec3 n1 = cross(p0.xyz - p1.xyz, n1a - p1.xyz);
vec3 lightDir = p0.xyz - lightPos.xyz;
vec3 lightDir2 = p1.xyz - lightPos.xyz;
// first test if the edge is part of the silhouette
// that is, if the normals of the faces connected by the edge point are in
// "different directions" wrt the light direction
if (dot(n0, lightDir) * dot(n1, lightDir) <= 0 &&
(dot(lightDir, lightDir) < ru2 || dot(lightDir2, lightDir2) < ru2))
// using <= rather than < seems to get rid of overlapping shadow
// artefacts
{
vec4 p2 = shiftNear(p0);
vec4 p3 = shiftNear(p1);
gl_Position = theMat * p0;
EmitVertex();
if (dot(n0, lightDir) > 0) {
gl_Position = theMat * p2;
EmitVertex();
gl_Position = theMat * p1;
EmitVertex();
} else {
gl_Position = theMat * p1;
EmitVertex();
gl_Position = theMat * p2;
EmitVertex();
}
gl_Position = theMat * p3;
EmitVertex();
EndPrimitive();
} else {
}
}
+20 -17
View File
@@ -1,28 +1,29 @@
#version 450 core #version 450 core
struct PosColNorm { vec4 pos; vec4 dummy; }; struct PosColNorm { vec4 pos; vec4 dummy; };
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
layout (std140, binding = 1) uniform TheLight { vec4 lightPos; vec4 colrad; };
layout (std430, binding = 3) readonly buffer Data { PosColNorm data[]; }; layout (std430, binding = 3) readonly buffer Data { PosColNorm data[]; };
layout (std430, binding = 5) readonly buffer Indices { uint indices[]; }; layout (std430, binding = 5) readonly buffer Indices { uint indices[]; };
layout(location=0)uniform vec3 lightPos;
layout(location=1)uniform float radiusUniform;
float closestPointOnLineParam3 (vec3 a, vec3 b, vec3 p) { float closestPointOnLineParam3 (vec3 a, vec3 b, vec3 p) {
return dot(p - a,b-a) / dot(b-a,b-a); return dot(p - a,b-a) / dot(b-a,b-a);
} }
vec3 closestPointOnSeg3 (vec3 a,vec3 b, vec3 p) { vec3 closestPointOnSeg3 (vec3 a,vec3 b, vec3 p) {
float x = closestPointOnLineParam3(a,b,p); float x = closestPointOnLineParam3(a,b,p);
if (x < 0) { return (x < 0
return a; ? a
} else{ return (x > 1 ? b: a + (x * (b- a))); } : (x > 1
? b
: a + (x * (b- a)))) ;
} }
vec4 shift(vec4 p) { return (vec4(p.xyz + (10000 * (p.xyz - lightPos)), 1)); } vec4 shift(vec4 p) { return (vec4(p.xyz + (10000 * (p.xyz - lightPos.xyz)), 1)); }
vec4 shiftBy(float x, vec4 p) { vec4 shiftBy(float x, vec4 p) {
return (vec4(lightPos + (x * normalize(p.xyz - lightPos)), 1)); return (vec4(lightPos.xyz + (x * normalize(p.xyz - lightPos.xyz)), 1));
} }
vec4 projNear (vec4 pos) vec4 projNear (vec4 pos)
{ {
// note we project to a specific height // note we project to a specific height
// this is quite brittle, not ideal // this is quite brittle, not ideal
vec3 dir = pos.xyz - lightPos ; vec3 dir = pos.xyz - lightPos.xyz ;
float a = (100 - pos.z) / dir.z ; float a = (100 - pos.z) / dir.z ;
vec2 xy = (pos.xyz + a * dir).xy ; vec2 xy = (pos.xyz + a * dir).xy ;
return vec4 ( xy, 100 , 1) ; return vec4 ( xy, 100 , 1) ;
@@ -32,10 +33,12 @@ vec4 shiftNear(vec4 pos)
vec4 sp = shift(pos); vec4 sp = shift(pos);
return (sp.z > 100 ? projNear(pos) : sp); return (sp.z > 100 ? projNear(pos) : sp);
} }
int ks[6] = // Output 6 vertices for 4 data inputs
{0,1,2 // 2--3 int ks[6] = // Inputdata: n1a Shadow:
,2,1,3 // | | {0,1,2 // 2--3 / p2--p3
}; // 0--1 ,2,1,3 // | | p0---p1 / |
}; // 0--1 / / |
// n0a p0----p1
void main() void main()
{ {
int k = ks[gl_VertexID % 6]; int k = ks[gl_VertexID % 6];
@@ -44,8 +47,8 @@ void main()
vec4 p1 = data[indices[i0+1]].pos; vec4 p1 = data[indices[i0+1]].pos;
vec3 n0a = data[indices[i0+2]].pos.xyz; vec3 n0a = data[indices[i0+2]].pos.xyz;
vec3 n1a = data[indices[i0+3]].pos.xyz; vec3 n1a = data[indices[i0+3]].pos.xyz;
vec3 closepoint = closestPointOnSeg3(p0.xyz,p1.xyz,lightPos); vec3 closepoint = closestPointOnSeg3(p0.xyz,p1.xyz,lightPos.xyz);
float ru2 = radiusUniform * radiusUniform; float ru2 = colrad.w * colrad.w;
vec4 mid = 0.5 * (p0 + p1); vec4 mid = 0.5 * (p0 + p1);
vec3 n0 = cross(p1.xyz - p0.xyz, n0a - p0.xyz); vec3 n0 = cross(p1.xyz - p0.xyz, n0a - p0.xyz);
vec3 n1 = cross(p0.xyz - p1.xyz, n1a - p1.xyz); vec3 n1 = cross(p0.xyz - p1.xyz, n1a - p1.xyz);
@@ -53,15 +56,15 @@ void main()
vec3 lightDir2 = p1.xyz - lightPos.xyz; vec3 lightDir2 = p1.xyz - lightPos.xyz;
vec4 p2 = shiftNear(p0); vec4 p2 = shiftNear(p0);
vec4 p3 = shiftNear(p1); vec4 p3 = shiftNear(p1);
// first test if the edge is part of the silhouette // test if the edge is part of the silhouette
// that is, if the normals of the faces connected by the edge point are in // that is, if the slopes of the faces connected to the edge are in
// "different directions" wrt the light direction // "different directions" wrt the light direction
if (dot(n0, lightDir) * dot(n1, lightDir) <= 0 && if (dot(n0, lightDir) * dot(n1, lightDir) <= 0 &&
(dot(lightDir, lightDir) < ru2 || dot(lightDir2, lightDir2) < ru2)) (dot(lightDir, lightDir) < ru2 || dot(lightDir2, lightDir2) < ru2))
// using <= rather than < seems to get rid of overlapping shadow // using <= rather than < seems to get rid of overlapping shadow
// artefacts // artefacts
{ {
if (dot(n0, lightDir) > 0) if (dot(n0, lightDir) < 0)
{ {
vec4 sp[4] = {p1,p0,p3,p2}; vec4 sp[4] = {p1,p0,p3,p2};
gl_Position = theMat * sp[k];} gl_Position = theMat * sp[k];}
-92
View File
@@ -1,92 +0,0 @@
#version 450 core
layout(points) in;
//layout(triangle_strip, max_vertices = 18) out;
layout(triangle_strip, max_vertices = 9) out;
layout(std140, binding = 0) uniform TheMat { mat4 theMat; };
layout(location=0) uniform vec3 lightPos;
layout(location=1) uniform float rad;
//float rad = rad;
// Preprocessed to include ../functions.glsl
float closestPointOnLineParam (vec2 a, vec2 b, vec2 p) {
return dot(p - a,b-a) / dot(b-a,b-a);
}
vec2 closestPointOnSeg (vec2 a,vec2 b, vec2 p) {
float x = closestPointOnLineParam(a,b,p);
if (x < 0) {
return a;
} else{ if (x > 1) { return b; }
{ return a + (x * (b- a));}
}
}
// End include 2023-03-13 15:33:44.438312149 UTC
vec2 closestPointOnLine (vec2 a,vec2 b, vec2 p) {
float x = closestPointOnLineParam(a,b,p);
return a + (x * (b- a));
}
vec2 invclosestPointOnLine (vec2 a,vec2 b, vec2 p) {
float x = dot (p-a,p-a)/ dot(p-a,b-a);
return a + x*(b- a);
}
vec2 shift(vec2 p) {
return vec2(lightPos.xy + (rad * normalize(p - lightPos.xy)));
}
float detV(vec2 p, vec2 q) {
return p.x*q.y - p.y*q.x;
}
float isLHS(vec2 p, vec2 q) {
return sign(-detV(p,q));
}
// the following does NOT check for division by zero: do not reuse this unless
// you are certain this cannot happen
vec2 intersectLL(vec2 p1,vec2 p2,vec2 q1,vec2 q2){
float den = detV (p1-p2,q1-q2);
float t = detV (p1-q1,q1-q2);
return p1 + (t/den)*(p2-p1);
}
// constructs a "bridge" shape
void main() {
vec2 p1 = gl_in[0].gl_Position.xy;
vec2 p2 = gl_in[0].gl_Position.zw;
vec2 closepoint = closestPointOnSeg(p1,p2,lightPos.xy);
if (isLHS(p1 - lightPos.xy, p2 - lightPos.xy) < 0 && distance(closepoint,lightPos.xy) < rad) {
vec2 xxxy = p1 + (0.25 * (p2 -p1));
vec2 xt = shift(xxxy);
vec2 xo = invclosestPointOnLine(lightPos.xy,p1,xt);
vec2 xyyy = p1 + (0.75 * (p2 -p1));
vec2 yt = shift(xyyy);
vec2 yo = invclosestPointOnLine(lightPos.xy,p2,yt);
vec2 xoo = (distance(xo, lightPos.xy) < distance(p1, lightPos.xy)
|| distance(p1,lightPos.xy)>rad
? p1 : xo);
vec2 yoo = (distance(yo, lightPos.xy) < distance(p2, lightPos.xy)
|| distance(p2,lightPos.xy)>rad
? p2 : yo);
vec2 mo = intersectLL(xoo,xt,yoo,yt);
vec2 closeshift = (rad * normalize(closepoint - lightPos.xy)) + lightPos.xy - closepoint;
vec2 shifto = (rad * normalize(closepoint - lightPos.xy)) + closepoint;
vec2 p1o = vec2( distance(p1,lightPos.xy) > rad ? p1 : shift(p1) );
//vec2 p1o = xoo;
vec2 p2o = vec2( distance(p2,lightPos.xy) > rad ? p2 : shift(p2) );
//vec2 p2o = yoo;
gl_Position = theMat * vec4(p1o,-500,1); EmitVertex();
gl_Position = theMat * vec4(p1,-500,1); EmitVertex();
gl_Position = theMat * vec4(p1o,100,1); EmitVertex();
gl_Position = theMat * vec4(p1,100,1); EmitVertex();
gl_Position = theMat * vec4(shifto,100,1); EmitVertex();
//gl_Position = theMat * vec4(xt,100,1); EmitVertex();
//gl_Position = theMat * vec4(mo,100,1); EmitVertex();
gl_Position = theMat * vec4(p2,100,1); EmitVertex();
gl_Position = theMat * vec4(p2o,100,1); EmitVertex();
gl_Position = theMat * vec4(p2,-500,1); EmitVertex();
gl_Position = theMat * vec4(p2o,-500,1); EmitVertex();
EndPrimitive();
// be carefull with the winding...
EndPrimitive();
} else {
}
}
+8 -8
View File
@@ -1,16 +1,16 @@
#version 450 core #version 450 core
struct PosTex { vec4 pospos; vec4 texang; }; struct PosTex { vec4 pospos; vec4 texang; };
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ; layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
layout (std140, binding = 1) uniform TheLight { vec4 lightPos; vec4 colrad; };
layout (std430, binding = 2) readonly buffer Pos { PosTex data[]; }; layout (std430, binding = 2) readonly buffer Pos { PosTex data[]; };
layout(location=0) uniform vec3 lightPos; float rad = colrad.w;
layout(location=1) uniform float rad;
int indices[18] = int indices[18] =
{5,1,7 // 6----7 {5,7,1 // 6----7
,7,1,3 // /| /| ,7,3,1 // /| /|
,7,3,6 // 2-+--3 | ,7,6,3 // 2-+--3 |
,6,3,2 // | 4 | 5 ,6,2,3 // | 4 | 5
,6,2,4 // 0 1 ,6,4,2 // 0 1
,4,2,0 ,4,0,2
}; };
vec2 shift(vec2 p) { vec2 shift(vec2 p) {
return vec2(lightPos.xy + (rad * normalize(p - lightPos.xy))); return vec2(lightPos.xy + (rad * normalize(p - lightPos.xy)));
+1
View File
@@ -42,6 +42,7 @@ data RenderData = RenderData
, _fboLighting :: (FBO, TO) , _fboLighting :: (FBO, TO)
, _rboBaseBloom :: GLuint -- RenderbufferObject id , _rboBaseBloom :: GLuint -- RenderbufferObject id
, _matUBO :: GLuint -- BufferObject id , _matUBO :: GLuint -- BufferObject id
, _lightUBO :: GLuint -- BufferObject id
-- , _winSSBO :: GLuint -- , _winSSBO :: GLuint
-- , _wallSSBO :: GLuint -- , _wallSSBO :: GLuint
-- , _shapeSSBO :: GLuint -- , _shapeSSBO :: GLuint
+5
View File
@@ -40,6 +40,10 @@ preloadRender = do
glNamedBufferStorage theUBO 64 nullPtr GL_DYNAMIC_STORAGE_BIT glNamedBufferStorage theUBO 64 nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_UNIFORM_BUFFER 0 theUBO glBindBufferBase GL_UNIFORM_BUFFER 0 theUBO
lightubo <- mglCreate glCreateBuffers
glNamedBufferStorage lightubo 32 nullPtr GL_DYNAMIC_STORAGE_BIT
glBindBufferBase GL_UNIFORM_BUFFER 1 lightubo
winssbo <- mglCreate glCreateBuffers winssbo <- mglCreate glCreateBuffers
let winssbosize = sizeOf (0 :: Float) * 8 * 1024 let winssbosize = sizeOf (0 :: Float) * 8 * 1024
glNamedBufferStorage winssbo (fromIntegral winssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT glNamedBufferStorage winssbo (fromIntegral winssbosize) nullPtr GL_DYNAMIC_STORAGE_BIT
@@ -222,6 +226,7 @@ preloadRender = do
, _fboPos = fboPosName , _fboPos = fboPosName
, _rboBaseBloom = rboBaseBloomName , _rboBaseBloom = rboBaseBloomName
, _matUBO = theUBO , _matUBO = theUBO
, _lightUBO = lightubo
, _vboShapes = shVBO , _vboShapes = shVBO
, _floorVBO = floorvbo , _floorVBO = floorvbo
, _floorShader = floorshader , _floorShader = floorshader
+8 -32
View File
@@ -158,7 +158,9 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li
-- 2. calculate lighting based on each fragment's position and normal -- 2. calculate lighting based on each fragment's position and normal
-- TODO stencil out square around light! -- TODO stencil out square around light!
-- glEnable GL_SCISSOR_TEST -- glEnable GL_SCISSOR_TEST
glDisable GL_CULL_FACE
flip VFSM.mapM_ (VFSM.fromList lightPoints) $ \(V3 x y z, rad, V3 r g b) -> do flip VFSM.mapM_ (VFSM.fromList lightPoints) $ \(V3 x y z, rad, V3 r g b) -> do
withArray [x,y,z,1,r,g,b,rad] $ glNamedBufferSubData (pdata ^. lightUBO) 0 32
-- note that the stencil shadows rely on the depth buffer -- note that the stencil shadows rely on the depth buffer
-- glScissor 0 0 200 200 -- glScissor 0 0 200 200
glDepthFunc GL_LESS glDepthFunc GL_LESS
@@ -172,51 +174,25 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li
glDisable GL_CULL_FACE glDisable GL_CULL_FACE
-- the first bit has been used to stencil out "ceilings" under which we never draw -- the first bit has been used to stencil out "ceilings" under which we never draw
glStencilFunc GL_NOTEQUAL 128 255 glStencilFunc GL_NOTEQUAL 128 255
glBindVertexArray $ pdata ^. dummyVAO . vaoName
--draw wall shadows --draw wall shadows
glUseProgram shadwall glUseProgram shadwall
glUniform3f 0 x y z
glUniform1f 1 rad
--glBindVertexArray $ lwallShad ^. shaderVAO . vaoName -- Just (_vao $ _shadVAO lwallShad)
glBindVertexArray $ pdata ^. dummyVAO . vaoName -- Just (_vao $ _shadVAO lwallShad)
glDrawArrays GL_TRIANGLES 0 (nWalls * 18) glDrawArrays GL_TRIANGLES 0 (nWalls * 18)
case shadrendertype of case shadrendertype of
GeoObjShads -> do GeoObjShads -> do
--draw silhouette shadows --draw silhouette shadows
glEnable GL_DEPTH_CLAMP glEnable GL_DEPTH_CLAMP
glUseProgram (_shaderUINT llinesShad) glUseProgram (_shaderUINT llinesShad)
glUniform3f 0 x y z glDrawArrays GL_TRIANGLES 0 ((fromIntegral nSils * 6) `div` 4)
glUniform1f 1 rad
--glBindVertexArray (_vaoName $ _shaderVAO llinesShad)
glBindVertexArray (pdata ^. dummyVAO . vaoName)
glDrawArrays
GL_TRIANGLES
0
((fromIntegral nSils * 6) `div` 4)
--glDrawElements
-- (_unPrimitiveMode $ _shaderPrimitive llinesShad)
-- (fromIntegral nSils)
-- GL_UNSIGNED_INT
-- 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
glCullFace GL_FRONT glCullFace GL_BACK
glUseProgram (_shaderUINT lcapShad) glUseProgram (_shaderUINT lcapShad)
glUniform3f 0 x y z glUniform3f 0 x y z
glUniform4f 1 r g b rad glUniform4f 1 r g b rad
--glBindVertexArray $ lcapShad ^. shaderVAO . vaoName --Just (_vao $ _shadVAO lcapShad) -- glFrontFace(GL_CW)
glBindVertexArray $ pdata ^. dummyVAO . vaoName glDrawArrays GL_TRIANGLES 0 (fromIntegral nCaps)
glFrontFace(GL_CW) -- glFrontFace(GL_CCW)
glDrawArrays
GL_TRIANGLES
0
--3
(fromIntegral nCaps)
glFrontFace(GL_CCW)
--glDrawElements
-- (_unPrimitiveMode $ _shaderPrimitive lcapShad)
-- (fromIntegral nCaps)
-- GL_UNSIGNED_SHORT
-- nullPtr
glDisable GL_DEPTH_CLAMP glDisable GL_DEPTH_CLAMP
_ -> return () _ -> return ()
--draw lightmap itself --draw lightmap itself
+75 -76
View File
@@ -92,7 +92,6 @@ BLINKERUNSAFE src/Dodge/Data/Item/Combine.hs 178;" C
BLOWTORCH src/Dodge/Data/Item/Combine.hs 165;" C BLOWTORCH src/Dodge/Data/Item/Combine.hs 165;" C
BLUE src/Color/Data.hs 14;" C BLUE src/Color/Data.hs 14;" C
BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 148;" C BLUNDERBUSS src/Dodge/Data/Item/Combine.hs 148;" C
BOType src/Shader/Data.hs 86;" t
BQuad src/Geometry/Bezier.hs 9;" t BQuad src/Geometry/Bezier.hs 9;" t
BRAINHAT src/Dodge/Data/Item/Combine.hs 125;" C BRAINHAT src/Dodge/Data/Item/Combine.hs 125;" C
BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 133;" C BULLETBELTBRACER src/Dodge/Data/Item/Combine.hs 133;" C
@@ -435,7 +434,7 @@ FlechetteTrajectoryType src/Dodge/Data/Bullet.hs 50;" C
Flee src/Dodge/Data/ActionPlan.hs 143;" C Flee src/Dodge/Data/ActionPlan.hs 143;" C
Flesh src/Dodge/Data/Material.hs 17;" C Flesh src/Dodge/Data/Material.hs 17;" C
FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 14;" C FloatAbsCheckGreaterLess src/Dodge/Data/FloatFunction.hs 14;" C
FloatBO src/Shader/Data.hs 88;" t FloatBO src/Shader/Data.hs 86;" t
FloatConst src/Dodge/Data/FloatFunction.hs 15;" C FloatConst src/Dodge/Data/FloatFunction.hs 15;" C
FloatDistLinearNearFar src/Dodge/Data/FloatFunction.hs 13;" C FloatDistLinearNearFar src/Dodge/Data/FloatFunction.hs 13;" C
FloatFOV src/Dodge/Data/FloatFunction.hs 11;" C FloatFOV src/Dodge/Data/FloatFunction.hs 11;" C
@@ -989,7 +988,7 @@ PosInf src/Dodge/Data/CardinalPoint.hs 44;" C
PosRooms src/Dodge/Tree/Shift.hs 28;" t PosRooms src/Dodge/Tree/Shift.hs 28;" t
Posture src/Dodge/Data/Creature/Stance.hs 33;" t Posture src/Dodge/Data/Creature/Stance.hs 33;" t
PreloadData src/Data/Preload.hs 10;" t PreloadData src/Data/Preload.hs 10;" t
PrimitiveMode src/Shader/Data.hs 110;" t PrimitiveMode src/Shader/Data.hs 108;" t
PrintMaterial src/Dodge/Data/AmmoType.hs 12;" C PrintMaterial src/Dodge/Data/AmmoType.hs 12;" C
Prison src/Dodge/Data/Scenario.hs 65;" C Prison src/Dodge/Data/Scenario.hs 65;" C
Projectile src/Dodge/Data/Projectile.hs 15;" t Projectile src/Dodge/Data/Projectile.hs 15;" t
@@ -1117,7 +1116,7 @@ SPEEDLEGS src/Dodge/Data/Item/Combine.hs 129;" C
SPRING src/Dodge/Data/Item/Combine.hs 53;" C SPRING src/Dodge/Data/Item/Combine.hs 53;" C
SPic src/ShapePicture/Data.hs 7;" t SPic src/ShapePicture/Data.hs 7;" t
SQUARE src/Dodge/Data/GenParams.hs 18;" C SQUARE src/Dodge/Data/GenParams.hs 18;" C
SSBO src/Shader/Data.hs 99;" t SSBO src/Shader/Data.hs 97;" t
SString src/ShortShow.hs 16;" C SString src/ShortShow.hs 16;" C
ST src/Dodge/Data/MetaTree.hs 20;" C ST src/Dodge/Data/MetaTree.hs 20;" C
STEELDRUM src/Dodge/Data/Item/Combine.hs 58;" C STEELDRUM src/Dodge/Data/Item/Combine.hs 58;" C
@@ -1151,7 +1150,7 @@ SetLSCol src/Dodge/Data/WorldEffect.hs 24;" C
SetTrigger src/Dodge/Data/WorldEffect.hs 22;" C SetTrigger src/Dodge/Data/WorldEffect.hs 22;" C
ShadNum src/Picture/Data.hs 33;" t ShadNum src/Picture/Data.hs 33;" t
Shader src/Shader/Data.hs 51;" t Shader src/Shader/Data.hs 51;" t
ShaderTexture src/Shader/Data.hs 105;" t ShaderTexture src/Shader/Data.hs 103;" t
ShadowFidelity src/Shape/Data.hs 19;" t ShadowFidelity src/Shape/Data.hs 19;" t
ShadowRendering src/Dodge/Data/Config.hs 103;" t ShadowRendering src/Dodge/Data/Config.hs 103;" t
Shape src/Shape/Data.hs 48;" t Shape src/Shape/Data.hs 48;" t
@@ -1349,7 +1348,7 @@ TwoHandUnder src/Dodge/Data/AimStance.hs 11;" C
Typical src/Shape/Data.hs 31;" C Typical src/Shape/Data.hs 31;" C
UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 97;" C UNDERBARRELSLOT src/Dodge/Data/Item/Combine.hs 97;" C
UNIGATE src/Dodge/Data/Item/Combine.hs 30;" C UNIGATE src/Dodge/Data/Item/Combine.hs 30;" C
UintBO src/Shader/Data.hs 94;" t UintBO src/Shader/Data.hs 92;" t
UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 16;" C UnderBarrelPlatformSF src/Dodge/Data/ComposedItem.hs 16;" C
UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 15;" C UnderBarrelSlotSF src/Dodge/Data/ComposedItem.hs 15;" C
UnderGround src/Dodge/Data/Scenario.hs 78;" C UnderGround src/Dodge/Data/Scenario.hs 78;" C
@@ -1459,7 +1458,6 @@ WeaponScopeSF src/Dodge/Data/ComposedItem.hs 19;" C
WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 20;" C WeaponTargetingSF src/Dodge/Data/ComposedItem.hs 20;" C
West src/Dodge/Data/CardinalPoint.hs 10;" C West src/Dodge/Data/CardinalPoint.hs 10;" C
West8 src/Dodge/Data/CardinalPoint.hs 34;" C West8 src/Dodge/Data/CardinalPoint.hs 34;" C
WindowPoss src/Shader/Data.hs 86;" C
WlID src/Dodge/Data/CrWlID.hs 10;" C WlID src/Dodge/Data/CrWlID.hs 10;" C
Wood src/Dodge/Data/Material.hs 11;" C Wood src/Dodge/Data/Material.hs 11;" C
World src/Dodge/Data/World.hs 34;" t World src/Dodge/Data/World.hs 34;" t
@@ -1538,9 +1536,6 @@ _bmPoints src/Dodge/Data/Beam.hs 22;" f
_bmPos src/Dodge/Data/Beam.hs 18;" f _bmPos src/Dodge/Data/Beam.hs 18;" f
_bmRange src/Dodge/Data/Beam.hs 24;" f _bmRange src/Dodge/Data/Beam.hs 24;" f
_bmType src/Dodge/Data/Beam.hs 27;" 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 _boffEff src/Dodge/Data/Button.hs 21;" f
_bonEff src/Dodge/Data/Button.hs 20;" f _bonEff src/Dodge/Data/Button.hs 20;" f
_bounceTolerance src/Dodge/Data/Projectile.hs 46;" f _bounceTolerance src/Dodge/Data/Projectile.hs 46;" f
@@ -1593,8 +1588,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 54;" f
_chasmVBO src/Data/Preload/Render.hs 52;" f _chasmVBO src/Data/Preload/Render.hs 53;" 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
@@ -1623,8 +1618,8 @@ _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
_cloudShader src/Data/Preload/Render.hs 57;" f _cloudShader src/Data/Preload/Render.hs 58;" f
_cloudVBO src/Data/Preload/Render.hs 56;" f _cloudVBO src/Data/Preload/Render.hs 57;" 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 +1749,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 61;" 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
@@ -1783,9 +1778,12 @@ _flames src/Dodge/Data/LWorld.hs 105;" f
_flankTarget src/Dodge/Data/ActionPlan.hs 129;" f _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
_flboName src/Shader/Data.hs 87;" f
_flboPtr src/Shader/Data.hs 88;" f
_flboStride src/Shader/Data.hs 89;" 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 52;" f
_floorVBO src/Data/Preload/Render.hs 50;" f _floorVBO src/Data/Preload/Render.hs 51;" 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
@@ -1907,10 +1905,10 @@ _ldtRight src/Dodge/Data/DoubleTree.hs 35;" f
_ldtValue src/Dodge/Data/DoubleTree.hs 33;" f _ldtValue src/Dodge/Data/DoubleTree.hs 33;" f
_leadTargetBy src/Dodge/Data/ActionPlan.hs 115;" f _leadTargetBy src/Dodge/Data/ActionPlan.hs 115;" f
_lightSources src/Dodge/Data/LWorld.hs 133;" f _lightSources src/Dodge/Data/LWorld.hs 133;" f
_lightUBO src/Data/Preload/Render.hs 45;" f
_lightingCapShader src/Data/Preload/Render.hs 16;" f _lightingCapShader src/Data/Preload/Render.hs 16;" f
_lightingLineShadowShader src/Data/Preload/Render.hs 15;" f _lightingLineShadowShader src/Data/Preload/Render.hs 15;" f
_lightingTextureShader src/Data/Preload/Render.hs 17;" 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 _lights src/Dodge/Data/LWorld.hs 134;" f
_linearShockwaves src/Dodge/Data/LWorld.hs 116;" f _linearShockwaves src/Dodge/Data/LWorld.hs 116;" f
_linkGapEW src/Dodge/Data/Room.hs 36;" f _linkGapEW src/Dodge/Data/Room.hs 36;" f
@@ -2191,7 +2189,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 60;" 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
@@ -2218,6 +2216,7 @@ _sfShadowImportance src/Shape/Data.hs 40;" f
_sfSize src/Shape/Data.hs 41;" f _sfSize src/Shape/Data.hs 41;" f
_sfType src/Shape/Data.hs 37;" f _sfType src/Shape/Data.hs 37;" f
_sfVs src/Shape/Data.hs 38;" f _sfVs src/Shape/Data.hs 38;" f
_shadWallShader src/Data/Preload/Render.hs 14;" f
_shaderPrimitive src/Shader/Data.hs 53;" f _shaderPrimitive src/Shader/Data.hs 53;" f
_shaderUINT src/Shader/Data.hs 52;" f _shaderUINT src/Shader/Data.hs 52;" f
_shaderVAO src/Shader/Data.hs 54;" f _shaderVAO src/Shader/Data.hs 54;" f
@@ -2267,8 +2266,8 @@ _ssItems src/Dodge/Data/SelectionList.hs 30;" f
_ssOffset src/Dodge/Data/SelectionList.hs 31;" f _ssOffset src/Dodge/Data/SelectionList.hs 31;" f
_ssShownItems src/Dodge/Data/SelectionList.hs 32;" f _ssShownItems src/Dodge/Data/SelectionList.hs 32;" f
_ssShownLength src/Dodge/Data/SelectionList.hs 33;" f _ssShownLength src/Dodge/Data/SelectionList.hs 33;" f
_ssboName src/Shader/Data.hs 100;" f _ssboName src/Shader/Data.hs 98;" f
_ssboPtr src/Shader/Data.hs 101;" f _ssboPtr src/Shader/Data.hs 99;" f
_strideAmount src/Dodge/Data/Creature/Stance.hs 23;" f _strideAmount src/Dodge/Data/Creature/Stance.hs 23;" f
_strideLength src/Dodge/Data/Creature/Stance.hs 18;" f _strideLength src/Dodge/Data/Creature/Stance.hs 18;" f
_stuckCrID src/Dodge/Data/Projectile.hs 48;" f _stuckCrID src/Dodge/Data/Projectile.hs 48;" f
@@ -2302,7 +2301,7 @@ _terminals src/Dodge/Data/LWorld.hs 122;" f
_teslaArcs src/Dodge/Data/LWorld.hs 110;" f _teslaArcs src/Dodge/Data/LWorld.hs 110;" f
_testFloat src/Dodge/Data/World.hs 42;" f _testFloat src/Dodge/Data/World.hs 42;" f
_textInput src/Dodge/Data/Input.hs 46;" f _textInput src/Dodge/Data/Input.hs 46;" f
_textureObject src/Shader/Data.hs 106;" f _textureObject src/Shader/Data.hs 104;" f
_tiText src/Dodge/Data/Terminal/Status.hs 14;" f _tiText src/Dodge/Data/Terminal/Status.hs 14;" f
_tileArrayZ src/Data/Tile.hs 24;" f _tileArrayZ src/Data/Tile.hs 24;" f
_tilePoly src/Data/Tile.hs 17;" f _tilePoly src/Data/Tile.hs 17;" f
@@ -2352,15 +2351,15 @@ _uScope src/Dodge/Data/Item/Use.hs 34;" f
_uValue src/Dodge/Data/Item/Use.hs 33;" f _uValue src/Dodge/Data/Item/Use.hs 33;" f
_uaParams src/Dodge/Data/Item/Use.hs 30;" f _uaParams src/Dodge/Data/Item/Use.hs 30;" f
_ubMod src/Dodge/Data/Item/Use.hs 35;" f _ubMod src/Dodge/Data/Item/Use.hs 35;" f
_uiboName src/Shader/Data.hs 95;" f _uiboName src/Shader/Data.hs 93;" f
_uiboPtr src/Shader/Data.hs 96;" f _uiboPtr src/Shader/Data.hs 94;" f
_unCombEdge src/Dodge/Combine/Graph.hs 30;" f _unCombEdge src/Dodge/Combine/Graph.hs 30;" f
_unCombNode src/Dodge/Combine/Graph.hs 23;" f _unCombNode src/Dodge/Combine/Graph.hs 23;" f
_unFBO src/Shader/Data.hs 57;" f _unFBO src/Shader/Data.hs 57;" f
_unNInt src/NewInt.hs 16;" f _unNInt src/NewInt.hs 16;" f
_unNIntMap src/NewInt.hs 22;" f _unNIntMap src/NewInt.hs 22;" f
_unNIntSet src/NewInt.hs 19;" f _unNIntSet src/NewInt.hs 19;" f
_unPrimitiveMode src/Shader/Data.hs 110;" f _unPrimitiveMode src/Shader/Data.hs 108;" f
_unPutCrit src/Dodge/Data/GenWorld.hs 32;" f _unPutCrit src/Dodge/Data/GenWorld.hs 32;" f
_unST src/Dodge/Data/MetaTree.hs 20;" f _unST src/Dodge/Data/MetaTree.hs 20;" f
_unTO src/Shader/Data.hs 59;" f _unTO src/Shader/Data.hs 59;" f
@@ -2400,7 +2399,7 @@ _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 50;" f
_vboVertexBytes src/Shader/Data.hs 82;" f _vboVertexBytes src/Shader/Data.hs 82;" 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
@@ -2423,13 +2422,13 @@ _wTime src/Dodge/Data/Item/Params.hs 20;" f
_waitThenAction src/Dodge/Data/ActionPlan.hs 76;" f _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
_wallVBO src/Data/Preload/Render.hs 55;" 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
_warmMax src/Dodge/Data/TriggerType.hs 19;" f _warmMax src/Dodge/Data/TriggerType.hs 19;" f
_warmStart src/Dodge/Data/TriggerType.hs 15;" f _warmStart src/Dodge/Data/TriggerType.hs 15;" f
_winVBO src/Data/Preload/Render.hs 54;" f _winVBO src/Data/Preload/Render.hs 55;" f
_windowPosX src/Dodge/Data/Config.hs 53;" f _windowPosX src/Dodge/Data/Config.hs 53;" f
_windowPosY src/Dodge/Data/Config.hs 54;" f _windowPosY src/Dodge/Data/Config.hs 54;" f
_windowPullShader src/Data/Preload/Render.hs 21;" f _windowPullShader src/Data/Preload/Render.hs 21;" f
@@ -2588,7 +2587,7 @@ attachOnward src/Dodge/Tree/Compose.hs 95;" f
attachOnward' src/Dodge/Tree/Compose.hs 98;" f attachOnward' src/Dodge/Tree/Compose.hs 98;" f
attachTree src/Dodge/Tree/Compose.hs 38;" f attachTree src/Dodge/Tree/Compose.hs 38;" f
attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 75;" f attentionViewPoint src/Dodge/Creature/ReaderUpdate.hs 75;" f
attribSize src/Shader/Compile.hs 310;" f attribSize src/Shader/Compile.hs 320;" f
autoAmr src/Dodge/Item/Held/Rod.hs 39;" f autoAmr src/Dodge/Item/Held/Rod.hs 39;" f
autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 488;" f autoBS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 488;" f
autoCrit src/Dodge/Creature/AutoCrit.hs 10;" f autoCrit src/Dodge/Creature/AutoCrit.hs 10;" f
@@ -2642,7 +2641,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 270;" f bindFBO src/Render.hs 248;" 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
@@ -2698,7 +2697,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 499;" f bufferPerspectiveMatrixUBO src/Dodge/Render.hs 454;" f
bufferPokedVBO src/Shader/Bind.hs 19;" f bufferPokedVBO src/Shader/Bind.hs 19;" f
bufferShaderLayers src/Shader/Bind.hs 32;" f bufferShaderLayers src/Shader/Bind.hs 32;" f
bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f
@@ -2754,7 +2753,7 @@ checkConnection src/Dodge/Inventory/Swap.hs 66;" f
checkDeath src/Dodge/Creature/Update.hs 70;" f checkDeath src/Dodge/Creature/Update.hs 70;" f
checkDeath' src/Dodge/Creature/Update.hs 73;" f checkDeath' src/Dodge/Creature/Update.hs 73;" f
checkEndGame src/Dodge/Update.hs 766;" f checkEndGame src/Dodge/Update.hs 766;" f
checkErrorGL src/Shader/Compile.hs 259;" f checkErrorGL src/Shader/Compile.hs 267;" f
checkFBO src/Framebuffer/Check.hs 6;" f checkFBO src/Framebuffer/Check.hs 6;" f
checkGLError src/GLHelp.hs 14;" f checkGLError src/GLHelp.hs 14;" f
checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f
@@ -2855,7 +2854,7 @@ compP2A src/Dodge/ShiftPoint.hs 11;" f
compactDraw src/Dodge/LevelGen.hs 94;" f compactDraw src/Dodge/LevelGen.hs 94;" f
compactDraw' src/Dodge/LevelGen.hs 105;" f compactDraw' src/Dodge/LevelGen.hs 105;" f
compactDrawTree src/Dodge/LevelGen.hs 88;" f compactDrawTree src/Dodge/LevelGen.hs 88;" f
compileAndCheckShader src/Shader/Compile.hs 281;" f compileAndCheckShader src/Shader/Compile.hs 289;" f
composeNode src/Dodge/Tree/Compose.hs 76;" f composeNode src/Dodge/Tree/Compose.hs 76;" f
composeTree src/Dodge/Tree/Compose.hs 47;" f composeTree src/Dodge/Tree/Compose.hs 47;" f
computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 640;" f computerBeepingS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 640;" f
@@ -2876,7 +2875,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 249;" f cornerList src/Preload/Render.hs 244;" 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
@@ -3169,8 +3168,8 @@ doDebugTestF8 src/Dodge/Update/Input/DebugTest.hs 59;" f
doDoorLerp src/Dodge/Door/DoorLerp.hs 8;" f doDoorLerp src/Dodge/Door/DoorLerp.hs 8;" f
doDoorMount src/Dodge/Door.hs 30;" f doDoorMount src/Dodge/Door.hs 30;" f
doDrag src/Dodge/Update/Input/InGame.hs 127;" f doDrag src/Dodge/Update/Input/InGame.hs 127;" f
doDrawing src/Dodge/Render.hs 35;" f doDrawing src/Dodge/Render.hs 34;" f
doDrawing' src/Dodge/Render.hs 46;" f doDrawing' src/Dodge/Render.hs 45;" f
doFloatFloat src/Dodge/FloatFunction.hs 5;" f doFloatFloat src/Dodge/FloatFunction.hs 5;" f
doGenFloat src/Dodge/HeldUse.hs 1158;" f doGenFloat src/Dodge/HeldUse.hs 1158;" f
doGravityPU src/Dodge/Projectile/Update.hs 35;" f doGravityPU src/Dodge/Projectile/Update.hs 35;" f
@@ -3193,7 +3192,7 @@ doScopeZoom src/Dodge/Update/Scroll.hs 91;" f
doSectionSize src/Dodge/DisplayInventory.hs 211;" f doSectionSize src/Dodge/DisplayInventory.hs 211;" f
doSideEffects appDodge/Main.hs 125;" f doSideEffects appDodge/Main.hs 125;" f
doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 172;" f doStrategyActions src/Dodge/Creature/ReaderUpdate.hs 172;" f
doTestDrawing src/Dodge/Render.hs 42;" f doTestDrawing src/Dodge/Render.hs 41;" f
doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f doTextInputOver src/Dodge/Update/Input/Text.hs 15;" f
doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f doTextInputOverUniverse src/Dodge/Update/Input/Text.hs 12;" f
doThrust src/Dodge/Projectile/Update.hs 129;" f doThrust src/Dodge/Projectile/Update.hs 129;" f
@@ -3503,7 +3502,7 @@ forceSpine src/StrictHelp.hs 4;" f
fourEmbossDecoration src/Dodge/Placement/TopDecoration.hs 29;" f fourEmbossDecoration src/Dodge/Placement/TopDecoration.hs 29;" f
fpsText src/Dodge/Render/Picture.hs 59;" f fpsText src/Dodge/Render/Picture.hs 59;" f
fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 145;" f fractionLoadedAmmo src/Dodge/Item/Draw/SPic.hs 145;" f
frag src/Shader/Data.hs 113;" f frag src/Shader/Data.hs 111;" f
freeShaderPointers' src/Shader.hs 37;" f freeShaderPointers' src/Shader.hs 37;" f
fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f fridgeHumS src/Dodge/SoundLogic/ExternallyGeneratedSounds.hs 500;" f
fromJust' src/MaybeHelp.hs 22;" f fromJust' src/MaybeHelp.hs 22;" f
@@ -3533,7 +3532,7 @@ generateGraphs src/Dodge/Menu.hs 149;" f
generateLayout src/Dodge/Layout/Generate.hs 10;" f generateLayout src/Dodge/Layout/Generate.hs 10;" f
generateLevelFromRoomList src/Dodge/Layout.hs 35;" f generateLevelFromRoomList src/Dodge/Layout.hs 35;" f
generateWorldFromSeed src/Dodge/LevelGen.hs 17;" f generateWorldFromSeed src/Dodge/LevelGen.hs 17;" f
geom src/Shader/Data.hs 113;" f geom src/Shader/Data.hs 111;" f
geometryQuickCheckTests test/Spec.hs 55;" f geometryQuickCheckTests test/Spec.hs 55;" f
geometryTests test/Spec.hs 17;" f geometryTests test/Spec.hs 17;" f
geometryUnitTests test/Spec.hs 22;" f geometryUnitTests test/Spec.hs 22;" f
@@ -3552,7 +3551,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 505;" f getDistortions src/Dodge/Render.hs 466;" 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
@@ -3703,7 +3702,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 267;" f initializeGLState src/Preload/Render.hs 262;" 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
@@ -4021,7 +4020,7 @@ makeBlockDebris src/Dodge/Block/Debris.hs 36;" f
makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f makeBoolOption src/Dodge/Menu/OptionType.hs 8;" f
makeBullet src/Dodge/HeldUse.hs 979;" f makeBullet src/Dodge/HeldUse.hs 979;" f
makeButton src/Dodge/LevelGen/Switch.hs 16;" f makeButton src/Dodge/LevelGen/Switch.hs 16;" f
makeByteStringShaderUsingVAO src/Shader/Compile.hs 132;" f makeByteStringShaderUsingVAO src/Shader/Compile.hs 134;" f
makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f makeCloudAt src/Dodge/WorldEvent/Cloud.hs 7;" f
makeColorTermLine src/Dodge/Terminal.hs 111;" f makeColorTermLine src/Dodge/Terminal.hs 111;" f
makeColorTermPara src/Dodge/Terminal.hs 108;" f makeColorTermPara src/Dodge/Terminal.hs 108;" f
@@ -4047,14 +4046,14 @@ makePathBetweenPs src/Dodge/Path.hs 87;" f
makePathUsing src/Dodge/Path.hs 51;" f makePathUsing src/Dodge/Path.hs 51;" f
makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 24;" f makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 24;" f
makeSelectionListPictures src/Dodge/Render/List.hs 66;" f makeSelectionListPictures src/Dodge/Render/List.hs 66;" f
makeShaderEBO src/Shader/Compile.hs 53;" f makeShaderEBO src/Shader/Compile.hs 54;" f
makeShaderProgram src/Shader/Compile.hs 245;" f makeShaderProgram src/Shader/Compile.hs 253;" f
makeShaderUsingVAO src/Shader/Compile.hs 150;" f makeShaderUsingVAO src/Shader/Compile.hs 152;" f
makeShaderUsingVBO src/Shader/Compile.hs 69;" f makeShaderUsingVBO src/Shader/Compile.hs 70;" f
makeShaderVBO src/Shader/Compile.hs 32;" f makeShaderVBO src/Shader/Compile.hs 33;" f
makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 11;" f makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 11;" f
makeShrapnelAt src/Dodge/Payload.hs 24;" f makeShrapnelAt src/Dodge/Payload.hs 24;" f
makeSourcedShader src/Shader/Compile.hs 171;" f makeSourcedShader src/Shader/Compile.hs 173;" f
makeSpark src/Dodge/Spark.hs 45;" f makeSpark src/Dodge/Spark.hs 45;" f
makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f makeSubmenuOption src/Dodge/Menu/OptionType.hs 19;" f
makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f
@@ -4329,7 +4328,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 246;" f pingPongBetween src/Render.hs 224;" 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
@@ -4358,16 +4357,16 @@ playSoundAndUpdate src/Sound.hs 54;" f
playSoundQueue src/Sound.hs 132;" f playSoundQueue src/Sound.hs 132;" f
playSoundUnlessRewinding appDodge/Main.hs 118;" f playSoundUnlessRewinding appDodge/Main.hs 118;" f
plusDecoration src/Dodge/Placement/TopDecoration.hs 35;" f plusDecoration src/Dodge/Placement/TopDecoration.hs 35;" f
pmLineLoop src/Shader/Data.hs 118;" f pmLineLoop src/Shader/Data.hs 116;" f
pmLineStrip src/Shader/Data.hs 118;" f pmLineStrip src/Shader/Data.hs 116;" f
pmLines src/Shader/Data.hs 118;" f pmLines src/Shader/Data.hs 116;" f
pmLinesAdjacency src/Shader/Data.hs 118;" f pmLinesAdjacency src/Shader/Data.hs 116;" f
pmPatches src/Shader/Data.hs 118;" f pmPatches src/Shader/Data.hs 116;" f
pmPoints src/Shader/Data.hs 118;" f pmPoints src/Shader/Data.hs 116;" f
pmQuads src/Shader/Data.hs 118;" f pmQuads src/Shader/Data.hs 116;" f
pmTriangleFan src/Shader/Data.hs 118;" f pmTriangleFan src/Shader/Data.hs 116;" f
pmTriangleStrip src/Shader/Data.hs 118;" f pmTriangleStrip src/Shader/Data.hs 116;" f
pmTriangles src/Shader/Data.hs 118;" f pmTriangles src/Shader/Data.hs 116;" f
pnZoneSize src/Dodge/Zoning/Pathing.hs 26;" f pnZoneSize src/Dodge/Zoning/Pathing.hs 26;" f
pointIfNotClose src/Dodge/LevelGen/StaticWalls/Deprecated.hs 68;" f pointIfNotClose src/Dodge/LevelGen/StaticWalls/Deprecated.hs 68;" f
pointInCircle src/Geometry.hs 209;" f pointInCircle src/Geometry.hs 209;" f
@@ -4449,7 +4448,7 @@ powlistUpToN' src/Multiset.hs 12;" f
powlistUpToN'' src/Multiset.hs 31;" f powlistUpToN'' src/Multiset.hs 31;" f
preCritStart src/Dodge/Room/Start.hs 83;" f preCritStart src/Dodge/Room/Start.hs 83;" f
prePos src/Quaternion.hs 64;" f prePos src/Quaternion.hs 64;" f
preloadRender src/Preload/Render.hs 31;" f preloadRender src/Preload/Render.hs 32;" f
premapMaybe src/FoldlHelp.hs 26;" f premapMaybe src/FoldlHelp.hs 26;" f
prependTwo src/Geometry.hs 177;" f prependTwo src/Geometry.hs 177;" f
prettyDT src/Dodge/DoubleTree.hs 258;" f prettyDT src/Dodge/DoubleTree.hs 258;" f
@@ -4604,7 +4603,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 259;" f renderLayer src/Render.hs 237;" 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
@@ -4807,7 +4806,7 @@ setRBCreatureTargeting src/Dodge/Creature/State.hs 290;" f
setRoomInt src/Dodge/Room/Tutorial.hs 91;" f setRoomInt src/Dodge/Room/Tutorial.hs 91;" f
setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f setSelWhileDragging src/Dodge/Update/Input/InGame.hs 337;" f
setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f setSelectionListRestriction src/Dodge/Update/Input/ScreenLayer.hs 87;" f
setShaderSource src/Shader/Compile.hs 294;" f setShaderSource src/Shader/Compile.hs 302;" f
setShadowLimits src/Dodge/Shadows.hs 11;" f setShadowLimits src/Dodge/Shadows.hs 11;" f
setSoundVolume src/Sound.hs 157;" f setSoundVolume src/Sound.hs 157;" f
setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f
@@ -4816,29 +4815,29 @@ 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 510;" f setViewport src/Dodge/Render.hs 471;" 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
setupConLoop src/Loop.hs 103;" f setupConLoop src/Loop.hs 103;" f
setupConLoop' src/Loop.hs 193;" f setupConLoop' src/Loop.hs 193;" f
setupEBO src/Shader/Compile.hs 192;" f setupEBO src/Shader/Compile.hs 197;" f
setupFramebuffer2GivenStencil src/Framebuffer/Setup.hs 46;" f setupFramebuffer2GivenStencil src/Framebuffer/Setup.hs 46;" f
setupFramebuffer3GivenStencil src/Framebuffer/Setup.hs 62;" f setupFramebuffer3GivenStencil src/Framebuffer/Setup.hs 62;" f
setupFramebufferGivenStencil src/Framebuffer/Setup.hs 31;" f setupFramebufferGivenStencil src/Framebuffer/Setup.hs 31;" f
setupLoop src/Loop.hs 30;" f setupLoop src/Loop.hs 30;" f
setupShadowFramebuffer src/Framebuffer/Setup.hs 24;" f setupShadowFramebuffer src/Framebuffer/Setup.hs 24;" f
setupStaticVBOVAO src/Shader/Compile.hs 102;" f setupStaticVBOVAO src/Shader/Compile.hs 103;" f
setupVAOUsingVBO src/Shader/Compile.hs 183;" f setupVAOUsingVBO src/Shader/Compile.hs 185;" f
setupVBO src/Shader/Compile.hs 83;" f setupVBO src/Shader/Compile.hs 84;" f
setupVBOStatic src/Shader/Compile.hs 118;" f setupVBOStatic src/Shader/Compile.hs 120;" f
setupVBOVAO src/Shader/Compile.hs 204;" f setupVBOVAO src/Shader/Compile.hs 209;" f
setupVertexAttribPointer src/Shader/Compile.hs 228;" f setupVertexAttribPointer src/Shader/Compile.hs 234;" f
setupVertexAttribs src/Shader/Compile.hs 222;" f setupVertexAttribs src/Shader/Compile.hs 228;" f
setupWorldBounds src/Dodge/Layout.hs 116;" f setupWorldBounds src/Dodge/Layout.hs 116;" f
sfInvColor src/Dodge/Item/InventoryColor.hs 12;" f sfInvColor src/Dodge/Item/InventoryColor.hs 12;" f
shadVBOptr src/Shader.hs 40;" f shadVBOptr src/Shader.hs 40;" f
shaderTypeExt src/Shader/Compile.hs 176;" f shaderTypeExt src/Shader/Compile.hs 178;" 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
shapeVerxSize src/Shape/Parameters.hs 5;" f shapeVerxSize src/Shape/Parameters.hs 5;" f
@@ -5149,7 +5148,7 @@ toBinary src/Dodge/Inventory/SelectionList.hs 141;" f
toBothLnk src/Dodge/RoomLink.hs 136;" f toBothLnk src/Dodge/RoomLink.hs 136;" f
toClosestMultiple src/HelpNum.hs 3;" f toClosestMultiple src/HelpNum.hs 3;" f
toColor8 src/Color.hs 148;" f toColor8 src/Color.hs 148;" f
toFloatVAs src/Shader/Compile.hs 215;" f toFloatVAs src/Shader/Compile.hs 220;" f
toLabel src/Dodge/Cleat.hs 16;" f toLabel src/Dodge/Cleat.hs 16;" f
toMultiset src/Multiset.hs 64;" f toMultiset src/Multiset.hs 64;" f
toOnward src/Dodge/Tree/Compose.hs 101;" f toOnward src/Dodge/Tree/Compose.hs 101;" f
@@ -5447,10 +5446,10 @@ vShape src/Dodge/Placement/Instance/LightSource.hs 93;" f
vToL src/MatrixHelper.hs 56;" f vToL src/MatrixHelper.hs 56;" f
vToQuat src/Quaternion.hs 42;" f vToQuat src/Quaternion.hs 42;" f
validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" f validTerminalCommands src/Dodge/Debug/Terminal.hs 137;" f
vasTightStride src/Shader/Compile.hs 301;" f vasTightStride src/Shader/Compile.hs 309;" f
vecBetweenSpeed src/Dodge/Base.hs 146;" f vecBetweenSpeed src/Dodge/Base.hs 146;" f
vecTurnTo src/Dodge/Movement/Turn.hs 19;" f vecTurnTo src/Dodge/Movement/Turn.hs 19;" f
vert src/Shader/Data.hs 113;" f vert src/Shader/Data.hs 111;" f
vertScale src/MatrixHelper.hs 95;" f vertScale src/MatrixHelper.hs 95;" f
vertTrans src/MatrixHelper.hs 103;" f vertTrans src/MatrixHelper.hs 103;" f
verticalPipe src/Dodge/Picture.hs 19;" f verticalPipe src/Dodge/Picture.hs 19;" f
@@ -5515,7 +5514,7 @@ windowLine src/Dodge/Placement/Instance/Wall.hs 59;" f
windowXFloat src/Dodge/Data/Config.hs 61;" f windowXFloat src/Dodge/Data/Config.hs 61;" f
windowYFloat src/Dodge/Data/Config.hs 63;" f windowYFloat src/Dodge/Data/Config.hs 63;" f
withAlpha src/Color.hs 10;" f withAlpha src/Color.hs 10;" f
withByteString src/Shader/Compile.hs 328;" f withByteString src/Shader/Compile.hs 338;" f
wlIXsNearCirc src/Dodge/Zoning/Wall.hs 32;" f wlIXsNearCirc src/Dodge/Zoning/Wall.hs 32;" f
wlIXsNearPoint src/Dodge/Zoning/Wall.hs 22;" f wlIXsNearPoint src/Dodge/Zoning/Wall.hs 22;" f
wlIXsNearRect src/Dodge/Zoning/Wall.hs 29;" f wlIXsNearRect src/Dodge/Zoning/Wall.hs 29;" f