Refactor light source and wall shadow shaders

This commit is contained in:
2021-03-11 01:16:42 +01:00
parent e2c35b21bc
commit 6c378659b2
4 changed files with 83 additions and 109 deletions
+15 -4
View File
@@ -15,14 +15,17 @@ import Control.Lens
--import Control.Monad
import Foreign
import Shader
import Geometry (Point2)
data RenderData = RenderData
{ _textures :: [TextureObject]
, _backShader :: (Program, [UniformLocation])
, _wallShadowShader :: (Program, [UniformLocation])
, _lightmapCircleShader :: (Program, [UniformLocation])
-- , _lightmapCircleShader :: (Program, [UniformLocation])
, _lightSourceShader :: FullShader (Float,Float,Float,Float)
, _wlShadShader :: FullShader (Point2,Point2,Point2,Point2)
, _listShaders :: [FullShader RenderType]
, _backVAO :: VAO
, _wallVAO :: VAO
@@ -56,14 +59,20 @@ vert = VertexShader
geom = GeometryShader
frag = FragmentShader
pokeWPStrat :: (Point2,Point2,Point2,Point2) -> [[[Float]]]
pokeWPStrat ((x,y),(z,w),(a,b),(c,d)) = [[[x,y,z,w],[a,b,c,d]]]
preloadRender :: IO RenderData
preloadRender = do
-- compile shader programs
lsShad <- makeShader "lightmapCircle" [vert,geom,frag] [(0,4)] Points (return . return . flat4)
fcs <- makeSourcedShader "lightmapCircle" [VertexShader,GeometryShader,FragmentShader]
-- fcs <- makeSourcedShader "lightmapCircle" [VertexShader,GeometryShader,FragmentShader]
bgs <- makeSourcedShader "background" [VertexShader,GeometryShader,FragmentShader]
wss <- makeSourcedShader "wallShadow" [VertexShader,GeometryShader,FragmentShader]
wsShad <- makeShaderCustomUnis "wallShadow" [vert,geom,frag] [(0,4),(1,4)] Points pokeWPStrat
["lightPos"]
wssLightPosUniLoc <- GL.uniformLocation (fst wss) "lightPos"
bslist <- makeShader "basic" [vert,frag] [(0,3),(1,4)] Triangles pokeTriStrat
@@ -103,7 +112,7 @@ preloadRender = do
return $ RenderData
{ _textures = [dirttex,dirttex]
, _listShaders = [bslist,lslist,cslist,aslist,eslist]
, _lightmapCircleShader = fcs
-- , _lightmapCircleShader = fcs
, _backShader = bgs
, _wallShadowShader = wss
, _backVAO = backgroundvao
@@ -112,6 +121,8 @@ preloadRender = do
, _dummyVBO = dummyvbo
, _dummyPtr = dummyptr
, _wssLightPos = wssLightPosUniLoc
, _lightSourceShader = lsShad
, _wlShadShader = wsShad
}
vaoPointers :: VAO -> [Ptr Float]