WebGL shaders gain control flow: if, for, and functions
The software WebGL engine could run straight-line shaders - a sequence of assignments - but any shader with a branch, a loop or a helper function failed to compile, and almost every non-trivial shader has all three. This release teaches the GLSL interpreter the rest of the language's everyday shape: if/else, for loops, user-defined functions with parameters and return values, the comparison and logical operators (< > <= >= == != && ||) and the ternary ?: - so a shader can decide, iterate and factor its work out into functions the way real shaders do. A hard step budget means a runaway loop errors instead of hanging the renderer, and a shader that uses something still outside the subset fails to compile rather than rendering a wrong frame. Proven end to end: a fragment shader that sums a loop inside a helper function and branches on the result renders the colour its logic selects, across five new tests. This is the coverage that turns the WebGL engine from toy-shader-only into one that runs the shaders real pages ship. Web APIs moves 57 to 58; the overall holds at 56 (still a software renderer).