gKit2 light
Toggle main menu visibility
Loading...
Searching...
No Matches
gkit2_tutos
M2
histogram.glsl
1
2
// version finale
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
uint ID= gl_LocalInvocationIndex;
22
if
(ID < 16)
23
group_histogram[ID]= 0;
24
25
// attend que tous les sous groupes s'executent
26
barrier();
27
28
int
local_histogram[16]=
int
[16](0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
29
30
for
(
int
i= 0; i < 16; i++)
31
{
32
ivec2 offset= ivec2((i % 4), (i / 4));
33
vec4
pixel= imageLoad(image, ivec2(gl_WorkGroupID.xy)*32 + ivec2(gl_LocalInvocationID.xy) + offset*8);
34
35
// calculer la cellule de l'histogramme pour le pixel
36
float
grey= (pixel.r + pixel.g + pixel.b) / 3;
// entre 0 et 1
37
int
bin= int(grey * 15);
38
39
local_histogram[bin]++;
40
}
41
42
for
(
int
i= 0; i < 16; i++)
43
if
(local_histogram[i] > 0)
44
atomicAdd(group_histogram[i], local_histogram[i]);
45
46
// attend que tous les sous groupes s'executent
47
barrier();
48
49
if
(ID < 16)
50
atomicAdd(histogram[ID], group_histogram[ID]);
51
}
52
53
#endif
vec4
vecteur generique 4d, ou 3d homogene, utilitaire.
Definition
vec.h:192
Generated on
for gKit2 light by
1.17.0