Use vertex pulling for ceiling stencil
This commit is contained in:
@@ -1,6 +1,18 @@
|
||||
#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()
|
||||
{
|
||||
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
|
||||
unless (debugOn Remove_LOS cfig) $ do
|
||||
glUseProgram (pdata ^. ceilingStencilShader . shaderUINT)
|
||||
-- glProgramUniform3f
|
||||
-- (pdata ^. ceilingStencilShader . shaderUINT)
|
||||
-- 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
|
||||
-- glBindVertexArray $ pdata ^. ceilingStencilShader . shaderVAO . vaoName
|
||||
glBindVertexArray $ pdata ^. dummyVAO . vaoName
|
||||
glEnable GL_DEPTH_CLAMP
|
||||
glDrawArrays
|
||||
(_unPrimitiveMode $ pdata ^. ceilingStencilShader . shaderPrimitive)
|
||||
0
|
||||
(fromIntegral trueNWalls)
|
||||
(fromIntegral (trueNWalls * 6))
|
||||
glDisable GL_DEPTH_CLAMP
|
||||
glStencilMask 127 -- to alter last seven bits
|
||||
glStencilOp GL_KEEP GL_KEEP GL_KEEP
|
||||
|
||||
@@ -88,8 +88,10 @@ preloadRender = do
|
||||
makeShaderUsingVAO "lighting/cap" [vert, geom] pmTriangles shPosVAO
|
||||
lightingLineShadowShad <-
|
||||
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"
|
||||
bslist <- makeShaderVBO "dualTwoD/basic" [vert, frag] (toFloatVAs [3, 4]) pmTriangles
|
||||
|
||||
Reference in New Issue
Block a user