Shaders: work on fullscreen, cleanup creation
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
#version 450 core
|
||||
layout(location = 0) in vec2 pos;
|
||||
layout(location = 1) in vec2 texPos;
|
||||
layout (std140, binding = 2) uniform PosTex { vec4 posTex[6]; };
|
||||
out vec2 vTexPos;
|
||||
void main() {
|
||||
gl_Position = vec4(pos, 0.0, 1.0);
|
||||
vTexPos = texPos;
|
||||
gl_Position = vec4(posTex[gl_VertexID].xy,0,1);
|
||||
vTexPos = posTex[gl_VertexID].zw;
|
||||
}
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
#version 450 core
|
||||
layout(location = 0) in vec2 position;
|
||||
layout(location = 1) in vec2 texpos;
|
||||
layout (std140, binding = 2) uniform PosTex { vec4 posTex[6]; };
|
||||
out vec2 vTexPos;
|
||||
void main() {
|
||||
gl_Position = vec4(position, 0, 1);
|
||||
vTexPos = texpos;
|
||||
gl_Position = vec4(posTex[gl_VertexID].xy,0,1);
|
||||
vTexPos = posTex[gl_VertexID].zw;
|
||||
}
|
||||
|
||||
@@ -18,9 +18,9 @@ data RenderData = RenderData
|
||||
, _ceilingStencilShader :: Shader
|
||||
, _alphaDivideShader :: Shader
|
||||
-- , _windowShader :: Shader
|
||||
, _windowPullShader :: Shader
|
||||
, _pullWallShader :: Shader
|
||||
, _fullscreenShader :: Shader
|
||||
, _windowPullShader :: GLuint
|
||||
, _pullWallShader :: GLuint
|
||||
, _fullscreenShader :: GLuint
|
||||
, _transparencyCompShader :: Shader
|
||||
, _bloomBlurShader :: Shader
|
||||
, _colorBlurShader :: Shader
|
||||
|
||||
+13
-7
@@ -147,7 +147,7 @@ doDrawing' win pdata u = do
|
||||
-- (_unPrimitiveMode $ pdata ^. wallShader . shaderPrimitive)
|
||||
-- 0
|
||||
-- (fromIntegral trueNWalls)
|
||||
glUseProgram (pdata ^. pullWallShader . shaderUINT)
|
||||
glUseProgram (pdata ^. pullWallShader)
|
||||
--glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral trueNWalls * 6)
|
||||
--draw object shapes onto base buffer
|
||||
@@ -202,7 +202,8 @@ doDrawing' win pdata u = do
|
||||
glBindTextureUnit 0 (pdata ^. fboLighting . _2 . unTO)
|
||||
glEnable GL_BLEND
|
||||
glBlendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
glUseProgram (pdata ^. fullscreenShader)
|
||||
glDrawArrays GL_TRIANGLES 0 6
|
||||
with GL_COLOR_ATTACHMENT0 $
|
||||
glInvalidateNamedFramebufferData (pdata ^. fboLighting . _1 . unFBO) 1
|
||||
--draw bloom onto bloom buffer
|
||||
@@ -334,7 +335,9 @@ doDrawing' win pdata u = do
|
||||
ptr
|
||||
glBindTextureUnit 0 (pdata ^. fboCloud . _2 . _2 . unTO)
|
||||
glDepthMask GL_FALSE
|
||||
drawShader (pdata ^. alphaDivideShader) 4
|
||||
-- drawShader (pdata ^. alphaDivideShader) 4
|
||||
glUseProgram (pdata ^. alphaDivideShader . shaderUINT)
|
||||
glDrawArrays GL_TRIANGLES 0 6
|
||||
----draw lightmap for cloud buffer
|
||||
glDepthMask GL_TRUE
|
||||
glDepthFunc GL_LESS
|
||||
@@ -364,7 +367,7 @@ doDrawing' win pdata u = do
|
||||
glDisable GL_BLEND
|
||||
-- glDepthFunc GL_ALWAYS
|
||||
-- glDisable GL_CULL_FACE
|
||||
glUseProgram $ pdata ^. windowPullShader . shaderUINT
|
||||
glUseProgram $ pdata ^. windowPullShader
|
||||
glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nWins * 6)
|
||||
glDisable GL_DEPTH_CLAMP
|
||||
@@ -380,7 +383,8 @@ doDrawing' win pdata u = do
|
||||
glBindTextureUnit 0 (_unTO . snd $ _fboLighting pdata)
|
||||
glEnable GL_BLEND
|
||||
glBlendFuncSeparate GL_ZERO GL_ONE_MINUS_SRC_COLOR GL_ZERO GL_ONE
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
glUseProgram (pdata ^. fullscreenShader)
|
||||
glDrawArrays GL_TRIANGLES 0 6
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
|
||||
-- bind base buffer for drawing clouds and bloom
|
||||
@@ -406,7 +410,8 @@ doDrawing' win pdata u = do
|
||||
glBlendFunc GL_SRC_ALPHA GL_ONE
|
||||
--glBlendFunc GL_ONE GL_ONE
|
||||
glBindTextureUnit 0 (_unTO . snd $ _fboHalf1 pdata)
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
glUseProgram (pdata ^. fullscreenShader)
|
||||
glDrawArrays GL_TRIANGLES 0 6
|
||||
-- glBlendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||
|
||||
--set viewport for radial distortion
|
||||
@@ -420,7 +425,8 @@ doDrawing' win pdata u = do
|
||||
(rds, x) | null rds || not x -> do
|
||||
glBindTextureUnit 0 $ pdata ^. fboBase . _2 . _1 . unTO
|
||||
glBindFramebuffer GL_FRAMEBUFFER 0
|
||||
drawShader (_fullscreenShader pdata) 4
|
||||
glUseProgram (pdata ^. fullscreenShader)
|
||||
glDrawArrays GL_TRIANGLES 0 6
|
||||
(rds, _) -> do
|
||||
let bindDrawDist :: Distortion -> IO ()
|
||||
bindDrawDist (RadialDistortion (V2 a b) (V2 c d) (V2 e f) g) = do
|
||||
|
||||
@@ -95,9 +95,9 @@ preloadRender = do
|
||||
|
||||
dummyvao <- mglCreate glGenVertexArrays
|
||||
|
||||
winpull <- makeShaderUsingVAO "pull/window" [vert, frag] pmTriangles (VAO dummyvao)
|
||||
|
||||
wallpull <- makeShaderUsingVAO "pull/wall" [vert, frag] pmTriangles (VAO dummyvao)
|
||||
--winpull <- makeShaderUsingVAO "pull/window" [vert, frag] pmTriangles (VAO dummyvao)
|
||||
winpull <- makeSourcedShader "pull/window" [vert, frag]
|
||||
wallpull <- makeSourcedShader "pull/wall" [vert, frag]
|
||||
|
||||
shapeshader <-
|
||||
makeShaderUsingVAO "shape/basic" [vert, frag] pmTriangles (VAO dummyvao)
|
||||
@@ -137,7 +137,7 @@ preloadRender = do
|
||||
putStrLn "Setup full screen shaders"
|
||||
(_, screentexturevao) <- setupStaticVBOVAO (toFloatVAs [2, 2]) (concat cornerList)
|
||||
alphadivideshader <- makeShaderUsingVAO "texture2D/alphaDivide" [vert, frag] pmTriangleStrip screentexturevao
|
||||
fsShad <- makeShaderUsingVAO "texture/simple" [vert, frag] pmTriangleStrip screentexturevao
|
||||
fsShad <- makeSourcedShader "texture/simple" [vert, frag]
|
||||
transcompshader <-
|
||||
makeShaderUsingVAO
|
||||
"fullscreen/transparencyComp"
|
||||
|
||||
Reference in New Issue
Block a user