Buggy (but fastish) merge of shadows into shapes

This commit is contained in:
2021-09-21 10:09:40 +01:00
parent e98ada22fd
commit 8854b195cc
3 changed files with 54 additions and 45 deletions
+17 -10
View File
@@ -99,15 +99,12 @@ preloadRender = do
bindBuffer ElementArrayBuffer $= Just shEBOname
let shPosColVAO = VAO { _vao = shPosColVAOname, _vaoVBO = shVBO }
shPosVAO = VAO { _vao = shPosVAOname, _vaoVBO = shVBO }
-- lighting shaders
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] EPoints
>>= addUniforms ["lightPos"]
lightingCapShad
<- makeShader "lighting/cap" [vert,geom,frag] [3] ETriangles
>>= addUniforms ["lightPos"]
lightingLineShadowShad
<- makeShader "lighting/lineShadow" [vert,geom,frag] [3] ELinesAdjacency
>>= addUniforms ["lightPos"]
--setup silhouette edge VAO
shEdgeVAOname <- genObjectName
bindVertexArrayObject $= Just shEdgeVAOname
bindBuffer ArrayBuffer $= Just shVBOname
setupVertexAttribPointer 0 3 7 0
--setup ebo for silhouette edges
silEBOname <- genObjectName
silEBOptr <- mallocArray numDrawableElements
-- it may be important to bind this while the correct VAO is bound
@@ -118,6 +115,16 @@ preloadRender = do
, StreamDraw
)
let silEBO = EBO {_ebo = silEBOname, _eboPtr = silEBOptr}
shEdgeVAO = VAO { _vao = shEdgeVAOname, _vaoVBO = shVBO }
-- lighting shaders
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] EPoints
>>= addUniforms ["lightPos"]
lightingCapShad
<- makeShader "lighting/cap" [vert,geom,frag] [3] ETriangles
>>= addUniforms ["lightPos"]
lightingLineShadowShad
<- makeShader "lighting/lineShadow" [vert,geom,frag] [3] ELinesAdjacency
>>= addUniforms ["lightPos"]
-- 2D draw shaders
bslist <- makeShader "dualTwoD/basic" [vert,frag] [3,4] ETriangles
bslista <- makeShader "dualTwoD/basic" [vert,frag] [3,4] ETriangles
@@ -194,7 +201,7 @@ preloadRender = do
, _shapeEBO = shEBO
, _silhouetteEBO = silEBO
, _lightingCapShader = lightingCapShad { _shadVAO = shPosVAO }
, _lightingLineShadowShader = lightingLineShadowShad
, _lightingLineShadowShader = lightingLineShadowShad {_shadVAO = shEdgeVAO}
, _lightingOccludeShader = wsShad {_shadVAO = wpVAO}
, _wallBlankShader = wlBlank { _shadVAO = wpColVAO }
, _wallTextureShader = wlTexture { _shadVAO = wpColVAO }