Simplify shader records
This commit is contained in:
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user