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