Cleanup: remove uniforms from shader datatype

This commit is contained in:
2023-03-20 01:19:10 +00:00
parent 33f31aa385
commit 32ecf46343
17 changed files with 24 additions and 99 deletions
+4 -2
View File
@@ -127,8 +127,10 @@ doDrawing' win pdata u = do
glDepthFunc GL_LESS
-- draw wall occlusions from the camera's point of view
glUseProgram (pdata ^. lightingWallShadShader . shadName)
glUniform3f (pdata ^?! lightingWallShadShader . shadUnis . ix 0) vfx vfy 20
glUniform1f (pdata ^?! lightingWallShadShader . shadUnis . ix 1) 1000
glProgramUniform3f (pdata ^. lightingWallShadShader . shadName)
0 vfx vfy 20
glProgramUniform1f (pdata ^. lightingWallShadShader . shadName)
1 1000
glBindVertexArray $ pdata ^. lightingWallShadShader . shadVAO . vaoName
unless (debugOn Remove_LOS cfig) $
glDrawArrays
+2 -1
View File
@@ -13,6 +13,7 @@ import Dodge.Wall.Draw
import Geometry
import ShapePicture
-- not necessary: should just poke all walls to their wanted places
wallsToDraw :: World -> ([((Point2, Point2), Point4)], [((Point2, Point2), Point4)], SPic, [Wall])
wallsToDraw w = L.fold
( (,,,)
@@ -22,9 +23,9 @@ wallsToDraw w = L.fold
<*> L.prefilter wlOpaqueDraw L.list
)
(w ^. cWorld . lWorld . walls)
-- (wlsFromIXs w $ zonesExtract (w ^. wlZoning) $ zoneOfSight wlZoneSize cam)
where
f wl = (_wlLine wl, _wlColor wl)
-- (wlsFromIXs w $ zonesExtract (w ^. wlZoning) $ zoneOfSight wlZoneSize cam)
-- cam = w ^. cWorld . camPos
--wallsToDraw
-4
View File
@@ -111,13 +111,10 @@ preloadRender = do
-- lighting shaders
lightingWallShadShad <-
makeShaderUsingVAO "lighting/wallShadow" [vert, geom, frag] EPoints wpVAO
>>= addUniforms ["lightPos","rad"]
lightingCapShad <-
makeShaderUsingVAO "lighting/cap" [vert, geom] ETriangles shPosVAO
>>= addUniforms ["lightPos"]
lightingLineShadowShad <-
makeShaderUsingVAO "lighting/lineShadow" [vert, geom] ELinesAdjacency shEdgeVAO
>>= addUniforms ["lightPos", "radiusUniform"]
shadowedgeshader <-
makeShaderUsingVAO "shadow/edge" [vert, geom] ELinesAdjacency shEdgeVAO
@@ -158,7 +155,6 @@ preloadRender = do
grayscaleShad <- makeShaderUsingVAO "texture/grayscale" [vert, frag] ETriangleStrip fsshadvao
lightingTextureShad <-
makeShaderUsingVAO "lighting/texture" [vert, frag] ETriangleStrip fsshadvao
>>= addUniforms ["lightPos", "lumRad"]
barrelShad <- makeShader "texture/barrel" [vert, geom, frag] [2, 2, 2, 1] EPoints
-- blank wallShader
wallBlankShad <- makeShaderUsingVAO "wall/blank" [vert, geom, frag] EPoints wpColVAO
+9 -11
View File
@@ -11,8 +11,6 @@ import Control.Lens
import Control.Monad
import Control.Monad.Primitive
import Data.Preload.Render
import qualified Data.Vector as V
--import Control.Monad
import qualified Data.Vector.Fusion.Stream.Monadic as VFSM
import qualified Data.Vector.Mutable as MV
import qualified Data.Vector.Unboxed.Mutable as UMV
@@ -88,8 +86,8 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype toPos dra
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
glStencilFunc GL_EQUAL 0 255
glUseProgram (ltextShad ^. shadName)
glUniform3f (_shadUnis ltextShad V.! 0) x y z
glUniform4f (_shadUnis ltextShad V.! 1) r g b rad
glUniform3f 0 x y z
glUniform4f 1 r g b rad
glBindVertexArray $ ltextShad ^. shadVAO . vaoName
glDrawArrays
(marshalEPrimitiveMode (_shadPrim' ltextShad))
@@ -152,8 +150,8 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype toPos dra
glStencilFunc GL_ALWAYS 0 255
--draw wall shadows
glUseProgram (_shadName lwallShad)
glUniform3f (_shadUnis lwallShad V.! 0) x y z
glUniform1f (_shadUnis lwallShad V.! 1) rad
glUniform3f 0 x y z
glUniform1f 1 rad
glBindVertexArray $ lwallShad ^. shadVAO . vaoName -- Just (_vao $ _shadVAO lwallShad)
glDrawArrays
(marshalEPrimitiveMode $ _shadPrim' lwallShad)
@@ -164,8 +162,8 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype toPos dra
--draw silhouette shadows
glEnable GL_DEPTH_CLAMP
glUseProgram (_shadName llinesShad)
glUniform3f (_shadUnis llinesShad V.! 0) x y z
glUniform1f (_shadUnis llinesShad V.! 1) rad
glUniform3f 0 x y z
glUniform1f 1 rad
glBindVertexArray (_vaoName $ _shadVAO llinesShad)
glDrawElements
(marshalEPrimitiveMode $ _shadPrim' llinesShad)
@@ -177,7 +175,7 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype toPos dra
glCullFace GL_BACK
glCullFace GL_FRONT
glUseProgram (_shadName lcapShad)
glUniform3f (_shadUnis lcapShad V.! 0) x y z
glUniform3f 0 x y z
glBindVertexArray $ lcapShad ^. shadVAO . vaoName --Just (_vao $ _shadVAO lcapShad)
glDrawElements
(marshalEPrimitiveMode $ _shadPrim' lcapShad)
@@ -196,8 +194,8 @@ createLightMap cfig pdata lightPoints nWalls nSils nCaps shadsdrawtype toPos dra
glColorMask GL_TRUE GL_TRUE GL_TRUE GL_TRUE
glStencilFunc GL_EQUAL 0 255
glUseProgram (ltextShad ^. shadName) --Just (_shadProg ltextShad)
glUniform3f (_shadUnis ltextShad V.! 0) x y z
glUniform4f (_shadUnis ltextShad V.! 1) r g b rad
glUniform3f 0 x y z
glUniform4f 1 r g b rad
--bindVertexArrayObject $= ltextShad ^? shadVAO' . vaoName -- Just (_vao $ _shadVAO ltextShad)
glBindVertexArray $ ltextShad ^. shadVAO . vaoName -- Just (_vao $ _shadVAO ltextShad)
glDrawArrays
-4
View File
@@ -24,14 +24,10 @@ drawShaderLay :: Int -> UMV.MVector (PrimState IO) Int -> Int -> (FullShader,VBO
{-# INLINE drawShaderLay #-}
drawShaderLay l countsVector shadIn fs = do
i <- UMV.read countsVector shadIn
--currentProgram $= Just (_shadProg' fs)
glUseProgram (_shadName $ fst fs)
glBindVertexArray $ fs ^. _1 . shadVAO . vaoName
--bindVertexArrayObject $= Just (_vaoName $ _shadVAO' fs)
case _shadTex' $ fst fs of
Just ShaderTexture{_textureObject = txo} --, _textureTarget = tt}
-- -> textureBinding Texture2D $= Just txo
-- -> glBindTexture tt txo
-> glBindTextureUnit 0 txo
_ -> return ()
glDrawArrays
-13
View File
@@ -2,7 +2,6 @@ module Shader.AuxAddition
( addSamplerTexture2D
, vaddTextureNoFilter
, addTextureArray
, addUniforms
, initTexture2D
, initTexture2DArray
, tilesToLine -- ^ kept in case it is needed in the future
@@ -10,10 +9,6 @@ module Shader.AuxAddition
import Data.Preload.Render
import Unsafe.Coerce
import Shader.Data
import Control.Monad
import qualified Data.ByteString as BS
import Data.ByteString.Char8 (pack)
import qualified Data.Vector as V
import Data.List.Extra
import Codec.Picture
import qualified Data.Vector.Storable as VS
@@ -142,11 +137,3 @@ tilesToLine
-> [a]
-> [a]
tilesToLine n w = concat . concat . transpose . chunksOf n . chunksOf w
addUniforms :: [String] -> FullShader -> IO FullShader
addUniforms uniStrings shad = do foldM addUniform shad uniStrings
addUniform :: FullShader -> String -> IO FullShader
addUniform shad unistr = BS.useAsCString (pack unistr) $ \cstr -> do
loc <- glGetUniformLocation (_shadName shad) cstr
return $ shad & shadUnis %~ (V.++ V.fromList [loc])
-5
View File
@@ -43,7 +43,6 @@ makeShader s shaderlist sizes pm = do
, _shadVAO = vao
, _shadPrim' = pm
, _shadTex' = Nothing
, _shadUnis = mempty
}
, vbo)
@@ -67,7 +66,6 @@ makeShader4 s shaderlist sizes strd pm vbo = do
, _shadVAO = vao
, _shadPrim' = pm
, _shadTex' = Nothing
, _shadUnis = mempty
}
setupVBO :: Int -> IO VBO
@@ -108,7 +106,6 @@ makeByteStringShaderUsingVAO s shaderlist pm vao = do
, _shadVAO = vao
, _shadPrim' = pm
, _shadTex' = Nothing
, _shadUnis = mempty
}
-- | Takes the VAO from elsewhere
@@ -128,7 +125,6 @@ makeShaderUsingVAO s shaderlist pm theVAO = do
, _shadVAO = theVAO
, _shadPrim' = pm
, _shadTex' = Nothing
, _shadUnis = mempty
}
{- |
@@ -154,7 +150,6 @@ makeShaderSized s shaderlist sizes ndraw pm = do
, _shadVAO = vao
, _shadPrim' = pm
, _shadTex' = Nothing
, _shadUnis = mempty
}
, vbo)
-3
View File
@@ -28,13 +28,11 @@ module Shader.Data
, shadVAO
, shadPrim'
, shadTex'
, shadUnis
-- | Synonyms
, vert
, geom
, frag
) where
import Data.Vector (Vector)
import Graphics.GL.Core45
import Foreign
import Control.Lens
@@ -44,7 +42,6 @@ data FullShader = FullShader
, _shadVAO :: VAO
, _shadPrim' :: EPrimitiveMode
, _shadTex' :: Maybe ShaderTexture
, _shadUnis :: Vector GLint
}
{- | Vertex array object: contains the reference to the object,
and its buffer targets. -}