Shaders: work on fullscreen, cleanup creation

This commit is contained in:
2025-11-13 11:18:28 +00:00
parent 8dee93991a
commit 56aa8c6697
5 changed files with 26 additions and 22 deletions
+3 -4
View File
@@ -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;
}
+3 -4
View File
@@ -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;
}
+3 -3
View File
@@ -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
View File
@@ -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
+4 -4
View File
@@ -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"