Refactor shader creation
This commit is contained in:
+18
-8
@@ -21,6 +21,7 @@ data RenderData = RenderData
|
||||
{ _lightSourceShader :: FullShader (Float,Float,Float,Float)
|
||||
, _wallShadowShader :: FullShader (Point2,Point2)
|
||||
, _wallLightShader :: FullShader (Point2,Point2)
|
||||
, _wallFaceShader :: FullShader (Point2,Point2,Point4)
|
||||
, _backgroundShader :: FullShader (Point2,Point2,Point2,Point2)
|
||||
, _fullscreenShader :: FullShader ()
|
||||
, _listShaders :: [FullShader RenderType]
|
||||
@@ -35,11 +36,11 @@ preloadRender = do
|
||||
-- lighting shaders
|
||||
lsShad <- makeShader "lighting/lightmapCircle" [vert,geom,frag] [(0,4)] Points
|
||||
(return . return . flat4)
|
||||
wsShad <- makeShaderCustomUnis "lighting/wallShadow" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||
["lightPos","perpMat","facesToDraw"]
|
||||
wsShad <- makeShader "lighting/wallShadow" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||
>>= addUniforms ["lightPos","perpMat","facesToDraw"]
|
||||
wlLightShad
|
||||
<- makeShaderCustomUnis "lighting/lightmapWall" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||
["lightPos","perpMat","radLum"]
|
||||
<- makeShader "lighting/lightmapWall" [vert,geom,frag] [(0,4)] Points pokeWPStrat
|
||||
>>= addUniforms ["lightPos","perpMat","radLum"]
|
||||
|
||||
-- 2D draw shaders
|
||||
bslist <- makeShader "twoD/basic" [vert,frag] [(0,3),(1,4)] Triangles pokeTriStrat
|
||||
@@ -48,9 +49,9 @@ preloadRender = do
|
||||
eslist <- makeShader "twoD/ellipse" [vert,geom,frag] [(0,3),(1,4)] Triangles pokeEllStrat
|
||||
bezierQuadShader <- makeShader
|
||||
"twoD/bezierQuad" [vert,frag] [(0,3),(1,4),(2,4)] TriangleStrip pokeBezQStrat
|
||||
cslist <- makeTextureShader "twoD/character" [vert,geom,frag]
|
||||
cslist <- makeShader "twoD/character" [vert,geom,frag]
|
||||
[(0,3),(1,4),(2,3)] Points pokeCharStrat
|
||||
"data/texture/charMap.png"
|
||||
>>= addTexture "data/texture/charMap.png"
|
||||
|
||||
-- fullscreen shader
|
||||
fsShad <- makeShader "fullscreen" [vert,frag] [(0,2),(1,2)] TriangleStrip
|
||||
@@ -63,8 +64,13 @@ preloadRender = do
|
||||
n <- F.foldM (pokeShader fsShad) [()] -- fix fullscreen vertex positions now
|
||||
|
||||
-- background shader
|
||||
bgShad <- makeTextureShader "background" [vert,geom,frag] [(0,4),(1,2)] Points pokeBGStrat
|
||||
"data/texture/smudgedDirt.png"
|
||||
bgShad <- makeShader "background" [vert,geom,frag] [(0,4),(1,2)] Points pokeBGStrat
|
||||
>>= addTexture "data/texture/smudgedDirt.png"
|
||||
|
||||
-- wallShader
|
||||
wlShad <- makeShader "wallFace" [vert,geom,frag] [(0,4),(1,4)] Points pokeWPColStrat
|
||||
>>= addTexture "data/texture/smudgedDirt.png"
|
||||
>>= addUniforms ["perpMat"]
|
||||
|
||||
-- framebuffer for lighting
|
||||
(fbo,fboTO) <- setupFramebuffer
|
||||
@@ -77,6 +83,7 @@ preloadRender = do
|
||||
, _lightSourceShader = lsShad
|
||||
, _wallShadowShader = wsShad
|
||||
, _wallLightShader = wlLightShad
|
||||
, _wallFaceShader = wlShad
|
||||
, _backgroundShader = bgShad
|
||||
, _fullscreenShader = fsShad
|
||||
, _spareFBO = fbo
|
||||
@@ -148,6 +155,9 @@ frag = FragmentShader
|
||||
pokeWPStrat :: (Point2,Point2) -> [[[Float]]]
|
||||
pokeWPStrat ((x,y),(z,w)) = [[[x,y,z,w]]]
|
||||
|
||||
pokeWPColStrat :: (Point2,Point2,Point4) -> [[[Float]]]
|
||||
pokeWPColStrat ((x,y),(z,w),(r,g,b,a)) = [[[x,y,z,w],[r,g,b,a]]]
|
||||
|
||||
pokeBGStrat :: a -> [[[Float]]]
|
||||
pokeBGStrat = const []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user