feat(shader): Add Deep Sea background shader for BlurPipeline
- Add compile_deepsea_shader() with animated underwater-like GLSL shader - Add render_deepsea_to_fbo() to render background to scene FBO - Deep Sea shader features: FBM noise, animated blobs, caustic lines, vignette - Add deepsea_program to cleanup() for proper resource management - Add 2 new tests for Deep Sea shader compilation and FBO rendering Task: Phase 1, Task 2 of frosted_glass_20260313 track
This commit is contained in:
@@ -43,6 +43,37 @@ def test_blur_pipeline_compile_shaders():
|
||||
assert pipeline.h_blur_program is not None
|
||||
assert pipeline.v_blur_program is not None
|
||||
|
||||
def test_blur_pipeline_render_deepsea_to_fbo():
|
||||
with patch("src.shader_manager.gl") as mock_gl:
|
||||
tex_counter = iter([10, 20, 30])
|
||||
fbo_counter = iter([1, 2, 3])
|
||||
mock_gl.glGenTextures.side_effect = lambda n: next(tex_counter)
|
||||
mock_gl.glGenFramebuffers.side_effect = lambda n: next(fbo_counter)
|
||||
mock_gl.glCreateProgram.return_value = 300
|
||||
mock_gl.glCreateShader.return_value = 400
|
||||
mock_gl.glGetShaderiv.return_value = mock_gl.GL_TRUE
|
||||
mock_gl.glGetProgramiv.return_value = mock_gl.GL_TRUE
|
||||
from src.shader_manager import BlurPipeline
|
||||
pipeline = BlurPipeline()
|
||||
pipeline.setup_fbos(800, 600)
|
||||
pipeline.compile_deepsea_shader()
|
||||
pipeline.render_deepsea_to_fbo(800, 600, 0.0)
|
||||
assert mock_gl.glBindFramebuffer.called
|
||||
assert mock_gl.glUseProgram.called
|
||||
assert mock_gl.glDrawArrays.called
|
||||
|
||||
def test_blur_pipeline_deepsea_shader_compilation():
|
||||
with patch("src.shader_manager.gl") as mock_gl:
|
||||
mock_gl.glCreateProgram.return_value = 500
|
||||
mock_gl.glCreateShader.return_value = 600
|
||||
mock_gl.glGetShaderiv.return_value = mock_gl.GL_TRUE
|
||||
mock_gl.glGetProgramiv.return_value = mock_gl.GL_TRUE
|
||||
from src.shader_manager import BlurPipeline
|
||||
pipeline = BlurPipeline()
|
||||
pipeline.compile_deepsea_shader()
|
||||
assert mock_gl.glCreateProgram.called
|
||||
assert pipeline.deepsea_program is not None
|
||||
|
||||
def test_blur_pipeline_prepare_blur():
|
||||
with patch("src.shader_manager.gl") as mock_gl:
|
||||
mock_gl.glGenFramebuffers.return_value = None
|
||||
|
||||
Reference in New Issue
Block a user