Start cleanup of shader records
This commit is contained in:
@@ -11,7 +11,7 @@ import Graphics.GL.Core45
|
||||
import Shader.Data
|
||||
|
||||
data RenderData = RenderData
|
||||
{ _lightingWallShadShader :: Shader
|
||||
{ _shadWallShader :: GLuint
|
||||
, _lightingLineShadowShader :: Shader
|
||||
, _lightingCapShader :: Shader
|
||||
, _lightingTextureShader :: Shader
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user