(self)
| 239 | |
| 240 | class SimpleInlineFullScreenQuad(Scene): |
| 241 | def construct(self): |
| 242 | surface = FullScreenQuad( |
| 243 | self.renderer.context, |
| 244 | """ |
| 245 | #version 330 |
| 246 | |
| 247 | uniform float v_red; |
| 248 | uniform float v_green; |
| 249 | uniform float v_blue; |
| 250 | out vec4 frag_color; |
| 251 | |
| 252 | void main() { |
| 253 | frag_color = vec4(v_red, v_green, v_blue, 1); |
| 254 | } |
| 255 | """, |
| 256 | ) |
| 257 | surface.shader.set_uniform("v_red", 0) |
| 258 | surface.shader.set_uniform("v_green", 0) |
| 259 | surface.shader.set_uniform("v_blue", 0) |
| 260 | |
| 261 | increase = True |
| 262 | val = 0.5 |
| 263 | surface.shader.set_uniform("v_red", val) |
| 264 | surface.shader.set_uniform("v_green", val) |
| 265 | surface.shader.set_uniform("v_blue", val) |
| 266 | |
| 267 | def update_surface(mesh, dt): |
| 268 | nonlocal increase |
| 269 | nonlocal val |
| 270 | if increase: |
| 271 | val += dt |
| 272 | else: |
| 273 | val -= dt |
| 274 | if val >= 1: |
| 275 | increase = False |
| 276 | elif val <= 0: |
| 277 | increase = True |
| 278 | surface.shader.set_uniform("v_red", val) |
| 279 | surface.shader.set_uniform("v_green", val) |
| 280 | surface.shader.set_uniform("v_blue", val) |
| 281 | |
| 282 | surface.add_updater(update_surface) |
| 283 | |
| 284 | self.add(surface) |
| 285 | self.wait(5) |
| 286 | |
| 287 | |
| 288 | class InlineShaderExample(Scene): |
nothing calls this directly
no test coverage detected