Use vertex pulling for ceiling stencil
This commit is contained in:
@@ -1,6 +1,18 @@
|
|||||||
#version 450 core
|
#version 450 core
|
||||||
layout (location = 0) in vec4 poss;
|
//layout (location = 0) in vec4 poss;
|
||||||
|
//void main()
|
||||||
|
//{
|
||||||
|
// gl_Position = poss;
|
||||||
|
//}
|
||||||
|
struct PosTex { vec4 pospos; vec4 texang; };
|
||||||
|
layout (std140, binding = 0) uniform TheMat { mat4 theMat; } ;
|
||||||
|
layout (std430, binding = 2) readonly buffer Pos { PosTex data[]; };
|
||||||
|
int indices[6] = {0,1,3,0,3,2};
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position = poss;
|
vec4 pp = data[gl_VertexID / 6].pospos;
|
||||||
|
int j = indices[gl_VertexID % 6];
|
||||||
|
float z = (j > 1.5 ? 5000 : 100);
|
||||||
|
vec2 xy = (j % 2 > 0 ? pp.xy : pp.zw);
|
||||||
|
gl_Position = theMat * vec4(xy,z,1);
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-12
@@ -136,22 +136,13 @@ doDrawing' win pdata u = do
|
|||||||
glCullFace GL_BACK
|
glCullFace GL_BACK
|
||||||
unless (debugOn Remove_LOS cfig) $ do
|
unless (debugOn Remove_LOS cfig) $ do
|
||||||
glUseProgram (pdata ^. ceilingStencilShader . shaderUINT)
|
glUseProgram (pdata ^. ceilingStencilShader . shaderUINT)
|
||||||
-- glProgramUniform3f
|
-- glBindVertexArray $ pdata ^. ceilingStencilShader . shaderVAO . vaoName
|
||||||
-- (pdata ^. ceilingStencilShader . shaderUINT)
|
glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||||
-- 0
|
|
||||||
-- vfx
|
|
||||||
-- vfy
|
|
||||||
-- 20
|
|
||||||
-- glProgramUniform1f
|
|
||||||
-- (pdata ^. ceilingStencilShader . shaderUINT)
|
|
||||||
-- 1
|
|
||||||
-- 1000 -- this should be the furthest on screen distance from the viewpoint
|
|
||||||
glBindVertexArray $ pdata ^. ceilingStencilShader . shaderVAO . vaoName
|
|
||||||
glEnable GL_DEPTH_CLAMP
|
glEnable GL_DEPTH_CLAMP
|
||||||
glDrawArrays
|
glDrawArrays
|
||||||
(_unPrimitiveMode $ pdata ^. ceilingStencilShader . shaderPrimitive)
|
(_unPrimitiveMode $ pdata ^. ceilingStencilShader . shaderPrimitive)
|
||||||
0
|
0
|
||||||
(fromIntegral trueNWalls)
|
(fromIntegral (trueNWalls * 6))
|
||||||
glDisable GL_DEPTH_CLAMP
|
glDisable GL_DEPTH_CLAMP
|
||||||
glStencilMask 127 -- to alter last seven bits
|
glStencilMask 127 -- to alter last seven bits
|
||||||
glStencilOp GL_KEEP GL_KEEP GL_KEEP
|
glStencilOp GL_KEEP GL_KEEP GL_KEEP
|
||||||
|
|||||||
@@ -88,8 +88,10 @@ preloadRender = do
|
|||||||
makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO
|
makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO
|
||||||
lightingLineShadowShad <-
|
lightingLineShadowShad <-
|
||||||
makeShaderUsingVAO "lighting/lineShadow" [vert, geom] pmLinesAdjacency shedgevao
|
makeShaderUsingVAO "lighting/lineShadow" [vert, geom] pmLinesAdjacency shedgevao
|
||||||
ceilingstencilshader <-
|
|
||||||
makeShaderUsingVBO "ceiling/stencil" [vert, geom] (toFloatVAs [4]) pmPoints wallvbo
|
ceilingstencilshader <- makeShaderUsingVAO "ceiling/stencil" [vert] pmTriangles
|
||||||
|
(VAO dummyvao)
|
||||||
|
-- makeShaderUsingVBO "ceiling/stencil" [vert, geom] (toFloatVAs [4]) pmPoints wallvbo
|
||||||
|
|
||||||
putStrLn "Setup 2D shaders"
|
putStrLn "Setup 2D shaders"
|
||||||
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles
|
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles
|
||||||
|
|||||||
Reference in New Issue
Block a user