Work towards doing transformations using uniforms

This commit is contained in:
2021-02-25 03:41:19 +01:00
parent 1969aa4f4a
commit 32bfab2e02
14 changed files with 310 additions and 205 deletions
+15 -33
View File
@@ -19,13 +19,13 @@ import Shaders
data RenderData = RenderData
{ --_charMap :: Image PixelRGBA8
_textures :: [TextureObject]
, _basicShader :: Program
, _textShader :: Program
, _circShader :: Program
, _arcShader :: Program
, _fadeCircleShader :: Program
, _backShader :: Program
, _wallShadowShader :: Program
, _basicShader :: (Program, [UniformLocation])
, _textShader :: (Program, [UniformLocation])
, _circShader :: (Program, [UniformLocation])
, _arcShader :: (Program, [UniformLocation])
, _fadeCircleShader :: (Program, [UniformLocation])
, _backShader :: (Program, [UniformLocation])
, _wallShadowShader :: (Program, [UniformLocation])
, _triVAO :: VAO
, _lineVAO :: VAO
, _textVAO :: VAO
@@ -37,12 +37,6 @@ data RenderData = RenderData
, _posVBO :: BufferObject
, _colVBO :: BufferObject
, _texVBO :: BufferObject
, _uniWinSize :: UniformLocation
, _csZoomUni :: UniformLocation
, _asWinUni :: UniformLocation
, _asZoomUni :: UniformLocation
, _fcsWinUni :: UniformLocation
, _fcsZoomUni :: UniformLocation
, _wssLightPos :: UniformLocation
, _dummyVBO :: BufferObject
, _dummyPtr :: Ptr Float
@@ -103,21 +97,15 @@ bufferOffset = plusPtr nullPtr . fromIntegral
preloadRender :: IO RenderData
preloadRender = do
-- compile shader programs
bs <- makeBasicShader
ts <- makeTextureShader
cs <- makeCircleShader
as <- makeArcShader
fcs <- makeFadeShader
bgs <- makeBackgroundShader
wss <- makeWallShadowShader
bs <- makeSourcedShader "basic" [VertexShader,FragmentShader]
ts <- makeSourcedShader "character" [VertexShader,GeometryShader,FragmentShader]
cs <- makeSourcedShader "circle" [VertexShader,GeometryShader,FragmentShader]
as <- makeSourcedShader "arc" [VertexShader,GeometryShader,FragmentShader]
fcs <- makeSourcedShader "fadeCircle" [VertexShader,GeometryShader,FragmentShader]
bgs <- makeSourcedShader "background" [VertexShader,GeometryShader,FragmentShader]
wss <- makeSourcedShader "wallShadow" [VertexShader,GeometryShader,FragmentShader]
winSizeUni <- GL.uniformLocation cs "winSize"
zoomUni <- GL.uniformLocation cs "zoom"
asWinSizeUniLoc <- GL.uniformLocation as "winSize"
asZoomUniLoc <- GL.uniformLocation as "zoom"
wssLightPosUniLoc <- GL.uniformLocation wss "lightPos"
fcsWinSizeUniLoc <- GL.uniformLocation fcs "winSize"
fcsZoomUniLoc <- GL.uniformLocation fcs "zoom"
wssLightPosUniLoc <- GL.uniformLocation (fst wss) "lightPos"
-- get uniform locations
--setup vbos
@@ -195,13 +183,7 @@ preloadRender = do
, _texVBO = texVBO
, _dummyVBO = dummyvbo
, _dummyPtr = dummyptr
, _uniWinSize = winSizeUni
, _csZoomUni = zoomUni
, _asWinUni = asWinSizeUniLoc
, _asZoomUni = asZoomUniLoc
, _wssLightPos = wssLightPosUniLoc
, _fcsWinUni = fcsWinSizeUniLoc
, _fcsZoomUni = fcsZoomUniLoc
}
vaoPointers :: VAO -> [Ptr Float]