diff --git a/src/Data/Preload/Render.hs b/src/Data/Preload/Render.hs index d6a55756d..5bb89f75b 100644 --- a/src/Data/Preload/Render.hs +++ b/src/Data/Preload/Render.hs @@ -10,6 +10,7 @@ data RenderData = RenderData { _lightingFloorShader :: FullShader , _lightingOccludeShader :: FullShader , _lightingWallShader :: FullShader + , _lightingSurfaceShader :: FullShader , _wallBlankShader :: FullShader , _wallTextureShader :: FullShader , _textureShader :: FullShader @@ -23,7 +24,7 @@ data RenderData = RenderData , _fboRenderbufferObject :: RenderbufferObject , _fbo2 :: (FramebufferObject, TextureObject, RenderbufferObject) , _fbo3 :: (FramebufferObject, TextureObject, RenderbufferObject) - , _matUBO :: BufferObject + , _matUBO :: BufferObject } makeLenses ''RenderData diff --git a/src/Picture/Data.hs b/src/Picture/Data.hs index 75d9ec4fe..403c9040a 100644 --- a/src/Picture/Data.hs +++ b/src/Picture/Data.hs @@ -20,6 +20,7 @@ data RenderType | RenderArc [(Point3,Point4,Point3)] | RenderLine [(Point3,Point4)] | RenderEllipse [(Point3,Point4)] + | Render3 [Point3] | RenderConst | Render1111 {_unRender1111 :: (Float,Float,Float,Float)} | Render22 {_unRender22 :: (Point2,Point2)} diff --git a/src/Preload/Render.hs b/src/Preload/Render.hs index 264d7b50c..5e04721c3 100644 --- a/src/Preload/Render.hs +++ b/src/Preload/Render.hs @@ -33,6 +33,9 @@ preloadRender = do wlLightShad <- makeShader "lighting/wall" [vert,geom,frag] [4] Points pokeWPStrat >>= addUniforms ["lightPos","radLum"] + lightingSurfaceShad + <- makeShader "lighting/surface" [vert,frag] [3] Points poke3 + >>= addUniforms ["lightPos","radLum"] -- 2D draw shaders bslist <- makeShader "twoD/basic" [vert,frag] [3,4] Triangles pokeTriStrat lslist <- makeShader "twoD/basic" [vert,frag] [3,4] Lines pokeLineStrat @@ -72,6 +75,7 @@ preloadRender = do return $ RenderData { _pictureShaders = [bslist,lslist,cslist,aslist,eslist,bezierQuadShader] + , _lightingSurfaceShader = lightingSurfaceShad , _lightingFloorShader = lightingFloorShad , _lightingOccludeShader = wsShad , _lightingWallShader = wlLightShad @@ -182,6 +186,10 @@ vert = VertexShader geom = GeometryShader frag = FragmentShader +poke3 :: RenderType -> [[Float]] +poke3 (Render3 vs) = map flat3 vs +poke3 _ = undefined + pokeWPStrat :: RenderType -> [[Float]] pokeWPStrat Render22{_unRender22 = ((x,y),(z,w))} = [[x,y,z,w]] pokeWPStrat _ = undefined diff --git a/src/Tile.hs b/src/Tile.hs index 7356b321e..c2cccc9e2 100644 --- a/src/Tile.hs +++ b/src/Tile.hs @@ -10,7 +10,7 @@ tToRender t = map Render3x3 $ polyToTris $ zip ps3 coords3 where ps = _tilePoly t coords = map (calcTexCoord (_tileCenter t) (_tileX t) (_tileY t)) ps - ps3 = map (mkTrip 0.9) ps + ps3 = map (mkTrip 0.1) ps coords3 = map (mkTrip (_tileZ t)) coords mkTrip :: c -> (a,b) -> (a,b,c)