Reduce rendertype down to vertex information
This commit is contained in:
+22
-34
@@ -63,14 +63,14 @@ preloadRender = do
|
||||
<- makeShader "lighting/lineShadow" [vert,geom,frag] [3] ELinesAdjacency poke3
|
||||
>>= addUniforms ["lightPos"]
|
||||
-- 2D draw shaders
|
||||
bslist <- makeShader "twoD/basic" [vert,frag] [3,4] ETriangles pokeTriStrat
|
||||
aslist <- makeShader "twoD/arc" [vert,frag] [3,4,3] ETriangles pokeArcStrat
|
||||
eslist <- makeShader "twoD/ellipse" [vert,geom,frag] [3,4] ETriangles pokeEllStrat
|
||||
bezierQuadShader <- makeShader "twoD/bezierQuad" [vert,frag] [3,4,4] ETriangleStrip pokeBezQStrat
|
||||
cslist <- makeShader "twoD/character" [vert,frag] [3,4,2] ETriangles pokeCharStrat
|
||||
>>= addTextureNoFilter "data/texture/charMap.png"
|
||||
bslist <- makeVShader "twoD/basic" [vert,frag] [3,4] ETriangles isPolyV
|
||||
aslist <- makeVShader "twoD/arc" [vert,frag] [3,4,3] ETriangles isArcV
|
||||
eslist <- makeVShader "twoD/ellipse" [vert,geom,frag] [3,4] ETriangles isEllV
|
||||
bezierQuadShader <- makeVShader "twoD/bezierQuad" [vert,frag] [3,4,4] ETriangleStrip isBezV
|
||||
cslist <- makeVShader "twoD/character" [vert,frag] [3,4,2] ETriangles isTextV
|
||||
>>= vaddTextureNoFilter "data/texture/charMap.png"
|
||||
-- this should really be a 2d texture array
|
||||
basicTweakZShad <- makeShader "twoD/basicTweakZ" [vert,frag] [4,4] ETriangles pokeTriTweakZ
|
||||
basicTweakZShad <- makeVShader "twoD/basicTweakZ" [vert,frag] [4,4] ETriangles isPolyzV
|
||||
-- fullscreen shaders
|
||||
fullscreenAlphaHalveShad <- makeShaderSized "fullscreen/alphaHalve" [vert,frag] [2] 4 ETriangleStrip $
|
||||
const cornerListNoCoord
|
||||
@@ -208,36 +208,11 @@ minMagFilter = ((Nearest,Nothing),Nearest)
|
||||
|
||||
cleanUpRenderPreload :: RenderData -> IO ()
|
||||
cleanUpRenderPreload pd = do
|
||||
mapM_ freeShaderPointers $ _pictureShaders pd
|
||||
-- TODO fix this
|
||||
--mapM_ freeShaderPointers $ _pictureShaders pd
|
||||
freeShaderPointers $ _lightingOccludeShader pd
|
||||
freeShaderPointers $ _fullscreenShader pd
|
||||
|
||||
--{-# INLINE pokeBezQStrat #-}
|
||||
pokeBezQStrat :: RenderType -> [[Float]]
|
||||
pokeBezQStrat (RenderBezQ vs) = fmap
|
||||
(\((x,y,z),(r,g,b,a),(s,t,u,v)) -> [x,y,z,r,g,b,a,s,t,u,v])
|
||||
vs
|
||||
pokeBezQStrat _ = []
|
||||
|
||||
|
||||
pokeTriTweakZ :: RenderType -> [[Float]]
|
||||
pokeTriTweakZ (RenderPolyZ vs) = fmap (\(p,co,z) -> flat3 p ++ [z] ++ flat4 co) vs
|
||||
pokeTriTweakZ _ = []
|
||||
|
||||
--{-# INLINE pokeTriStrat #-}
|
||||
pokeTriStrat,pokeCharStrat,pokeArcStrat,pokeEllStrat :: RenderType -> [[Float]]
|
||||
pokeTriStrat (RenderPoly vs) = fmap (\(p,co) -> flat3 p ++ flat4 co) vs
|
||||
pokeTriStrat _ = []
|
||||
|
||||
pokeCharStrat (RenderText vs) = fmap (\(a,b,c) -> concat [flat3 a, flat4 b, flat2 c]) vs
|
||||
pokeCharStrat _ = []
|
||||
|
||||
pokeArcStrat (RenderArc vs) = fmap (\(a,b,c) -> concat [flat3 a, flat4 b, flat3 c]) vs
|
||||
pokeArcStrat _ = []
|
||||
|
||||
pokeEllStrat (RenderEllipse vs) = fmap (\((x,y,z),(r,g,b,a)) -> [x,y,z,r,g,b,a]) vs
|
||||
pokeEllStrat _ = []
|
||||
|
||||
vert, geom, frag :: ShaderType
|
||||
vert = VertexShader
|
||||
geom = GeometryShader
|
||||
@@ -262,3 +237,16 @@ pokeWPColStrat _ = undefined
|
||||
poke33 :: RenderType -> [[Float]]
|
||||
poke33 Render3x3{_unRender3x3=((x,y,z),(a,b,c))} = [[x,y,z,a,b,c]]
|
||||
poke33 _ = undefined
|
||||
|
||||
isPolyV PolyV = True
|
||||
isPolyV _ = False
|
||||
isArcV (ArcV _) = True
|
||||
isArcV _ = False
|
||||
isEllV EllV = True
|
||||
isEllV _ = False
|
||||
isTextV (TextV _) = True
|
||||
isTextV _ = False
|
||||
isBezV (BezV _) = True
|
||||
isBezV _ = False
|
||||
isPolyzV (PolyzV _) = True
|
||||
isPolyzV _ = False
|
||||
|
||||
Reference in New Issue
Block a user