| #version 310 es |
| precision mediump float; |
| |
| layout(std140, binding = 0) uniform UBO |
| { |
| int some_value; |
| }; |
| |
| struct B |
| { |
| float a; |
| float b; |
| }; |
| |
| void partial_inout(inout vec4 x) |
| { |
| x.x = 10.0; |
| } |
| |
| void partial_inout(inout B b) |
| { |
| b.b = 40.0; |
| } |
| |
| // Make a complete write, but only conditionally ... |
| void branchy_inout(inout vec4 v) |
| { |
| v.y = 20.0; |
| if (some_value == 20) |
| { |
| v = vec4(50.0); |
| } |
| } |
| |
| void branchy_inout_2(out vec4 v) |
| { |
| if (some_value == 20) |
| { |
| v = vec4(50.0); |
| } |
| else |
| { |
| v = vec4(70.0); |
| } |
| v.y = 20.0; |
| } |
| |
| void complete_inout(out vec4 x) |
| { |
| x = vec4(50.0); |
| } |
| |
| void main() |
| { |
| vec4 a = vec4(10.0); |
| partial_inout(a); |
| complete_inout(a); |
| branchy_inout(a); |
| branchy_inout_2(a); |
| |
| B b = B(10.0, 20.0); |
| partial_inout(b); |
| } |
| |