Work towards doing transformations using uniforms
This commit is contained in:
+15
-33
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user