Start cleanup of shader records

This commit is contained in:
2025-11-12 21:37:28 +00:00
parent be64e786f9
commit cdf998a1e2
5 changed files with 55 additions and 61 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ import Graphics.GL.Core45
import Shader.Data
data RenderData = RenderData
{ _lightingWallShadShader :: Shader
{ _shadWallShader :: GLuint
, _lightingLineShadowShader :: Shader
, _lightingCapShader :: Shader
, _lightingTextureShader :: Shader
-2
View File
@@ -122,7 +122,6 @@ doDrawing' win pdata u = do
glCullFace GL_BACK
unless (debugOn Remove_LOS cfig) $ do
glUseProgram (pdata ^. ceilingStencilShader . shaderUINT)
-- glBindVertexArray $ pdata ^. ceilingStencilShader . shaderVAO . vaoName
glBindVertexArray $ pdata ^. dummyVAO . vaoName
glEnable GL_DEPTH_CLAMP
glDrawArrays
@@ -368,7 +367,6 @@ doDrawing' win pdata u = do
glUseProgram $ pdata ^. windowPullShader . shaderUINT
glBindVertexArray $ pdata ^. dummyVAO . vaoName
glDrawArrays GL_TRIANGLES 0 (fromIntegral nWins * 6)
--drawShader (_windowShader pdata) nWins
glDisable GL_DEPTH_CLAMP
glDisable GL_CULL_FACE
glInvalidateBufferData (pdata ^. vboShapes . vboName)
+6 -17
View File
@@ -95,8 +95,7 @@ preloadRender = do
cloudshader <- makeShaderUsingVAO "pull/cloud" [vert, frag] pmTriangles (VAO dummyvao)
putStrLn "Setup lighting shaders"
lightingWallShadShad <-
makeShaderUsingVAO "lighting/wallShadow" [vert] pmTriangles (VAO dummyvao)
shadwallshader <- makeSourcedShader "lighting/wallShadow" [vert]
lightingCapShad <-
makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao)
lightingLineShadowShad <-
@@ -199,10 +198,9 @@ preloadRender = do
, _silhouetteEBO = UintBO ieshapessbo ieptr
, _lightingCapShader = lightingCapShad
, _lightingLineShadowShader = lightingLineShadowShad
, _lightingWallShadShader = lightingWallShadShad
, _shadWallShader = shadwallshader
, _ceilingStencilShader = ceilingstencilshader
, -- , _windowShader = windowshader
_windowPullShader = winpull
, _windowPullShader = winpull
, _pullWallShader = wallpull
, _fullscreenShader = fsShad
, _transparencyCompShader = transcompshader
@@ -224,25 +222,16 @@ preloadRender = do
, _fboPos = fboPosName
, _rboBaseBloom = rboBaseBloomName
, _matUBO = theUBO
, -- , _winSSBO = winssbo
-- , _wallSSBO = wallssbo
-- , _shapeSSBO = shapessbo
-- , _ishapeSSBO = ishapessbo
-- , _ieshapeSSBO = ieshapessbo
-- , _lightsUBO = lightsubo
-- , _vboWindows = winvbo
_vboShapes = shVBO
, _vboShapes = shVBO
, _floorVBO = floorvbo
, _floorShader = floorshader
, _chasmVBO = chasmvbo
, _chasmShader = chasmshader
, _wallVBO = wallvbo
, _winVBO = winvbo
, -- , _wallShader = wallshader
_cloudVBO = cloudvbo
, _cloudVBO = cloudvbo
, _cloudShader = cloudshader
, -- , _cloudEBO = cloudebo
_screenTextureVAO = screentexturevao
, _screenTextureVAO = screentexturevao
, _dummyVAO = VAO dummyvao
}
+3 -6
View File
@@ -133,7 +133,7 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li
glBindFramebuffer GL_FRAMEBUFFER $ pdata ^. fboLighting . _1 . unFBO
let llinesShad = _lightingLineShadowShader pdata
lcapShad = _lightingCapShader pdata
lwallShad = _lightingWallShadShader pdata
shadwall = _shadWallShader pdata
ltextShad = _lightingTextureShader pdata
-- we assume that the renderbuffer's depth has been correctly set elsewhere
-- we will not be changing that here
@@ -173,15 +173,12 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li
-- the first bit has been used to stencil out "ceilings" under which we never draw
glStencilFunc GL_NOTEQUAL 128 255
--draw wall shadows
glUseProgram (_shaderUINT lwallShad)
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
(_unPrimitiveMode $ _shaderPrimitive lwallShad)
0
(nWalls * 18)
glDrawArrays GL_TRIANGLES 0 (nWalls * 18)
case shadrendertype of
GeoObjShads -> do
--draw silhouette shadows
+19 -9
View File
@@ -9,19 +9,20 @@ module Shader.Compile (
setupVAOUsingVBO,
setupEBO,
toFloatVAs,
setupStaticVBOVAO
setupStaticVBOVAO,
makeSourcedShader,
) where
import Foreign.C.Types
import Graphics.GL.Types
import Control.Lens
import Control.Monad
import qualified Data.ByteString as BS
import qualified Data.ByteString.Unsafe as BU
import Foreign
import Foreign.C.String
import Foreign.C.Types
import GLHelp
import Graphics.GL.Core45
import Graphics.GL.Types
import Shader.Data
import Shader.Parameters
@@ -107,7 +108,8 @@ setupStaticVBOVAO vas vdata = withArrayLen vdata $ \i ptr -> do
(CPtrdiff (fromIntegral (i * sizeOf (head vdata))))
ptr
0
let vbo = VBO
let vbo =
VBO
{ _vboName = vboname
, _vboPtr = nullPtr
, _vboVertexBytes = vasTightStride vas
@@ -185,7 +187,10 @@ setupVAOUsingVBO vas vbo = do
let strd = vbo ^. vboVertexBytes
vaoname <- mglCreate glCreateVertexArrays
glBindVertexArray vaoname
setupVertexAttribs (vbo ^. vboName) vaoname vas
setupVertexAttribs
(vbo ^. vboName)
vaoname
vas
(fromIntegral strd)
return VAO{_vaoName = vaoname}
@@ -216,8 +221,9 @@ toFloatVAs :: [Int] -> [VertexAttribute]
toFloatVAs = go 0
where
go _ [] = []
go x (i:is) = VertexAttribute (fromIntegral i) GL_FLOAT GL_FALSE x
: go (x + fromIntegral floatSize*fromIntegral i) is
go x (i : is) =
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
@@ -233,7 +239,9 @@ setupVertexAttribPointer ::
IO ()
setupVertexAttribPointer vao loc va = do
glEnableVertexArrayAttrib vao loc'
glVertexArrayAttribFormat vao loc'
glVertexArrayAttribFormat
vao
loc'
(va ^. vaCount)
(va ^. vaType)
(va ^. vaNormalize)
@@ -304,7 +312,9 @@ vasTightStride = go 0
go x [] = x
go x (v : vs)
| x /= fromIntegral (v ^. vaOffset) = error "vasTightStride: vertex offset incorrect"
| otherwise = go (x + fromIntegral (v ^. vaCount * fromIntegral (attribSize (v ^. vaType))))
| otherwise =
go
(x + fromIntegral (v ^. vaCount * fromIntegral (attribSize (v ^. vaType))))
vs
attribSize :: GLenum -> Int