gKit2 light
Toggle main menu visibility
Loading...
Searching...
No Matches
gkit2_tutos
M2
quads.glsl
Go to the documentation of this file.
1
3
4
#version 430
5
6
#ifdef VERTEX_SHADER
7
8
in
vec3
position;
9
10
uniform mat4 mvpMatrix;
11
12
void
main( )
13
{
14
gl_Position= mvpMatrix *
vec4
(position, 1);
15
}
16
#endif
17
18
19
#ifdef FRAGMENT_SHADER
20
21
22
#extension GL_KHR_shader_subgroup_ballot : require
23
24
#ifdef EARLY_TESTS
25
layout(early_fragment_tests) in;
26
#endif
27
28
layout(binding= 0, r32ui) coherent uniform uimage2D image;
29
30
out
vec4
fragment_color;
31
32
void
main( )
33
{
34
//~ imageAtomicAdd(image, ivec2(gl_FragCoord.xy), 1);
35
36
// quads
37
ivec2 pixel= ivec2(gl_FragCoord.xy);
38
ivec2 quad= pixel / 2;
39
40
// enumere tous les quads
41
while
(
true
)
42
{
43
ivec2 quad1= subgroupBroadcastFirst( quad );
44
45
if
( gl_SubgroupInvocationID == subgroupBroadcastFirst( gl_SubgroupInvocationID ) )
46
imageAtomicAdd(image, quad1, 1u);
// selectionne un thread du quad
47
48
if
(quad == quad1)
49
break
;
// termine les 4 threads du quad
50
}
51
52
subgroupBarrier();
53
54
fragment_color=
vec4
(1, 0, 0, 1);
55
}
56
#endif
vec3
vecteur generique, utilitaire.
Definition
vec.h:169
vec4
vecteur generique 4d, ou 3d homogene, utilitaire.
Definition
vec.h:192
Generated on
for gKit2 light by
1.17.0