1 | #version 430 |
---|
2 | |
---|
3 | out vec4 fragColour; |
---|
4 | |
---|
5 | uniform vec4 ColourMe[2] = vec4[](vec4(0,0,0,0),vec4(0,0,1,0)); |
---|
6 | |
---|
7 | uniform bool pretty_colours; |
---|
8 | uniform bool image_load_store; |
---|
9 | |
---|
10 | uniform uint colour_factor[3]; |
---|
11 | |
---|
12 | uniform switches |
---|
13 | { |
---|
14 | bool awesome; |
---|
15 | // float R; |
---|
16 | // vec2 GB; |
---|
17 | }; |
---|
18 | |
---|
19 | // buffer colors |
---|
20 | // { |
---|
21 | // float R; |
---|
22 | // // vec2 GB; |
---|
23 | // }; |
---|
24 | uniform colors |
---|
25 | { |
---|
26 | float R; |
---|
27 | // vec2 GB; |
---|
28 | }; |
---|
29 | |
---|
30 | uniform more_switches |
---|
31 | { |
---|
32 | bool more_awesome; |
---|
33 | } moswitch; |
---|
34 | |
---|
35 | layout(binding = 0, offset = 4) uniform atomic_uint atom_counter; |
---|
36 | // layout(binding = 0) uniform atomic_uint atom_counter2; |
---|
37 | |
---|
38 | // layout(binding = 0, r32ui) coherent uniform uimage2D image_data; |
---|
39 | layout(binding = 0, rgba8) coherent uniform image2D image_data; |
---|
40 | |
---|
41 | // Pixel shader |
---|
42 | void main() |
---|
43 | { |
---|
44 | // for (int i = 0; i < 3; i++) { |
---|
45 | // uint counter = atomicCounterIncrement(atom_counter[i]); |
---|
46 | // } |
---|
47 | |
---|
48 | //uint counter = atomicCounterIncrement(atom_counter); |
---|
49 | |
---|
50 | // uint counter2 = atomicCounterIncrement(atom_counter2); |
---|
51 | // uint counter4eva = atomicCounterIncrement(atom_counter[1]); |
---|
52 | |
---|
53 | if (pretty_colours) |
---|
54 | { |
---|
55 | // Test basic setting integer vectors. |
---|
56 | fragColour = ColourMe[0] + ColourMe[1]; // + counter / 4E9; |
---|
57 | } |
---|
58 | else if (image_load_store) |
---|
59 | { |
---|
60 | vec4 in_colour = imageLoad(image_data, ivec2(0)); |
---|
61 | // ivec2 frag_coord = ivec2(clamp(gl_FragCoord.x,0,256), |
---|
62 | // clamp(gl_FragCoord.y,0,256)); |
---|
63 | // vec4 in_colour = imageLoad(image_data, frag_coord); |
---|
64 | |
---|
65 | //imageStore(image_data, ivec2(0), vec4(0,0,1,1)); |
---|
66 | |
---|
67 | // Test image load/store and atomic counters. |
---|
68 | //fragColour = vec4(in_colour,0,0,1); |
---|
69 | fragColour = in_colour; |
---|
70 | } |
---|
71 | else |
---|
72 | { |
---|
73 | // Test uint, bool, and atomic counters. |
---|
74 | //fragColour = counter / 4E9 + vec4(float(colour_factor[0]) / 100, float(colour_factor[1]) / 100, float(colour_factor[2]) / 100, 1); |
---|
75 | if (awesome) |
---|
76 | { |
---|
77 | // midnight green |
---|
78 | // fragColour = vec4(0, 0.28, 0.32, 1); |
---|
79 | fragColour = vec4(R, 0.28, 0.32, 1); |
---|
80 | } |
---|
81 | else if (moswitch.more_awesome) |
---|
82 | { |
---|
83 | // jade |
---|
84 | fragColour = vec4(0, 0.65, 0.41, 1); |
---|
85 | } |
---|
86 | else |
---|
87 | { |
---|
88 | fragColour = vec4(1,1,1,1); |
---|
89 | } |
---|
90 | } |
---|
91 | |
---|
92 | // fragColour = vec4(1,1,1,1); |
---|
93 | // fragColour = mycolour; |
---|
94 | } |
---|