Refactor shaders, vbos and vaos

This commit is contained in:
2023-03-14 20:24:08 +00:00
parent 378af69ca5
commit ed0da4bf1d
11 changed files with 147 additions and 101 deletions
+7 -7
View File
@@ -88,9 +88,9 @@ doDrawing' win pdata u = do
)
-- bind wall points, silhouette data, surface geometry
bindShaderLayers shadV layerCounts
uncurry bindShaderBuffers $
uncurry (zipWithM_ bufferPokedVBO) $
unzip
[ ((pdata ^. vboWalls), nWalls)
[ (pdata ^. vboWalls, nWalls)
, (_vboShapes pdata, nShapeVs)
, (pdata ^. vboWindows, nWins)
, (snd $ _textureArrayShader pdata, nFls)
@@ -121,7 +121,7 @@ doDrawing' win pdata u = do
glUseProgram (pdata ^. lightingWallShadShader . shadName)
glUniform3f (pdata ^?! lightingWallShadShader . shadUnis' . ix 0) vfx vfy 20
glUniform1f (pdata ^?! lightingWallShadShader . shadUnis' . ix 1) 100
glBindVertexArray $ pdata ^. lightingWallShadShader . shadVAO' . vaoName
glBindVertexArray $ pdata ^. lightingWallShadShader . shadVAO . vaoName
unless (debugOn Remove_LOS cfig) $
glDrawArrays
(marshalEPrimitiveMode $ pdata ^. lightingWallShadShader . shadPrim')
@@ -136,10 +136,10 @@ doDrawing' win pdata u = do
renderLayer BottomLayer shadV layerCounts
--draw object shapes onto base buffer
let fs = _shapeShader pdata
glUseProgram (_shadName $ fst fs)
glBindVertexArray $ fs ^. _1 . shadVAO' . vaoName
glUseProgram (_shadName $ fs)
glBindVertexArray $ fs ^. shadVAO . vaoName
glDrawElements
(marshalEPrimitiveMode $ _shadPrim' $ fst fs)
(marshalEPrimitiveMode $ _shadPrim' $ fs)
(fromIntegral nIndices)
GL_UNSIGNED_SHORT
nullPtr
@@ -260,7 +260,7 @@ doDrawing' win pdata u = do
let bindDrawDist :: Distortion -> IO ()
bindDrawDist (RadialDistortion (V2 a b) (V2 c d) (V2 e f) g) = do
pokeArray (shadVBOptr $ _barrelShader pdata) [a, b, c, d, e, f, g]
bindShaderBuffers [snd $ _barrelShader pdata] [1]
bufferPokedVBO (snd $ _barrelShader pdata) 1
drawShader (fst $ _barrelShader pdata) 1
fboList =
take (length rds - 1) (concat (repeat [fst $ _fbo2 pdata, fst $ _fbo3 pdata]))
+5 -5
View File
@@ -6,14 +6,14 @@ module Dodge.Render.Shadow where
import Control.Lens
import Data.Preload.Render
import qualified Data.Vector as V
import qualified Data.Vector.Fusion.Stream.Monadic as VFSM
--import qualified Data.Vector.Fusion.Stream.Monadic as VFSM
import Foreign
import Geometry
import Graphics.GL.Core45
--import Graphics.GL.Core45
import Linear.V3 (cross)
import Shader.Data
import Shader.ExtraPrimitive
import Shader.Parameters
--import Shader.Data
--import Shader.ExtraPrimitive
--import Shader.Parameters
import Shape.Data
drawCPUShadows :: RenderData -> Shape -> Point3 -> Float -> IO ()