Cleanup: remove uniforms from shader datatype
This commit is contained in:
+4
-2
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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])
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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. -}
|
||||
|
||||
Reference in New Issue
Block a user