Performance improvements, combine cap and geometry buffer

This commit is contained in:
2021-09-18 19:48:35 +01:00
parent 80aa67015c
commit c605ac74ff
8 changed files with 48 additions and 20 deletions
+9 -10
View File
@@ -59,17 +59,19 @@ doDrawing pdata w = do
nSils <- pokePoint3s (shadVBOptr $ _lightingLineShadowShader pdata)
$ VS.fromList
$ (shEList $ worldShape w)
++ (_foregroundEdgeVerx w)
-- poke foreground geometry for caps
nCaps <- pokePoint3s (shadVBOptr $ _lightingCapShader pdata)
$ VS.fromList
$ concatMap polyToGeoRender (foregroundPics w)
++ (fmap _svPos (shVList $ worldShape w))
-- -- poke foreground geometry for caps
-- nCaps <- pokePoint3s (shadVBOptr $ _lightingCapShader pdata)
-- $ VS.fromList
-- (fmap _svPos (shVList $ worldShape w))
numShapeVs <- pokeShapeVs (_vboPtr $ _vaoVBO $ _shadVAO $ _shapeShader pdata)
$ VS.fromList $ shVList $ worldShape w
let nCaps = numShapeVs
-- bind wall points, silhouette data, surface geometry
uncurry bindShaderBuffers $ unzip
[ ( _wallTextureShader pdata, nWalls)
, (_lightingLineShadowShader pdata, nSils)
, (_lightingCapShader pdata, nCaps)
-- , (_lightingCapShader pdata, nCaps)
, (_shapeShader pdata, numShapeVs)
]
-- set the coordinate uniform ready for drawing elements using world coordinates
bufferUBO $ perspectiveMatrixb rot camzoom trans wins viewFroms
@@ -93,9 +95,6 @@ doDrawing pdata w = do
pokeBindFoldableLayer shadV layerCounts $ worldPictures w
renderLayer 0 shadV layerCounts
numShapeVs <- pokeShapeVs (_vboPtr $ _vaoVBO $ _shadVAO $ _shapeShader pdata)
$ VS.fromList $ shVList $ worldShape w
bindShaderBuffers [_shapeShader pdata] [numShapeVs]
drawShader (_shapeShader pdata) numShapeVs
--draw floor onto base buffer