ogl_beamforming

Ultrasound Beamforming Implemented with OpenGL
git clone anongit@rnpnr.xyz:ogl_beamforming.git
Log | Files | Refs | Feed | Submodules | LICENSE

min_max.glsl (817B)


      1 /* See LICENSE for license details. */
      2 
      3 /* NOTE: Does a binary search in 3D for smallest and largest output values */
      4 layout(local_size_x = 32, local_size_y = 1, local_size_z = 32) in;
      5 
      6 layout(rg32f, binding = 0) readonly  uniform image3D u_out_data_tex;
      7 layout(rg32f, binding = 1) writeonly uniform image3D u_mip_view_tex;
      8 
      9 void main()
     10 {
     11 	ivec3 out_coord = ivec3(gl_GlobalInvocationID.xyz);
     12 
     13 	ivec3 idx = out_coord * 2;
     14 	vec2 min_max = vec2(1000000000, 0);
     15 	for (int i = 0; i < 2; i++) {
     16 		for (int j = 0; j < 2; j++) {
     17 			vec2 a    = imageLoad(u_out_data_tex, idx + ivec3(i, j, 0)).xy;
     18 			vec2 b    = imageLoad(u_out_data_tex, idx + ivec3(i, j, 1)).xy;
     19 			min_max.x = min(min_max.x, min(a.x, b.x));
     20 			min_max.y = max(min_max.y, max(a.y, b.y));
     21 		}
     22 	}
     23 	imageStore(u_mip_view_tex, out_coord, vec4(min_max, 0, 1));
     24 }