gKit2 light
Toggle main menu visibility
Loading...
Searching...
No Matches
gkit2_tutos
M2
histogram2.glsl
1
2
// version avec memoire partagee...
3
4
#version 430
5
6
#ifdef COMPUTE_SHADER
7
8
layout(std430, binding= 0) coherent buffer HistogramData
9
{
10
int
histogram[16];
11
};
12
13
// image resultat
14
layout(binding= 0, rgba8) readonly uniform image2D image;
15
16
shared
int
group_histogram[16];
17
18
layout(local_size_x= 8, local_size_y= 8) in;
19
void
main( )
20
{
21
vec4
pixel= imageLoad(image, ivec2(gl_GlobalInvocationID.xy));
22
23
// calculer la cellule de l'histogramme pour le pixel
24
float
grey= (pixel.r + pixel.g + pixel.b) / 3;
// entre 0 et 1
25
int
bin= int(grey * 15);
26
27
uint ID= gl_LocalInvocationIndex;
28
if
(ID < 16)
29
group_histogram[ID]= 0;
30
31
// attend que tous les sous groupes s'executent
32
barrier();
33
34
atomicAdd(group_histogram[bin], 1);
35
36
// attend que tous les sous groupes s'executent
37
barrier();
38
39
if
(ID < 16)
40
atomicAdd(histogram[ID], group_histogram[ID]);
41
}
42
43
#endif
vec4
vecteur generique 4d, ou 3d homogene, utilitaire.
Definition
vec.h:192
Generated on
for gKit2 light by
1.17.0