Simplify shader records

This commit is contained in:
2025-11-13 14:57:46 +00:00
parent 56aa8c6697
commit 0ea7af4bdd
4 changed files with 19 additions and 52 deletions
+5 -6
View File
@@ -12,10 +12,10 @@ import Shader.Data
data RenderData = RenderData data RenderData = RenderData
{ _shadWallShader :: GLuint { _shadWallShader :: GLuint
, _lightingLineShadowShader :: Shader , _lightingLineShadowShader :: GLuint
, _lightingCapShader :: Shader , _lightingCapShader :: GLuint
, _lightingTextureShader :: Shader , _lightingTextureShader :: Shader
, _ceilingStencilShader :: Shader , _ceilingStencilShader :: GLuint
, _alphaDivideShader :: Shader , _alphaDivideShader :: Shader
-- , _windowShader :: Shader -- , _windowShader :: Shader
, _windowPullShader :: GLuint , _windowPullShader :: GLuint
@@ -26,7 +26,7 @@ data RenderData = RenderData
, _colorBlurShader :: Shader , _colorBlurShader :: Shader
, _barrelShader :: (Shader,VBO) , _barrelShader :: (Shader,VBO)
, _grayscaleShader :: Shader , _grayscaleShader :: Shader
, _shapeShader :: Shader , _shapeShader :: GLuint
, _shapeEBO :: UintBO , _shapeEBO :: UintBO
, _silhouetteEBO :: UintBO , _silhouetteEBO :: UintBO
, _pictureShaders :: MV.MVector (PrimState IO) (Shader,VBO) , _pictureShaders :: MV.MVector (PrimState IO) (Shader,VBO)
@@ -55,8 +55,7 @@ data RenderData = RenderData
, _winVBO :: VBO , _winVBO :: VBO
, _wallVBO :: VBO , _wallVBO :: VBO
, _cloudVBO :: VBO , _cloudVBO :: VBO
, _cloudShader :: Shader , _cloudShader :: GLuint
-- , _cloudEBO :: UintBO
, _screenTextureVAO :: VAO , _screenTextureVAO :: VAO
, _dummyVAO :: VAO , _dummyVAO :: VAO
} }
+6 -24
View File
@@ -121,13 +121,10 @@ doDrawing' win pdata u = do
glEnable GL_CULL_FACE glEnable GL_CULL_FACE
glCullFace GL_BACK glCullFace GL_BACK
unless (debugOn Remove_LOS cfig) $ do unless (debugOn Remove_LOS cfig) $ do
glUseProgram (pdata ^. ceilingStencilShader . shaderUINT) glUseProgram (pdata ^. ceilingStencilShader)
glBindVertexArray $ pdata ^. dummyVAO . vaoName glBindVertexArray $ pdata ^. dummyVAO . vaoName
glEnable GL_DEPTH_CLAMP glEnable GL_DEPTH_CLAMP
glDrawArrays glDrawArrays GL_TRIANGLES 0 (fromIntegral (trueNWalls * 6))
(_unPrimitiveMode $ pdata ^. ceilingStencilShader . shaderPrimitive)
0
(fromIntegral (trueNWalls * 6))
glDisable GL_DEPTH_CLAMP glDisable GL_DEPTH_CLAMP
glStencilMask 127 -- to alter last seven bits glStencilMask 127 -- to alter last seven bits
glStencilOp GL_KEEP GL_KEEP GL_KEEP glStencilOp GL_KEEP GL_KEEP GL_KEEP
@@ -152,7 +149,7 @@ doDrawing' win pdata u = do
glDrawArrays GL_TRIANGLES 0 (fromIntegral trueNWalls * 6) glDrawArrays GL_TRIANGLES 0 (fromIntegral trueNWalls * 6)
--draw object shapes onto base buffer --draw object shapes onto base buffer
let fs = _shapeShader pdata let fs = _shapeShader pdata
glUseProgram (_shaderUINT fs) glUseProgram fs
glDrawArrays GL_TRIANGLES 0 (fromIntegral nIndices) glDrawArrays GL_TRIANGLES 0 (fromIntegral nIndices)
-- draw chasm shader blocking floor -- draw chasm shader blocking floor
glUseProgram (pdata ^. chasmShader . shaderUINT) glUseProgram (pdata ^. chasmShader . shaderUINT)
@@ -226,15 +223,8 @@ doDrawing' win pdata u = do
-- rethought, either do another pass and write just the depth or even remove -- rethought, either do another pass and write just the depth or even remove
-- the layer entirely -- the layer entirely
glBlendFuncSeparate GL_ZERO GL_ONE GL_CONSTANT_ALPHA GL_ONE_MINUS_SRC_ALPHA glBlendFuncSeparate GL_ZERO GL_ONE GL_CONSTANT_ALPHA GL_ONE_MINUS_SRC_ALPHA
glUseProgram (pdata ^. cloudShader . shaderUINT) glUseProgram (pdata ^. cloudShader)
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6) glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
--glDrawArrays GL_TRIANGLES 0 6
-- glDrawElements
-- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
-- (fromIntegral nCloudIs)
-- GL_UNSIGNED_INT
-- nullPtr
glDepthMask GL_TRUE glDepthMask GL_TRUE
--setup downscale viewport for blurring bloom --setup downscale viewport for blurring bloom
@@ -275,15 +265,8 @@ doDrawing' win pdata u = do
(pdata ^. fboCloud . _1 . unFBO) (pdata ^. fboCloud . _1 . unFBO)
GL_COLOR GL_COLOR
0 0
glUseProgram (pdata ^. cloudShader . shaderUINT) glUseProgram (pdata ^. cloudShader)
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6) glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
--glDrawArrays GL_TRIANGLES 0 6
---- glDrawElements
---- (pdata ^. cloudShader . shaderPrimitive . unPrimitiveMode)
---- (fromIntegral nCloudIs)
---- GL_UNSIGNED_INT
---- nullPtr
-- glEnable GL_CULL_FACE -- glEnable GL_CULL_FACE
-- glEnable GL_DEPTH_CLAMP -- glEnable GL_DEPTH_CLAMP
-- glCullFace GL_BACK -- glCullFace GL_BACK
@@ -308,8 +291,7 @@ doDrawing' win pdata u = do
-- and sum the normals weighted by alpha -- and sum the normals weighted by alpha
--glBlendFunci 2 GL_SRC_ALPHA GL_ONE --glBlendFunci 2 GL_SRC_ALPHA GL_ONE
glBlendFunci 2 GL_SRC_ALPHA GL_ONE glBlendFunci 2 GL_SRC_ALPHA GL_ONE
glUseProgram (pdata ^. cloudShader . shaderUINT) glUseProgram (pdata ^. cloudShader)
glBindVertexArray $ pdata ^. cloudShader . shaderVAO . vaoName
-- glDepthMask GL_TRUE -- glDepthMask GL_TRUE
glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6) glDrawArrays GL_TRIANGLES 0 (fromIntegral nCloudVs * 6)
--glDrawArrays GL_TRIANGLES 0 6 --glDrawArrays GL_TRIANGLES 0 6
+6 -20
View File
@@ -1,9 +1,6 @@
--{-# LANGUAGE TemplateHaskell #-} --{-# LANGUAGE TemplateHaskell #-}
--{-# OPTIONS_GHC -Wno-unused-top-binds #-} --{-# OPTIONS_GHC -Wno-unused-top-binds #-}
module Preload.Render ( module Preload.Render (preloadRender) where
preloadRender,
-- cleanUpRenderPreload,
) where
import Control.Concurrent import Control.Concurrent
--import Control.Lens --import Control.Lens
@@ -95,27 +92,16 @@ preloadRender = do
dummyvao <- mglCreate glGenVertexArrays dummyvao <- mglCreate glGenVertexArrays
--winpull <- makeShaderUsingVAO "pull/window" [vert, frag] pmTriangles (VAO dummyvao)
winpull <- makeSourcedShader "pull/window" [vert, frag] winpull <- makeSourcedShader "pull/window" [vert, frag]
wallpull <- makeSourcedShader "pull/wall" [vert, frag] wallpull <- makeSourcedShader "pull/wall" [vert, frag]
shapeshader <- makeSourcedShader "shape/basic" [vert, frag]
shapeshader <- cloudshader <- makeSourcedShader "pull/cloud" [vert, frag]
makeShaderUsingVAO "shape/basic" [vert, frag] pmTriangles (VAO dummyvao)
cloudshader <- makeShaderUsingVAO "pull/cloud" [vert, frag] pmTriangles (VAO dummyvao)
putStrLn "Setup lighting shaders" putStrLn "Setup lighting shaders"
shadwallshader <- makeSourcedShader "lighting/wallShadow" [vert] shadwallshader <- makeSourcedShader "lighting/wallShadow" [vert]
lightingCapShad <- lightingCapShad <- makeSourcedShader "lighting/cap" [vert]
makeShaderUsingVAO "lighting/cap" [vert] pmTriangles (VAO dummyvao) lightingLineShadowShad <- makeSourcedShader "lighting/lineShadow" [vert]
lightingLineShadowShad <- ceilingstencilshader <- makeSourcedShader "ceiling/stencil" [vert]
makeShaderUsingVAO "lighting/lineShadow" [vert] pmTriangles (VAO dummyvao)
ceilingstencilshader <-
makeShaderUsingVAO
"ceiling/stencil"
[vert]
pmTriangles
(VAO dummyvao)
putStrLn "Setup 2D shaders" putStrLn "Setup 2D shaders"
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles
+2 -2
View File
@@ -182,12 +182,12 @@ renderShadows shadrendertype nWalls nSils nCaps positiontexture normaltexture li
GeoObjShads -> do GeoObjShads -> do
--draw silhouette shadows --draw silhouette shadows
glEnable GL_DEPTH_CLAMP glEnable GL_DEPTH_CLAMP
glUseProgram (_shaderUINT llinesShad) glUseProgram llinesShad
glDrawArrays GL_TRIANGLES 0 ((fromIntegral nSils * 6) `div` 4) glDrawArrays GL_TRIANGLES 0 ((fromIntegral nSils * 6) `div` 4)
--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_BACK glCullFace GL_BACK
glUseProgram (_shaderUINT lcapShad) glUseProgram lcapShad
-- glUniform3f 0 x y z -- glUniform3f 0 x y z
-- glUniform4f 1 r g b rad -- glUniform4f 1 r g b rad
-- glFrontFace(GL_CW) -- glFrontFace(GL_CW)