gKit2 light
Loading...
Searching...
No Matches
quads.glsl
Go to the documentation of this file.
1
3
4#version 430
5
6#ifdef VERTEX_SHADER
7
8in vec3 position;
9
10uniform mat4 mvpMatrix;
11
12void 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
25layout(early_fragment_tests) in;
26#endif
27
28layout(binding= 0, r32ui) coherent uniform uimage2D image;
29
30out vec4 fragment_color;
31
32void 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
vecteur generique, utilitaire.
Definition vec.h:169
vecteur generique 4d, ou 3d homogene, utilitaire.
Definition vec.h:192