diff --git a/shaders/map/tessEval.shader b/shaders/map/tessEval.shader index dcc2727..87a5598 100644 --- a/shaders/map/tessEval.shader +++ b/shaders/map/tessEval.shader @@ -9,7 +9,7 @@ in vec3 tcNormal[]; out vec4 teColor; smooth out vec3 tePosition; smooth out vec3 teNormal; -out float fogDist; +smooth out float fogDist; smooth out float gmix; //mixture of gravel //out vec3 tePatchDistance; //constant projection matrix diff --git a/shaders/ui/fragment.shader b/shaders/ui/fragment.shader index 9153586..2b4d160 100644 --- a/shaders/ui/fragment.shader +++ b/shaders/ui/fragment.shader @@ -6,6 +6,6 @@ varying vec2 texcoord; void main() { vec4 map = texture2D(tex[0], texcoord); - vec4 hud = texture2D(tex[1], texcoord); + vec4 hud = texture2D(tex[1], vec2(texcoord.x,-texcoord.y)); gl_FragColor = vec4(mix(map.rgb,hud.rgb,hud.a),1.0); -} \ No newline at end of file +} diff --git a/src/Main.hs b/src/Main.hs index 9642928..a361524 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -84,6 +84,7 @@ main = --generate map vertices (mapBuffer, vert) <- getMapBufferObject (mapprog, ci, ni, vi, pri, vii, mi, nmi, tli, tlo, mapTex) <- initMapShader + overTex <- GL.genObjectName print window' eventQueue <- newTQueueIO :: IO (TQueue Event) putStrLn "foo" @@ -123,6 +124,7 @@ main = , _mapVert = vert , _mapProgram = mapprog , _mapTexture = mapTex + , _overviewTexture = overTex } env = Env { _eventsChan = eventQueue diff --git a/src/Render/Render.hs b/src/Render/Render.hs index c348f25..66702aa 100644 --- a/src/Render/Render.hs +++ b/src/Render/Render.hs @@ -180,6 +180,82 @@ initRendering = do glCullFace gl_BACK checkError "initRendering" +{-renderOverview :: Pioneers () +renderOverview = do + liftIO $ do + ---- RENDER OVERVIEW MAP ------------------------------------------ + + + bindFramebuffer Framebuffer $= (state ^. gl.glFramebuffer) + bindRenderbuffer Renderbuffer $= (state ^. gl.glRenderbuffer) + framebufferRenderbuffer + Framebuffer + DepthAttachment + Renderbuffer + (state ^. gl.glRenderbuffer) + textureBinding Texture2D $= Just (state ^. gl.glMap.mapTexture) + + framebufferTexture2D + Framebuffer + (ColorAttachment 0) + Texture2D + (state ^. gl.glMap.mapTexture) + 0 + + -- Render to FrameBufferObject + drawBuffers $= [FBOColorAttachment 0] + checkError "setup Render-Target" + + clear [ColorBuffer, DepthBuffer] + checkError "clear buffer" + + + currentProgram $= Just (state ^. gl.glMap.mapProgram) + + checkError "setting up buffer" + --set up projection (= copy from state) + with (distribute frust) $ \ptr -> + glUniformMatrix4fv proj 1 0 (castPtr (ptr :: Ptr (L.M44 CFloat))) + checkError "copy projection" + + --set up camera + let ! cam = getCam camPos zDist' xa ya + with (distribute cam) $ \ptr -> + glUniformMatrix4fv vmat 1 0 (castPtr (ptr :: Ptr (L.M44 CFloat))) + checkError "copy cam" + + --set up normal--Mat transpose((model*camera)^-1) + let normal' = (case L.inv33 (fmap (^. L._xyz) cam ^. L._xyz) of + (Just a) -> a + Nothing -> L.eye3) :: L.M33 CFloat + nmap = collect id normal' :: L.M33 CFloat --transpose... + + with (distribute nmap) $ \ptr -> + glUniformMatrix3fv nmat 1 0 (castPtr (ptr :: Ptr (L.M33 CFloat))) + + checkError "nmat" + + glUniform1f tli (fromIntegral tessFac) + glUniform1f tlo (fromIntegral tessFac) + + bindBuffer ArrayBuffer $= Just map' + vertexAttribPointer ci $= fgColorIndex + vertexAttribArray ci $= Enabled + vertexAttribPointer ni $= fgNormalIndex + vertexAttribArray ni $= Enabled + vertexAttribPointer vi $= fgVertexIndex + vertexAttribArray vi $= Enabled + checkError "beforeDraw" + + glPatchParameteri gl_PATCH_VERTICES 3 + + cullFace $= Just Front + + glDrawArrays gl_PATCHES 0 (fromIntegral numVert) + checkError "draw map" +-} + + render :: Pioneers () render = do state <- RWS.get diff --git a/src/Types.hs b/src/Types.hs index 475953f..64e7f17 100644 --- a/src/Types.hs +++ b/src/Types.hs @@ -89,6 +89,7 @@ data GLMapState = GLMapState , _mapVert :: !GL.NumArrayIndices , _mapProgram :: !GL.Program , _mapTexture :: !TextureObject + , _overviewTexture :: !TextureObject } data GLHud = GLHud