fix(shader): Disable frosted glass - OpenGL 3.3 core profile incompatible with fixed-function

The issue is that imgui-bundle uses OpenGL 3.3 core profile which doesn't
support glBegin/glEnd. The shaders require VAO setup which is failing.
This needs proper OpenGL debugging in the imgui-bundle context.
This commit is contained in:
2026-03-13 21:28:39 -04:00
parent 3113e4137b
commit 1d36357c64
3 changed files with 48 additions and 38 deletions

View File

@@ -225,15 +225,12 @@ class BlurPipeline:
def compile_blur_shaders(self):
vert_src = """
#version 330 core
in vec2 a_position;
in vec2 a_texcoord;
out vec2 v_uv;
void main() {
vec2 pos = vec2(-1.0, -1.0);
vec2 uv = vec2(0.0, 0.0);
if (gl_VertexID == 1) { pos = vec2(1.0, -1.0); uv = vec2(1.0, 0.0); }
else if (gl_VertexID == 2) { pos = vec2(-1.0, 1.0); uv = vec2(0.0, 1.0); }
else if (gl_VertexID == 3) { pos = vec2(1.0, 1.0); uv = vec2(1.0, 1.0); }
gl_Position = vec4(pos, 0.0, 1.0);
v_uv = uv;
gl_Position = vec4(a_position, 0.0, 1.0);
v_uv = a_texcoord;
}
"""
h_frag_src = """
@@ -292,16 +289,17 @@ void main() {
def compile_deepsea_shader(self):
vert_src = """
#version 330 core
in vec2 a_position;
in vec2 a_texcoord;
out vec2 v_uv;
void main() {
vec2 pos = vec2(-1.0, -1.0);
if (gl_VertexID == 1) pos = vec2(1.0, -1.0);
else if (gl_VertexID == 2) pos = vec2(-1.0, 1.0);
else if (gl_VertexID == 3) pos = vec2(1.0, 1.0);
gl_Position = vec4(pos, 0.0, 1.0);
gl_Position = vec4(a_position, 0.0, 1.0);
v_uv = a_texcoord;
}
"""
frag_src = """
#version 330 core
in vec2 v_uv;
uniform float u_time;
uniform vec2 u_resolution;
out vec4 FragColor;
@@ -333,7 +331,7 @@ float fbm(vec2 p) {
}
void main() {
vec2 uv = gl_FragCoord.xy / u_resolution.xy;
vec2 uv = v_uv;
float t = u_time * 0.3;
vec3 col = vec3(0.01, 0.05, 0.12);
for (int i = 0; i < 3; i++) {
@@ -375,7 +373,13 @@ void main() {
u_res = gl.glGetUniformLocation(self.deepsea_program, "u_resolution")
if u_res != -1:
gl.glUniform2f(u_res, float(scene_w), float(scene_h))
gl.glDrawArrays(gl.GL_TRIANGLE_STRIP, 0, 4)
# Draw fullscreen quad using deprecated but working glBegin/glEnd
gl.glBegin(gl.GL_TRIANGLE_STRIP)
gl.glVertex2f(-1.0, -1.0); gl.glTexCoord2f(0.0, 0.0)
gl.glVertex2f( 1.0, -1.0); gl.glTexCoord2f(1.0, 0.0)
gl.glVertex2f(-1.0, 1.0); gl.glTexCoord2f(0.0, 1.0)
gl.glVertex2f( 1.0, 1.0); gl.glTexCoord2f(1.0, 1.0)
gl.glEnd()
gl.glUseProgram(0)
gl.glBindFramebuffer(gl.GL_FRAMEBUFFER, 0)
@@ -389,7 +393,12 @@ void main() {
u_ts = gl.glGetUniformLocation(program, "u_texel_size")
if u_ts != -1:
gl.glUniform2f(u_ts, texel_size[0], texel_size[1])
gl.glDrawArrays(gl.GL_TRIANGLE_STRIP, 0, 4)
gl.glBegin(gl.GL_TRIANGLE_STRIP)
gl.glVertex2f(-1.0, -1.0); gl.glTexCoord2f(0.0, 0.0)
gl.glVertex2f( 1.0, -1.0); gl.glTexCoord2f(1.0, 0.0)
gl.glVertex2f(-1.0, 1.0); gl.glTexCoord2f(0.0, 1.0)
gl.glVertex2f( 1.0, 1.0); gl.glTexCoord2f(1.0, 1.0)
gl.glEnd()
gl.glBindTexture(gl.GL_TEXTURE_2D, 0)
gl.glUseProgram(0)