Remove RenderType datatype
This commit is contained in:
+15
-52
@@ -5,14 +5,12 @@ module Preload.Render
|
||||
, cleanUpRenderPreload
|
||||
)
|
||||
where
|
||||
import Picture.Data
|
||||
import Shader
|
||||
import Shader.Data
|
||||
import Shader.Compile
|
||||
import Shader.AuxAddition
|
||||
import Shader.Parameters
|
||||
import Data.Preload.Render
|
||||
import Geometry.Data
|
||||
|
||||
import Graphics.Rendering.OpenGL hiding (Point,translate,scale,imageHeight)
|
||||
import Graphics.GL.Core43
|
||||
@@ -52,45 +50,44 @@ preloadRender = do
|
||||
wpColVAO = VAO {_vao = wpColVAOname, _vaoVBO = wpVBO}
|
||||
|
||||
-- lighting shaders
|
||||
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] EPoints pokeWPStrat
|
||||
wsShad <- makeShader "lighting/occlude" [vert,geom,frag] [4] EPoints
|
||||
>>= addUniforms ["lightPos"]
|
||||
wlLightShad
|
||||
<- makeShaderUsingShaderVAO "lighting/wall" [vert,geom,frag] EPoints wsShad
|
||||
>>= addUniforms ["lightPos","radLum"]
|
||||
lightingSurfaceShad
|
||||
<- makeShader "lighting/surface" [vert,frag] [3] ETriangles poke3
|
||||
<- makeShader "lighting/surface" [vert,frag] [3] ETriangles
|
||||
>>= addUniforms ["lightPos","radLum"]
|
||||
lightingLineShadowShad
|
||||
<- makeShader "lighting/lineShadow" [vert,geom,frag] [3] ELinesAdjacency poke3
|
||||
<- makeShader "lighting/lineShadow" [vert,geom,frag] [3] ELinesAdjacency
|
||||
>>= addUniforms ["lightPos"]
|
||||
-- 2D draw shaders
|
||||
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
|
||||
bslist <- makeVShader "twoD/basic" [vert,frag] [3,4] ETriangles
|
||||
aslist <- makeVShader "twoD/arc" [vert,frag] [3,4,3] ETriangles
|
||||
eslist <- makeVShader "twoD/ellipse" [vert,geom,frag] [3,4] ETriangles
|
||||
bezierQuadShader <- makeVShader "twoD/bezierQuad" [vert,frag] [3,4,4] ETriangleStrip
|
||||
cslist <- makeVShader "twoD/character" [vert,frag] [3,4,2] ETriangles
|
||||
>>= vaddTextureNoFilter "data/texture/charMap.png"
|
||||
-- this should really be a 2d texture array
|
||||
basicTweakZShad <- makeVShader "twoD/basicTweakZ" [vert,frag] [4,4] ETriangles isPolyzV
|
||||
basicTweakZShad <- makeVShader "twoD/basicTweakZ" [vert,frag] [4,4] ETriangles
|
||||
-- fullscreen shaders
|
||||
fullscreenAlphaHalveShad <- makeShaderSized "fullscreen/alphaHalve" [vert,frag] [2] 4 ETriangleStrip $
|
||||
const cornerListNoCoord
|
||||
fullscreenAlphaHalveShad <- makeShaderSized "fullscreen/alphaHalve" [vert,frag] [2] 4 ETriangleStrip
|
||||
pokeArray (shadVBOptr fullscreenAlphaHalveShad) $ concat cornerListNoCoord
|
||||
-- texture shaders, no textures attached
|
||||
fsShad <- makeShaderSized "texture/simple" [vert,frag] [2,2] 4 ETriangleStrip $ const cornerList
|
||||
fsShad <- makeShaderSized "texture/simple" [vert,frag] [2,2] 4 ETriangleStrip
|
||||
-- note we directly poke the shader vertex data here
|
||||
pokeArray (shadVBOptr fsShad) $ concat cornerList
|
||||
bloomBlurShad <- makeShaderUsingShaderVAO "texture/bloomBlur" [vert,frag] ETriangleStrip fsShad
|
||||
colorBlurShad <- makeShaderUsingShaderVAO "texture/colorBlur" [vert,frag] ETriangleStrip fsShad
|
||||
grayscaleShad <- makeShaderUsingShaderVAO "texture/grayscale" [vert,frag] ETriangleStrip fsShad
|
||||
barrelShad <- makeShader "texture/barrel" [vert,geom,frag] [2,2,2,1] EPoints pokeRadDist
|
||||
barrelShad <- makeShader "texture/barrel" [vert,geom,frag] [2,2,2,1] EPoints
|
||||
-- blank wallShader
|
||||
wlBlank <- makeShader "wall/blank" [vert,geom,frag] [4,4] EPoints pokeWPColStrat
|
||||
wlBlank <- makeShader "wall/blank" [vert,geom,frag] [4,4] EPoints
|
||||
-- textured wallShader
|
||||
wlTexture <- makeShader "wall/texture" [vert,geom,frag] [4,4] EPoints pokeWPColStrat
|
||||
wlTexture <- makeShader "wall/texture" [vert,geom,frag] [4,4] EPoints
|
||||
>>= addTexture "data/texture/grayscaleDirt.png"
|
||||
---- texture array shader
|
||||
textArrayShad <- makeShader "texture/array" [vert,frag] [3,3] ETriangles poke33
|
||||
textArrayShad <- makeShader "texture/array" [vert,frag] [3,3] ETriangles
|
||||
>>= addTextureArray "data/texture/ayene_wooden_floor.png"
|
||||
-- bind fixed vertex data
|
||||
bindShaderBuffers [fsShad,fullscreenAlphaHalveShad] [4,4]
|
||||
@@ -224,37 +221,3 @@ vert, geom, frag :: ShaderType
|
||||
vert = VertexShader
|
||||
geom = GeometryShader
|
||||
frag = FragmentShader
|
||||
|
||||
poke3 :: RenderType -> [[Float]]
|
||||
poke3 (Render3 vs) = map flat3 vs
|
||||
poke3 _ = undefined
|
||||
|
||||
pokeWPStrat :: RenderType -> [[Float]]
|
||||
pokeWPStrat Render22{_unRender22 = ((V2 x y),(V2 z w))} = [[x,y,z,w]]
|
||||
pokeWPStrat _ = undefined
|
||||
|
||||
pokeRadDist :: RenderType -> [[Float]]
|
||||
pokeRadDist Render2221{_unRender2221 = (V2 a b,V2 c d,V2 e f,g)} = [[a,b,c,d,e,f,g]]
|
||||
pokeRadDist _ = undefined
|
||||
|
||||
pokeWPColStrat :: RenderType -> [[Float]]
|
||||
pokeWPColStrat Render22x4{_unRender22x4=((V2 x y,V2 z w),V4 r g b a)} = [[x,y,z,w,r,g,b,a]]
|
||||
pokeWPColStrat _ = undefined
|
||||
|
||||
poke33 :: RenderType -> [[Float]]
|
||||
poke33 Render3x3{_unRender3x3=(V3 x y z,V3 a b c)} = [[x,y,z,a,b,c]]
|
||||
poke33 _ = undefined
|
||||
|
||||
isPolyV, isArcV, isEllV, isTextV, isBezV, isPolyzV :: VertexType -> Bool
|
||||
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