Improve window drawing
This commit is contained in:
@@ -10,5 +10,4 @@ void main()
|
|||||||
float cloudz = texture(cloudpos, vScreenPos).z;
|
float cloudz = texture(cloudpos, vScreenPos).z;
|
||||||
fColOverCloud = ( cloudz > vPos.z ? vec4(0) : vCol);
|
fColOverCloud = ( cloudz > vPos.z ? vec4(0) : vCol);
|
||||||
fColUnderCloud = ( cloudz > vPos.z ? vCol : vec4(0));
|
fColUnderCloud = ( cloudz > vPos.z ? vCol : vec4(0));
|
||||||
fColUnderCloud = vec4(0);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,18 +5,22 @@ layout (std430, binding = 1) readonly buffer Pos { PosCol data[]; };
|
|||||||
out vec4 vCol;
|
out vec4 vCol;
|
||||||
out vec4 vPos;
|
out vec4 vPos;
|
||||||
out vec2 vScreenPos;
|
out vec2 vScreenPos;
|
||||||
//int indices[6] = {0,1,3,0,3,2};
|
|
||||||
int indices[6] =
|
int indices[6] =
|
||||||
{0,3,1
|
{0,3,1
|
||||||
,0,2,3};
|
,0,2,3};
|
||||||
// note reversed compared to walls
|
// note reversed compared to walls
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
vCol = data[gl_VertexID / 6].col;
|
vCol = data[gl_VertexID / 12].col;
|
||||||
vec4 pp = data[gl_VertexID / 6].pospos;
|
vec4 pp = data[gl_VertexID / 12].pospos;
|
||||||
int j = indices[gl_VertexID % 6];
|
int j = indices[gl_VertexID % 6];
|
||||||
//float z = (j > 1.5 ? 5000 : 0);
|
bool t = gl_VertexID % 12 > 5.5;
|
||||||
float z = (j > 1.5 ? 200 : 0);
|
float z = (j > 1.5
|
||||||
|
? (t ? 100 : 5000)
|
||||||
|
: (t ? 0 : 100)
|
||||||
|
);
|
||||||
|
// we draw two quads: one which can be below clouds,
|
||||||
|
// and one which is always above
|
||||||
vec2 xy = (j % 2 > 0 ? pp.xy : pp.zw);
|
vec2 xy = (j % 2 > 0 ? pp.xy : pp.zw);
|
||||||
vPos = vec4( xy, z, 1);
|
vPos = vec4( xy, z, 1);
|
||||||
gl_Position = theMat * vPos;
|
gl_Position = theMat * vPos;
|
||||||
|
|||||||
+2
-1
@@ -310,10 +310,11 @@ doDrawing' win pdata u = do
|
|||||||
glEnable GL_BLEND
|
glEnable GL_BLEND
|
||||||
--glBlendFunc GL_SRC_ALPHA GL_ONE
|
--glBlendFunc GL_SRC_ALPHA GL_ONE
|
||||||
glBindTextureUnit 3 (pdata ^. fboPos . _2 . unTO)
|
glBindTextureUnit 3 (pdata ^. fboPos . _2 . unTO)
|
||||||
|
-- with all source alphas 0.25, alpha -> 0.5
|
||||||
glBlendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
glBlendFunc GL_ONE_MINUS_DST_ALPHA GL_ONE_MINUS_SRC_ALPHA
|
||||||
glUseProgram $ pdata ^. windowPullShader
|
glUseProgram $ pdata ^. windowPullShader
|
||||||
glBindVertexArray $ pdata ^. dummyVAO
|
glBindVertexArray $ pdata ^. dummyVAO
|
||||||
glDrawArrays GL_TRIANGLES 0 (fromIntegral nWins * 6)
|
glDrawArrays GL_TRIANGLES 0 (fromIntegral nWins * 12)
|
||||||
glDisable GL_DEPTH_CLAMP
|
glDisable GL_DEPTH_CLAMP
|
||||||
glDisable GL_CULL_FACE
|
glDisable GL_CULL_FACE
|
||||||
glInvalidateBufferData (pdata ^. vboShapes . vboName)
|
glInvalidateBufferData (pdata ^. vboShapes . vboName)
|
||||||
|
|||||||
Reference in New Issue
Block a user