From 3ceff22f369071f4f5c788152ff5f9a9a0ecccfe Mon Sep 17 00:00:00 2001 From: justin Date: Fri, 21 Nov 2025 00:25:50 +0000 Subject: [PATCH] Cleanup --- shader/dualTwoD/arc.frag | 13 ------ shader/dualTwoD/arc.vert | 15 ------- shader/dualTwoD/basic.frag | 10 ----- shader/dualTwoD/basic.vert | 12 ----- shader/dualTwoD/basicTweakZ.frag | 9 ---- shader/dualTwoD/basicTweakZ.vert | 14 ------ shader/dualTwoD/bezierQuad.frag | 18 -------- shader/dualTwoD/bezierQuad.geom | 76 -------------------------------- shader/dualTwoD/bezierQuad.vert | 15 ------- shader/dualTwoD/character.frag | 11 ----- shader/dualTwoD/character.geom | 35 --------------- shader/dualTwoD/character.vert | 13 ------ shader/dualTwoD/ellipse.frag | 14 ------ shader/dualTwoD/ellipse.geom | 40 ----------------- shader/dualTwoD/ellipse.vert | 33 -------------- src/Dodge/Render.hs | 30 +++++-------- src/Preload/Render.hs | 4 ++ src/Shader/Bind.hs | 4 +- src/Shader/Compile.hs | 54 +---------------------- tags | 42 ++++++++---------- 20 files changed, 37 insertions(+), 425 deletions(-) delete mode 100644 shader/dualTwoD/arc.frag delete mode 100644 shader/dualTwoD/arc.vert delete mode 100644 shader/dualTwoD/basic.frag delete mode 100644 shader/dualTwoD/basic.vert delete mode 100644 shader/dualTwoD/basicTweakZ.frag delete mode 100644 shader/dualTwoD/basicTweakZ.vert delete mode 100644 shader/dualTwoD/bezierQuad.frag delete mode 100644 shader/dualTwoD/bezierQuad.geom delete mode 100644 shader/dualTwoD/bezierQuad.vert delete mode 100644 shader/dualTwoD/character.frag delete mode 100644 shader/dualTwoD/character.geom delete mode 100644 shader/dualTwoD/character.vert delete mode 100644 shader/dualTwoD/ellipse.frag delete mode 100644 shader/dualTwoD/ellipse.geom delete mode 100644 shader/dualTwoD/ellipse.vert diff --git a/shader/dualTwoD/arc.frag b/shader/dualTwoD/arc.frag deleted file mode 100644 index f8595b223..000000000 --- a/shader/dualTwoD/arc.frag +++ /dev/null @@ -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); -} diff --git a/shader/dualTwoD/arc.vert b/shader/dualTwoD/arc.vert deleted file mode 100644 index e53f915ee..000000000 --- a/shader/dualTwoD/arc.vert +++ /dev/null @@ -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; -} diff --git a/shader/dualTwoD/basic.frag b/shader/dualTwoD/basic.frag deleted file mode 100644 index 62e8b8b09..000000000 --- a/shader/dualTwoD/basic.frag +++ /dev/null @@ -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); -} diff --git a/shader/dualTwoD/basic.vert b/shader/dualTwoD/basic.vert deleted file mode 100644 index 73e38b53c..000000000 --- a/shader/dualTwoD/basic.vert +++ /dev/null @@ -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; -} diff --git a/shader/dualTwoD/basicTweakZ.frag b/shader/dualTwoD/basicTweakZ.frag deleted file mode 100644 index 456dcee8d..000000000 --- a/shader/dualTwoD/basicTweakZ.frag +++ /dev/null @@ -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) ; -} diff --git a/shader/dualTwoD/basicTweakZ.vert b/shader/dualTwoD/basicTweakZ.vert deleted file mode 100644 index f7ac2c0b3..000000000 --- a/shader/dualTwoD/basicTweakZ.vert +++ /dev/null @@ -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; -} diff --git a/shader/dualTwoD/bezierQuad.frag b/shader/dualTwoD/bezierQuad.frag deleted file mode 100644 index 2edc9f57b..000000000 --- a/shader/dualTwoD/bezierQuad.frag +++ /dev/null @@ -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) ; -} diff --git a/shader/dualTwoD/bezierQuad.geom b/shader/dualTwoD/bezierQuad.geom deleted file mode 100644 index 08192de52..000000000 --- a/shader/dualTwoD/bezierQuad.geom +++ /dev/null @@ -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(); -} diff --git a/shader/dualTwoD/bezierQuad.vert b/shader/dualTwoD/bezierQuad.vert deleted file mode 100644 index 140be3f3d..000000000 --- a/shader/dualTwoD/bezierQuad.vert +++ /dev/null @@ -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 ; -} diff --git a/shader/dualTwoD/character.frag b/shader/dualTwoD/character.frag deleted file mode 100644 index 0b1665a16..000000000 --- a/shader/dualTwoD/character.frag +++ /dev/null @@ -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); -} diff --git a/shader/dualTwoD/character.geom b/shader/dualTwoD/character.geom deleted file mode 100644 index 790b13808..000000000 --- a/shader/dualTwoD/character.geom +++ /dev/null @@ -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(); -} diff --git a/shader/dualTwoD/character.vert b/shader/dualTwoD/character.vert deleted file mode 100644 index 6d6fd6d00..000000000 --- a/shader/dualTwoD/character.vert +++ /dev/null @@ -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; -} diff --git a/shader/dualTwoD/ellipse.frag b/shader/dualTwoD/ellipse.frag deleted file mode 100644 index 576a4c13c..000000000 --- a/shader/dualTwoD/ellipse.frag +++ /dev/null @@ -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); - -} diff --git a/shader/dualTwoD/ellipse.geom b/shader/dualTwoD/ellipse.geom deleted file mode 100644 index c2028c0c1..000000000 --- a/shader/dualTwoD/ellipse.geom +++ /dev/null @@ -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(); -} diff --git a/shader/dualTwoD/ellipse.vert b/shader/dualTwoD/ellipse.vert deleted file mode 100644 index 21ec496cb..000000000 --- a/shader/dualTwoD/ellipse.vert +++ /dev/null @@ -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); -} diff --git a/src/Dodge/Render.hs b/src/Dodge/Render.hs index 32dcf73ac..dcece42f7 100644 --- a/src/Dodge/Render.hs +++ b/src/Dodge/Render.hs @@ -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))) diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index d00c52c07..fddbb0478 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -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 diff --git a/src/Shader/Bind.hs b/src/Shader/Bind.hs index 81d529300..1ad6b1bec 100644 --- a/src/Shader/Bind.hs +++ b/src/Shader/Bind.hs @@ -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 diff --git a/src/Shader/Compile.hs b/src/Shader/Compile.hs index 17f990b28..a76284e7c 100644 --- a/src/Shader/Compile.hs +++ b/src/Shader/Compile.hs @@ -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 diff --git a/tags b/tags index e392761a2..5f479643d 100644 --- a/tags +++ b/tags @@ -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