Cleanup
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
#version 450 core
|
||||
in vec4 vCol;
|
||||
in vec3 vPos;
|
||||
in vec3 vparams;
|
||||
layout (location=0) out vec4 fCol;
|
||||
layout (location=1) out vec4 fPos;
|
||||
void main()
|
||||
{
|
||||
float d = (dot(vec2(vparams.xy),vec2(vparams.xy)));
|
||||
if ( d > 1 || d < (vparams.z * vparams.z) ) {discard;}
|
||||
fCol = vCol;
|
||||
fPos = vec4(vPos,1);
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
#version 450 core
|
||||
layout (location = 0) in vec4 pos;
|
||||
layout (location = 1) in vec4 col;
|
||||
layout (location = 2) in vec3 boxXboxYwidth;
|
||||
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
||||
layout (location = 0) uniform int layoff;
|
||||
out vec4 vCol;
|
||||
out vec3 vPos;
|
||||
out vec3 vparams;
|
||||
void main() {
|
||||
gl_Position = theMat * pos;
|
||||
vCol = col;
|
||||
vparams = boxXboxYwidth;
|
||||
vPos = pos.xyz;
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
#version 450 core
|
||||
in vec4 vCol;
|
||||
in vec3 vPos;
|
||||
layout (location=0) out vec4 fCol;
|
||||
layout (location=1) out vec4 fPos;
|
||||
void main()
|
||||
{
|
||||
fCol = vCol;
|
||||
fPos = vec4(vPos,1);
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
#version 450 core
|
||||
layout (location = 0) in vec4 pos;
|
||||
layout (location = 1) in vec4 col;
|
||||
layout (location = 0) uniform int layoff;
|
||||
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
||||
out vec4 vCol;
|
||||
out vec3 vPos;
|
||||
void main() {
|
||||
gl_Position = theMat * pos;
|
||||
vCol = col;
|
||||
vPos = pos.xyz;
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
#version 450 core
|
||||
layout (location=0) out vec4 fCol;
|
||||
layout (location=1) out vec4 fPos;
|
||||
in vec4 vCol;
|
||||
in vec3 vPos;
|
||||
void main() {
|
||||
fCol = vCol;
|
||||
fPos = vec4(vPos,1) ;
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
#version 450 core
|
||||
layout (location = 0) in vec4 position;
|
||||
layout (location = 1) in vec4 color;
|
||||
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
||||
out vec4 vCol;
|
||||
out vec3 vPos;
|
||||
void main()
|
||||
{
|
||||
vec4 posxy = theMat * vec4(position.xyz,1);
|
||||
vec4 posz = theMat * vec4(position.xyw,1);
|
||||
gl_Position = vec4(posxy.xy,posz.z,1);
|
||||
vCol = color;
|
||||
vPos = position.xyz;
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
#version 450 core
|
||||
in vec4 vColor;
|
||||
in vec2 boxOut;
|
||||
in vec2 boxIn;
|
||||
|
||||
layout (location=0) out vec4 fCol;
|
||||
layout (location=1) out vec4 fPos;
|
||||
|
||||
void main()
|
||||
{
|
||||
//float d = x - y - 1 + 2* sqrt(y);
|
||||
float d = sqrt(boxOut.x) + sqrt(boxOut.y) - 1.0;
|
||||
// float e = sqrt(f(x,wStart)) + sqrt(f(y,wEnd)) - 1.0;
|
||||
float e = sqrt(boxIn.x) + sqrt(boxIn.y) - 1.0;
|
||||
if ( d < 0 || e > 0) { discard; }
|
||||
fCol = vColor;
|
||||
fPos = vec4(0,0,0,0) ;
|
||||
}
|
||||
@@ -1,76 +0,0 @@
|
||||
#version 450 core
|
||||
layout (triangles) in;
|
||||
layout (triangle_strip, max_vertices = 5) out;
|
||||
in vec4 vColor[];
|
||||
in vec2 vPosOff[];
|
||||
in float vRadMag[];
|
||||
out vec4 gColor;
|
||||
out float wStart;
|
||||
out float wEnd;
|
||||
out vec3 gBoundingBox;
|
||||
|
||||
out vec2 box2 ;
|
||||
|
||||
vec2 normV2 (vec2 v)
|
||||
{ return vec2(-v.y,v.x) ;
|
||||
}
|
||||
float lhs (vec2 da, vec2 db)
|
||||
{ return sign(dot(da, normV2(db))) ;
|
||||
}
|
||||
|
||||
float extrapolate (vec2 inOne, vec2 inZeroA, vec2 inZeroB, vec2 xy)
|
||||
{
|
||||
float det = inOne.x * (inZeroA.y - inZeroB.y)
|
||||
+ inZeroA.x * (inZeroB.y - inOne.y)
|
||||
+ inZeroB.x * (inOne.y - inZeroA.y)
|
||||
;
|
||||
float r = (inZeroA.y - inZeroB.y) ;
|
||||
float s = (inZeroB.x - inZeroA.x) ;
|
||||
float t = (inZeroA.x * inZeroB.y - inZeroB.x * inZeroA.y) ;
|
||||
return r * xy.x + s * xy.y + t
|
||||
/ det ;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec3 pa = gl_in[0].gl_Position.xyz;
|
||||
vec3 pb = gl_in[1].gl_Position.xyz;
|
||||
vec3 pc = gl_in[2].gl_Position.xyz;
|
||||
|
||||
wStart = vRadMag [0];
|
||||
wEnd = vRadMag [2];
|
||||
|
||||
box2 = vec2 (1,0);
|
||||
gBoundingBox = vec3 (0.9,0.1,0);
|
||||
gColor = vColor[0];
|
||||
gl_Position = vec4 (vPosOff[0] , pa.z , 1);
|
||||
EmitVertex();
|
||||
box2 = vec2 (0,1);
|
||||
gBoundingBox = vec3 (0.1,0.9,0);
|
||||
gColor = vColor[2];
|
||||
gl_Position = vec4 (vPosOff[2] , pc.z , 1);
|
||||
EmitVertex();
|
||||
box2 = vec2( extrapolate(vPosOff[0],vPosOff[2],pb.xy,pa.xy)
|
||||
, extrapolate(vPosOff[2],vPosOff[0],pb.xy,pa.xy)
|
||||
) ;
|
||||
box2 = vec2(0.2,0);
|
||||
gBoundingBox = vec3 (1,0,1);
|
||||
gColor = vColor[0];
|
||||
gl_Position = vec4 (pa, 1);
|
||||
EmitVertex();
|
||||
box2 = vec2( extrapolate(vPosOff[0],vPosOff[2],pb.xy,pc.xy)
|
||||
, extrapolate(vPosOff[2],vPosOff[0],pb.xy,pc.xy)
|
||||
) ;
|
||||
box2 = vec2(0,0.2);
|
||||
gBoundingBox = vec3 (0,1,1);
|
||||
gColor = vColor[2];
|
||||
gl_Position = vec4 (pc, 1);
|
||||
EmitVertex();
|
||||
box2 = vec2( 0,0 ) ;
|
||||
gBoundingBox = vec3 (0,0,0);
|
||||
gColor = vColor[1];
|
||||
gl_Position = vec4 (pb, 1);
|
||||
EmitVertex();
|
||||
|
||||
EndPrimitive();
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
#version 450 core
|
||||
layout (location = 0) in vec3 position;
|
||||
layout (location = 1) in vec4 color;
|
||||
layout (location = 2) in vec4 boxes;
|
||||
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
||||
out vec4 vColor;
|
||||
out vec2 boxOut;
|
||||
out vec2 boxIn;
|
||||
void main()
|
||||
{
|
||||
gl_Position = theMat * vec4(position.xyz,1);
|
||||
vColor = color;
|
||||
boxOut = boxes.xy ;
|
||||
boxIn = boxes.zw ;
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
#version 450 core
|
||||
layout (location=0) out vec4 fCol;
|
||||
layout (location=1) out vec4 fPos;
|
||||
uniform sampler2D aTexture;
|
||||
in vec4 gColor;
|
||||
in vec2 gTexCoord;
|
||||
void main()
|
||||
{
|
||||
fCol = texture(aTexture, vec2 (gTexCoord.x * 0.0078125, gTexCoord.y)) * gColor;
|
||||
fPos = vec4(0,0,0,0);
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
#version 450 core
|
||||
layout (points) in;
|
||||
layout (triangle_strip, max_vertices = 4) out;
|
||||
in vec4 vColor [];
|
||||
in vec3 vTexCoord [];
|
||||
out vec4 gColor;
|
||||
out vec2 gTex;
|
||||
void main()
|
||||
{
|
||||
vec3 cenPos = gl_in[0].gl_Position.xyz;
|
||||
float sizex = vTexCoord[0].y;
|
||||
float sizey = vTexCoord[0].z;
|
||||
//float size = 0.05;
|
||||
gColor = vColor[0];
|
||||
float texPos = vTexCoord[0].x;
|
||||
|
||||
gl_Position = vec4 (cenPos.x - sizex*0.5, cenPos.y - sizey*0.5, cenPos.z , 1);
|
||||
//gl_Position = vec4 (0, 0 , 5 , 1);
|
||||
gTex = vec2 (texPos*0.0078125, 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (cenPos.x - sizex*0.5, cenPos.y + sizey*0.5, cenPos.z , 1);
|
||||
//gl_Position = vec4 (0, 0.5 , 5 , 1);
|
||||
gTex = vec2 (texPos*0.0078125, 0);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (cenPos.x + sizex*0.5, cenPos.y - sizey*0.5, cenPos.z , 1);
|
||||
//gl_Position = vec4 (0.5, 0.5 , -5 , 1);
|
||||
gTex = vec2 ((texPos+1)*0.0078125, 1);
|
||||
EmitVertex();
|
||||
gl_Position = vec4 (cenPos.x + sizex*0.5, cenPos.y + sizey*0.5, cenPos.z , 1);
|
||||
gTex = vec2 ((texPos+1)*0.0078125, 0);
|
||||
//gl_Position = vec4 (0.5, 0 , -5 , 1);
|
||||
EmitVertex();
|
||||
|
||||
EndPrimitive();
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
#version 450 core
|
||||
layout (location = 0) in vec3 aPos;
|
||||
layout (location = 1) in vec4 aColor;
|
||||
layout (location = 2) in vec2 aTexCoord;
|
||||
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
||||
out vec4 gColor;
|
||||
out vec2 gTexCoord;
|
||||
void main()
|
||||
{
|
||||
gl_Position = theMat * vec4(aPos, 1.0);
|
||||
gColor = aColor;
|
||||
gTexCoord = aTexCoord;
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
#version 450 core
|
||||
layout (location=0) out vec4 fCol;
|
||||
layout (location=1) out vec4 fPos;
|
||||
in vec4 gColC;
|
||||
in vec4 gColE;
|
||||
in vec3 gPos;
|
||||
in vec2 gBoundingBox;
|
||||
void main() {
|
||||
float d = dot(gBoundingBox,gBoundingBox);
|
||||
if ( d > 1) { discard; }
|
||||
fCol = mix (gColE , gColC, d);
|
||||
fPos = vec4(gPos,1);
|
||||
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
#version 450 core
|
||||
layout (triangles) in;
|
||||
layout (triangle_strip, max_vertices = 4) out;
|
||||
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
||||
in vec4 vCol[];
|
||||
out vec4 gColC; // center color
|
||||
out vec4 gColE; // edge color
|
||||
out vec2 gBoundingBox;
|
||||
out vec3 gPos;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 pat = gl_in[0].gl_Position;
|
||||
vec4 pbt = gl_in[1].gl_Position;
|
||||
vec4 pct = gl_in[2].gl_Position;
|
||||
vec4 pa = theMat * pat;
|
||||
vec4 pb = theMat * pbt;
|
||||
vec4 pc = theMat * pct;
|
||||
gColC = vCol[0];
|
||||
gColE = vCol[1];
|
||||
|
||||
gBoundingBox = vec2 (-1,1);
|
||||
gl_Position = pb;
|
||||
gPos = pbt.xyz;
|
||||
EmitVertex();
|
||||
gBoundingBox = vec2 (1,1);
|
||||
gl_Position = pa;
|
||||
gPos = pat.xyz;
|
||||
EmitVertex();
|
||||
gBoundingBox = vec2 (-1,-1);
|
||||
gl_Position = pc;
|
||||
gPos = pct.xyz;
|
||||
EmitVertex();
|
||||
gBoundingBox = vec2 (1,-1);
|
||||
gl_Position = pa + pc - pb;
|
||||
gPos = pat.xyz + pct.xyz - pbt.xyz;
|
||||
EmitVertex();
|
||||
|
||||
EndPrimitive();
|
||||
}
|
||||
@@ -1,33 +0,0 @@
|
||||
#version 450 core
|
||||
struct PosCol { vec4 posx; vec4 colx; };
|
||||
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
||||
layout (std430, binding = 13) readonly buffer Data { PosCol data[]; };
|
||||
layout (location = 0) uniform int n;
|
||||
out vec4 gColC; // center color
|
||||
out vec4 gColE; // edge color
|
||||
out vec2 gBoundingBox;
|
||||
out vec3 gPos;
|
||||
const int ks[6] = //
|
||||
{1,0,2 // 2--3
|
||||
,2,0,3 // | |
|
||||
}; // 1--0
|
||||
//
|
||||
const vec2 bs[4] =
|
||||
{ vec2( 1, 1)
|
||||
, vec2(-1, 1)
|
||||
, vec2(-1,-1)
|
||||
, vec2( 1,-1)
|
||||
} ;
|
||||
void main()
|
||||
{
|
||||
int i0 = n + (3 * ((gl_VertexID-n)/6) );
|
||||
gColC = data[i0].colx;
|
||||
gColE = data[i0+1].colx;
|
||||
int k = ks[(gl_VertexID - n) % 6];
|
||||
gBoundingBox = bs[k];
|
||||
gPos = (k > 2.5
|
||||
? data[i0].posx + data[i0+2].posx - data[i0+1].posx
|
||||
: data[i0+k].posx
|
||||
).xyz;
|
||||
gl_Position = theMat * vec4(gPos,1);
|
||||
}
|
||||
+11
-19
@@ -92,7 +92,7 @@ doDrawing' win pdata u = do
|
||||
nCloudVs'
|
||||
(V.fromList $ w ^. cWorld . lWorld . dusts)
|
||||
-- bind wall points, silhouette data, surface geometry
|
||||
bufferShaderLayers shadV pokeCounts
|
||||
bufferShaderLayers pokeCounts shadV
|
||||
bufferPokedVBO (_vboShapes pdata) nShapeVs
|
||||
bufferPokedVBO (pdata ^. winVBO) nWins
|
||||
bufferPokedVBO (pdata ^. wallVBO) trueNWalls
|
||||
@@ -108,12 +108,7 @@ doDrawing' win pdata u = do
|
||||
glDepthFunc GL_LESS
|
||||
-- clear depth and stencil buffers
|
||||
glStencilMask 255 -- to alter the entire stencil
|
||||
glClearNamedFramebufferfi
|
||||
(pdata ^. fboBase . _1 . unFBO)
|
||||
GL_DEPTH_STENCIL
|
||||
0
|
||||
1
|
||||
0
|
||||
glClearNamedFramebufferfi (pdata ^. fboBase . _1 . unFBO) GL_DEPTH_STENCIL 0 1 0
|
||||
-- draw wall occlusions from the camera's point of view
|
||||
glStencilFunc GL_NOTEQUAL 128 255
|
||||
glStencilOp GL_KEEP GL_KEEP GL_REPLACE
|
||||
@@ -131,8 +126,7 @@ doDrawing' win pdata u = do
|
||||
glClearNamedFramebufferfv (pdata ^. fboBase . _1 . unFBO) GL_COLOR 0
|
||||
withArray [0, 0, 0, 0] $
|
||||
glClearNamedFramebufferfv (pdata ^. fboBase . _1 . unFBO) GL_COLOR 2
|
||||
withArray [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2] $
|
||||
glNamedFramebufferDrawBuffers (pdata ^. fboBase . _1 . unFBO) 3
|
||||
-- glNamedFramebufferDrawBuffers set in preloadRender
|
||||
--draw walls onto base buffer
|
||||
glEnable GL_CULL_FACE
|
||||
glUseProgram (pdata ^. pullWallShader)
|
||||
@@ -144,19 +138,15 @@ doDrawing' win pdata u = do
|
||||
-- draw chasm shader blocking floor
|
||||
glUseProgram (pdata ^. chasmShader)
|
||||
glDepthMask GL_FALSE
|
||||
glDrawBuffer GL_NONE
|
||||
glStencilOp GL_KEEP GL_KEEP GL_INCR
|
||||
with 0 $ glClearNamedFramebufferiv (pdata ^. fboBase . _1 . unFBO) GL_STENCIL 0
|
||||
-- probably don't want to set the drawbuffer to GL_NONE, but not sure
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nchs)
|
||||
withArray [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2] $
|
||||
glNamedFramebufferDrawBuffers (pdata ^. fboBase . _1 . unFBO) 3
|
||||
glDepthMask GL_TRUE
|
||||
glDisable GL_CULL_FACE
|
||||
--draw floor onto base buffer
|
||||
glUseProgram (pdata ^. floorShader)
|
||||
glStencilFunc GL_EQUAL 0 255
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nFls)
|
||||
--glDisable GL_STENCIL_TEST
|
||||
glEnable GL_BLEND
|
||||
--draw lightmap into its own buffer
|
||||
createLightMap
|
||||
@@ -171,9 +161,11 @@ doDrawing' win pdata u = do
|
||||
(pdata ^. fboBase . _2 . _3)
|
||||
lightPoints
|
||||
pdata
|
||||
-- no longer need base positions/normals
|
||||
withArray [GL_COLOR_ATTACHMENT1,GL_COLOR_ATTACHMENT2] $
|
||||
glInvalidateNamedFramebufferData (pdata ^. fboBase . _1 . unFBO) 2
|
||||
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
|
||||
--apply lightmap to base buffer
|
||||
glDisable GL_CULL_FACE
|
||||
glDepthFunc GL_ALWAYS
|
||||
glDepthMask GL_FALSE
|
||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboBase . _1 . unFBO)
|
||||
@@ -299,8 +291,7 @@ doDrawing' win pdata u = do
|
||||
--draw windows into window textures
|
||||
glBindFramebuffer GL_FRAMEBUFFER (pdata ^. fboWindow . _1 . unFBO)
|
||||
glBindTextureUnit 3 (pdata ^. fboPos . _2 . unTO)
|
||||
withArray [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1] $
|
||||
glNamedFramebufferDrawBuffers (pdata ^. fboWindow . _1 . unFBO) 2
|
||||
-- glNamedFramebufferDrawBuffers should be set in preloadRender
|
||||
withArray [0, 0, 0, 0] $
|
||||
glClearNamedFramebufferfv (pdata ^. fboWindow . _1 . unFBO) GL_COLOR 0
|
||||
withArray [0, 0, 0, 0] $
|
||||
@@ -315,10 +306,11 @@ doDrawing' win pdata u = do
|
||||
-- with all source alphas 0.25, alpha -> 0.5
|
||||
glBlendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
glUseProgram $ pdata ^. windowPullShader
|
||||
glBindVertexArray $ pdata ^. dummyVAO
|
||||
-- don't need cloud postions/normals any more
|
||||
withArray [GL_COLOR_ATTACHMENT0] $
|
||||
glInvalidateNamedFramebufferData (pdata ^. fboPos . _1 . unFBO) 1
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nWins * 12)
|
||||
glDisable GL_DEPTH_CLAMP
|
||||
glDisable GL_CULL_FACE
|
||||
glInvalidateBufferData (pdata ^. vboShapes . vboName)
|
||||
--apply lightmap to cloud buffer
|
||||
glBindFramebuffer GL_FRAMEBUFFER (_unFBO (fst (_fboCloud pdata)))
|
||||
|
||||
@@ -163,8 +163,12 @@ preloadRender = do
|
||||
|
||||
-- if adding to this list, recall you need to sizeFBOs
|
||||
fboBaseName <- setupFramebuffer3GivenStencil rboBaseBloomName
|
||||
withArray [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2] $
|
||||
glNamedFramebufferDrawBuffers (fboBaseName ^. _1 . unFBO) 3
|
||||
fboCloudName <- setupFramebuffer3GivenStencil rboBaseBloomName
|
||||
fbowindow <- setupFramebuffer2GivenStencil rboBaseBloomName
|
||||
withArray [GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1] $
|
||||
glNamedFramebufferDrawBuffers (fbowindow ^. _1 . unFBO) 2
|
||||
fboBloomName <- setupFramebufferGivenStencil rboBaseBloomName
|
||||
fboPosName <- setupFramebufferGivenStencil rboBaseBloomName
|
||||
fboLightingName <- setupFramebufferGivenStencil rboBaseBloomName
|
||||
|
||||
+2
-2
@@ -30,8 +30,8 @@ bufferEBO x i =
|
||||
glNamedBufferSubData (x ^. uiboName) 0 (fromIntegral $ gluintSize * i) (x ^. uiboPtr)
|
||||
|
||||
bufferShaderLayers
|
||||
:: MV.MVector (PrimState IO) (GLuint, VBO) -> UMV.MVector (PrimState IO) Int -> IO ()
|
||||
bufferShaderLayers shads counts = MV.imapM_ f shads
|
||||
:: UMV.MVector (PrimState IO) Int -> MV.MVector (PrimState IO) (GLuint, VBO) -> IO ()
|
||||
bufferShaderLayers counts = MV.imapM_ f
|
||||
where
|
||||
f i shad = do
|
||||
let theVBO = snd shad
|
||||
|
||||
+1
-53
@@ -32,10 +32,7 @@ makeShaderVBO ::
|
||||
makeShaderVBO s shaderlist sizes = do
|
||||
prog <- makeSourcedShader s shaderlist
|
||||
vbo <- setupVBO (vasTightStride sizes)
|
||||
return
|
||||
( prog
|
||||
, vbo
|
||||
)
|
||||
return (prog , vbo)
|
||||
|
||||
setupVBO :: Int -> IO VBO
|
||||
setupVBO vertexsize = do
|
||||
@@ -66,28 +63,6 @@ shaderTypeExt GL_FRAGMENT_SHADER = ".frag"
|
||||
shaderTypeExt GL_COMPUTE_SHADER = ".comp"
|
||||
shaderTypeExt _ = undefined
|
||||
|
||||
setupVAOUsingVBO :: [VertexAttribute] -> VBO -> IO VAO
|
||||
setupVAOUsingVBO vas vbo = do
|
||||
let strd = vbo ^. vboVertexBytes
|
||||
vaoname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray vaoname
|
||||
setupVertexAttribs
|
||||
(vbo ^. vboName)
|
||||
vaoname
|
||||
vas
|
||||
(fromIntegral strd)
|
||||
return $ VAO vaoname
|
||||
|
||||
setupVBOVAO :: [VertexAttribute] -> IO (VAO, VBO)
|
||||
setupVBOVAO vas = do
|
||||
vaoname <- mglCreate glCreateVertexArrays
|
||||
glBindVertexArray vaoname
|
||||
vbo <- setupVBO strd
|
||||
vao <- setupVAOUsingVBO vas vbo
|
||||
return (vao, vbo)
|
||||
where
|
||||
strd = vasTightStride vas
|
||||
|
||||
toFloatVAs :: [Int] -> [VertexAttribute]
|
||||
toFloatVAs = go 0
|
||||
where
|
||||
@@ -96,31 +71,6 @@ toFloatVAs = go 0
|
||||
VertexAttribute (fromIntegral i) GL_FLOAT GL_FALSE x :
|
||||
go (x + fromIntegral floatSize * fromIntegral i) is
|
||||
|
||||
setupVertexAttribs :: GLuint -> GLuint -> [VertexAttribute] -> GLsizei -> IO ()
|
||||
setupVertexAttribs vbo vao vas strd = do
|
||||
glVertexArrayVertexBuffer vao 0 vbo 0 strd
|
||||
zipWithM_ (setupVertexAttribPointer vao) [0 ..] vas
|
||||
|
||||
-- | Assumes the correct VBO is bound
|
||||
setupVertexAttribPointer ::
|
||||
GLuint ->
|
||||
-- | Location (in shader)
|
||||
Int ->
|
||||
VertexAttribute ->
|
||||
IO ()
|
||||
setupVertexAttribPointer vao loc va = do
|
||||
glEnableVertexArrayAttrib vao loc'
|
||||
glVertexArrayAttribFormat
|
||||
vao
|
||||
loc'
|
||||
(va ^. vaCount)
|
||||
(va ^. vaType)
|
||||
(va ^. vaNormalize)
|
||||
(va ^. vaOffset)
|
||||
glVertexArrayAttribBinding vao loc' 0
|
||||
where
|
||||
loc' = fromIntegral loc
|
||||
|
||||
makeShaderProgram :: String -> [(GLenum, BS.ByteString)] -> IO GLuint
|
||||
makeShaderProgram str srcs = do
|
||||
theprog <- glCreateProgram
|
||||
@@ -208,5 +158,3 @@ withByteString :: Num t => BS.ByteString -> (Ptr b -> t -> IO a) -> IO a
|
||||
withByteString bs act =
|
||||
BU.unsafeUseAsCStringLen bs $ \(ptr, size) ->
|
||||
act (castPtr ptr) (fromIntegral size)
|
||||
|
||||
--boVertex
|
||||
|
||||
@@ -2599,7 +2599,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 193;" f
|
||||
attribSize src/Shader/Compile.hs 139;" 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
|
||||
@@ -2710,7 +2710,7 @@ brightX src/Color.hs 116;" f
|
||||
btSPic src/Dodge/Render/ShapePicture.hs 129;" f
|
||||
btText src/Dodge/Inventory/SelectionList.hs 237;" f
|
||||
bufferEBO src/Shader/Bind.hs 28;" f
|
||||
bufferPerspectiveMatrixUBO src/Dodge/Render.hs 402;" f
|
||||
bufferPerspectiveMatrixUBO src/Dodge/Render.hs 396;" f
|
||||
bufferPokedVBO src/Shader/Bind.hs 19;" f
|
||||
bufferShaderLayers src/Shader/Bind.hs 32;" f
|
||||
bulletBeltBracer src/Dodge/Item/Equipment.hs 67;" f
|
||||
@@ -2766,7 +2766,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 140;" f
|
||||
checkErrorGL src/Shader/Compile.hs 86;" f
|
||||
checkFBO src/Framebuffer/Check.hs 6;" f
|
||||
checkGLError src/GLHelp.hs 14;" f
|
||||
checkInvSlotsYou src/Dodge/Inventory/CheckSlots.hs 18;" f
|
||||
@@ -2867,7 +2867,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 162;" f
|
||||
compileAndCheckShader src/Shader/Compile.hs 108;" 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
|
||||
@@ -2888,7 +2888,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 225;" f
|
||||
cornerList src/Preload/Render.hs 229;" f
|
||||
corpseOrGib src/Dodge/Creature/Update.hs 111;" f
|
||||
corridor src/Dodge/Room/Corridor.hs 17;" f
|
||||
corridorBoss src/Dodge/LockAndKey.hs 133;" f
|
||||
@@ -3252,7 +3252,7 @@ drawCombFilter src/Dodge/Render/Picture.hs 269;" f
|
||||
drawCombineInventory src/Dodge/Render/HUD.hs 183;" f
|
||||
drawConcurrentMessage src/Dodge/Render/Picture.hs 74;" f
|
||||
drawCoord src/Dodge/Debug/Picture.hs 386;" f
|
||||
drawCountMod src/Shader.hs 24;" f
|
||||
drawCountMod src/Shader.hs 20;" f
|
||||
drawCrInfo src/Dodge/Debug.hs 169;" f
|
||||
drawCrInfo' src/Dodge/Debug.hs 164;" f
|
||||
drawCreature src/Dodge/Render/ShapePicture.hs 71;" f
|
||||
@@ -3329,7 +3329,7 @@ drawSelect src/Dodge/Render/Picture.hs 257;" f
|
||||
drawSelectionList src/Dodge/Render/List.hs 36;" f
|
||||
drawSelectionListBackground src/Dodge/Render/List.hs 52;" f
|
||||
drawSelectionSections src/Dodge/SelectionSections/Draw.hs 16;" f
|
||||
drawShaderLay src/Shader.hs 10;" f
|
||||
drawShaderLay src/Shader.hs 9;" f
|
||||
drawShadowsByImportance src/Dodge/Shadows.hs 8;" f
|
||||
drawShell src/Dodge/Projectile/Draw.hs 22;" f
|
||||
drawShockwave src/Dodge/Shockwave/Draw.hs 6;" f
|
||||
@@ -3564,7 +3564,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 414;" f
|
||||
getDistortions src/Dodge/Render.hs 408;" f
|
||||
getEdgesCrossing src/Dodge/Path.hs 37;" f
|
||||
getGrenadeHitEffect src/Dodge/HeldUse.hs 1264;" f
|
||||
getInventoryPath src/Dodge/Inventory/Path.hs 9;" f
|
||||
@@ -3715,7 +3715,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 246;" f
|
||||
initializeGLState src/Preload/Render.hs 250;" f
|
||||
initializeOptionMenu src/Dodge/Menu/Option.hs 17;" f
|
||||
initializeOptionMenuBO src/Dodge/Menu/Option.hs 30;" f
|
||||
initializeTexture2D src/Framebuffer/Update.hs 214;" f
|
||||
@@ -4056,11 +4056,11 @@ makePathBetweenPs src/Dodge/Path.hs 87;" f
|
||||
makePathUsing src/Dodge/Path.hs 51;" f
|
||||
makePoisonExplosionAt src/Dodge/WorldEvent/Explosion.hs 24;" f
|
||||
makeSelectionListPictures src/Dodge/Render/List.hs 66;" f
|
||||
makeShaderProgram src/Shader/Compile.hs 128;" f
|
||||
makeShaderProgram src/Shader/Compile.hs 74;" f
|
||||
makeShaderVBO src/Shader/Compile.hs 24;" f
|
||||
makeShockwaveAt src/Dodge/WorldEvent/Shockwave.hs 11;" f
|
||||
makeShrapnelAt src/Dodge/Payload.hs 24;" f
|
||||
makeSourcedShader src/Shader/Compile.hs 61;" f
|
||||
makeSourcedShader src/Shader/Compile.hs 54;" f
|
||||
makeSpark src/Dodge/Spark.hs 45;" f
|
||||
makeSubmenuOption src/Dodge/Menu/OptionType.hs 23;" f
|
||||
makeSwitch src/Dodge/LevelGen/Switch.hs 38;" f
|
||||
@@ -4560,7 +4560,7 @@ randomTreeStructure src/Dodge/Layout/Generate.hs 18;" f
|
||||
randsOnCirc src/RandomHelp.hs 127;" f
|
||||
randsSpread src/RandomHelp.hs 120;" f
|
||||
ratIntersectLineLine src/Geometry/Intersect.hs 216;" f
|
||||
rdToVec2s src/Dodge/Render.hs 397;" f
|
||||
rdToVec2s src/Dodge/Render.hs 391;" f
|
||||
readSaveSlot src/Dodge/Save.hs 45;" f
|
||||
recoilAmount src/Dodge/HeldUse.hs 467;" f
|
||||
rectNSWE src/Geometry/Polygon.hs 15;" f
|
||||
@@ -4804,7 +4804,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 175;" f
|
||||
setShaderSource src/Shader/Compile.hs 121;" f
|
||||
setShadowLimits src/Dodge/Shadows.hs 11;" f
|
||||
setSoundVolume src/Sound.hs 157;" f
|
||||
setTargetMv src/Dodge/Creature/ReaderUpdate.hs 83;" f
|
||||
@@ -4813,7 +4813,7 @@ setTiles src/Dodge/Layout.hs 67;" f
|
||||
setTreeInts src/Dodge/Room/Tutorial.hs 98;" f
|
||||
setViewDistance src/Dodge/Update/Camera.hs 241;" f
|
||||
setViewPos src/Dodge/Creature/ReaderUpdate.hs 69;" f
|
||||
setViewport src/Dodge/Render.hs 419;" f
|
||||
setViewport src/Dodge/Render.hs 413;" f
|
||||
setVol src/Dodge/Config.hs 47;" f
|
||||
setWindowColor src/Dodge/Render/Walls.hs 32;" f
|
||||
setWristShieldPos src/Dodge/Equipment.hs 49;" f
|
||||
@@ -4825,14 +4825,10 @@ setupFramebuffer3GivenStencil src/Framebuffer/Setup.hs 62;" f
|
||||
setupFramebufferGivenStencil src/Framebuffer/Setup.hs 31;" f
|
||||
setupLoop src/Loop.hs 30;" f
|
||||
setupShadowFramebuffer src/Framebuffer/Setup.hs 24;" f
|
||||
setupVAOUsingVBO src/Shader/Compile.hs 73;" f
|
||||
setupVBO src/Shader/Compile.hs 44;" f
|
||||
setupVBOVAO src/Shader/Compile.hs 85;" f
|
||||
setupVertexAttribPointer src/Shader/Compile.hs 109;" f
|
||||
setupVertexAttribs src/Shader/Compile.hs 103;" f
|
||||
setupVBO src/Shader/Compile.hs 37;" f
|
||||
setupWorldBounds src/Dodge/Layout.hs 116;" f
|
||||
sfInvColor src/Dodge/Item/InventoryColor.hs 12;" f
|
||||
shaderTypeExt src/Shader/Compile.hs 66;" f
|
||||
shaderTypeExt src/Shader/Compile.hs 59;" f
|
||||
shapeBounds src/Dodge/Room/Foreground.hs 147;" f
|
||||
shapePoints src/Dodge/Room/Foreground.hs 144;" f
|
||||
shapeVerxSize src/Shape/Parameters.hs 5;" f
|
||||
@@ -5143,7 +5139,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 95;" f
|
||||
toFloatVAs src/Shader/Compile.hs 66;" f
|
||||
toLabel src/Dodge/Cleat.hs 16;" f
|
||||
toMultiset src/Multiset.hs 64;" f
|
||||
toOnward src/Dodge/Tree/Compose.hs 101;" f
|
||||
@@ -5441,7 +5437,7 @@ 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 182;" f
|
||||
vasTightStride src/Shader/Compile.hs 128;" f
|
||||
vecBetweenSpeed src/Dodge/Base.hs 146;" f
|
||||
vecTurnTo src/Dodge/Movement/Turn.hs 19;" f
|
||||
vert src/Shader/Data.hs 110;" f
|
||||
@@ -5509,7 +5505,7 @@ windowLine src/Dodge/Placement/Instance/Wall.hs 59;" f
|
||||
windowXFloat src/Dodge/Data/Config.hs 72;" f
|
||||
windowYFloat src/Dodge/Data/Config.hs 74;" f
|
||||
withAlpha src/Color.hs 10;" f
|
||||
withByteString src/Shader/Compile.hs 211;" f
|
||||
withByteString src/Shader/Compile.hs 157;" 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
|
||||
|
||||
Reference in New Issue
Block a user