Add barrel distortion shader
This commit is contained in:
@@ -20,6 +20,7 @@ data RenderData = RenderData
|
||||
--, _boxBlurShader :: FullShader
|
||||
, _bloomBlurShader :: FullShader
|
||||
, _colorBlurShader :: FullShader
|
||||
, _barrelShader :: FullShader
|
||||
, _grayscaleShader :: FullShader
|
||||
, _pictureShaders :: [FullShader]
|
||||
, _spareFBO :: FramebufferObject
|
||||
|
||||
@@ -102,6 +102,7 @@ data World = World
|
||||
, _debugFlags :: DebugFlags
|
||||
, _inventoryMode :: InventoryMode
|
||||
, _lClickHammer :: HammerPosition
|
||||
, _radDistortion :: [(Point2,Point2,Point2,Float)]
|
||||
}
|
||||
data InventoryMode
|
||||
= TopInventory
|
||||
|
||||
@@ -78,6 +78,7 @@ defaultWorld = World
|
||||
, _inventoryMode = TopInventory
|
||||
, _lClickHammer = HammerUp
|
||||
, _foregroundDecorations = []
|
||||
, _radDistortion = [((00,400),(0,80),(40,40),0.5)]
|
||||
}
|
||||
defaultDebugFlags :: DebugFlags
|
||||
defaultDebugFlags = DebugFlags
|
||||
|
||||
+5
-1
@@ -144,8 +144,12 @@ doDrawing pdata w = do
|
||||
depthFunc $= Just Always
|
||||
bindFramebuffer Framebuffer $= defaultFramebufferObject
|
||||
clear [ColorBuffer]
|
||||
activeTexture $= TextureUnit 1
|
||||
textureBinding Texture2D $= Just (snd $ _fboBase pdata)
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
nraddist <- F.foldM (pokeShader $ _barrelShader pdata) (map Render2221 $ _radDistortion w)
|
||||
bindShaderBuffers [_barrelShader pdata] [nraddist]
|
||||
drawShader (_barrelShader pdata) 4
|
||||
activeTexture $= TextureUnit 0
|
||||
|
||||
-- draw overlay
|
||||
bufferUBO $ isoMatrix 0 1 (0,0) (2,2)
|
||||
|
||||
@@ -25,6 +25,7 @@ data RenderType
|
||||
| RenderConst
|
||||
| Render1111 {_unRender1111 :: (Float,Float,Float,Float)}
|
||||
| Render22 {_unRender22 :: (Point2,Point2)}
|
||||
| Render2221 {_unRender2221 :: (Point2,Point2,Point2,Float)}
|
||||
| Render22x4 {_unRender22x4 :: ((Point2,Point2),Point4)}
|
||||
| Render3x2 {_unRender3x2 :: (Point3,Point2)}
|
||||
| Render3x3 {_unRender3x3 :: (Point3,Point3)}
|
||||
|
||||
@@ -61,6 +61,7 @@ preloadRender = do
|
||||
pokeArray (_vboPointer $ _vaoVBO $ _shaderVAO colorBlurShad) $ concat cornerList
|
||||
grayscaleShad <- makeShader "texture/grayscale" [vert,frag] [2,2] ETriangleStrip $ const cornerList
|
||||
pokeArray (_vboPointer $ _vaoVBO $ _shaderVAO grayscaleShad) $ concat cornerList
|
||||
barrelShad <- makeShader "texture/barrel" [vert,geom,frag] [2,2,2,1] EPoints pokeRadDist
|
||||
-- blank wallShader
|
||||
wlBlank <- makeShader "wall/blank" [vert,geom,frag] [4,4] EPoints pokeWPColStrat
|
||||
-- textured wallShader
|
||||
@@ -73,7 +74,7 @@ preloadRender = do
|
||||
textArrayShad <- makeShader "texture/array" [vert,frag] [3,3] ETriangles poke33
|
||||
>>= addTextureArray "data/texture/ayene_wooden_floor.png"
|
||||
-- bind fixed vertex data
|
||||
bindShaderBuffers [bloomBlurShad,colorBlurShad,fullscreenAlphaHalveShad ] [4,4,4]
|
||||
bindShaderBuffers [bloomBlurShad,colorBlurShad,fullscreenAlphaHalveShad] [4,4,4]
|
||||
-- framebuffer for lighting
|
||||
(fbo,fboTO,fboRBO) <- setupFramebufferWithStencil
|
||||
framebuf2 <- setupFramebufferWithStencil
|
||||
@@ -116,6 +117,7 @@ preloadRender = do
|
||||
, _fullscreenAlphaHalveShader = fullscreenAlphaHalveShad
|
||||
, _bloomBlurShader = bloomBlurShad
|
||||
, _colorBlurShader = colorBlurShad
|
||||
, _barrelShader = barrelShad
|
||||
, _grayscaleShader = grayscaleShad
|
||||
, _spareFBO = fbo
|
||||
, _fboTexture = fboTO
|
||||
@@ -262,6 +264,10 @@ pokeWPStrat :: RenderType -> [[Float]]
|
||||
pokeWPStrat Render22{_unRender22 = ((x,y),(z,w))} = [[x,y,z,w]]
|
||||
pokeWPStrat _ = undefined
|
||||
|
||||
pokeRadDist :: RenderType -> [[Float]]
|
||||
pokeRadDist Render2221{_unRender2221 = ((a,b),(c,d),(e,f),g)} = [[a,b,c,d,e,f,g]]
|
||||
pokeRadDist _ = undefined
|
||||
|
||||
pokeWPColStrat :: RenderType -> [[Float]]
|
||||
pokeWPColStrat Render22x4{_unRender22x4=(((x,y),(z,w)),(r,g,b,a))} = [[x,y,z,w,r,g,b,a]]
|
||||
pokeWPColStrat _ = undefined
|
||||
|
||||
Reference in New Issue
Block a user