ogl_beamforming

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

Commit: a8536a6a2243ac2b0d18b42204a4f09a955d1911
Parent: 9c8a7bc079ac401490a60bc754f3f9904edd73b4
Author: Randy Palamar
Date:   Wed, 14 Oct 2026 04:53:26 -0700

das: FORCES: readability for acquisition chunk check

Diffstat:
Mshaders/das.glsl | 10+++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/shaders/das.glsl b/shaders/das.glsl @@ -356,13 +356,14 @@ RESULT_TYPE FORCES(const vec3 world_point) f32 z_delta_squared = axial_coord * axial_coord; f32 transmit_oopz_squared = tx_out_of_plane_delta * tx_out_of_plane_delta + z_delta_squared; - #define AcquisitionChunkSize 16 - const u32 AcquisitionChunkCount = (AcquisitionCount + (AcquisitionChunkSize - 1)) / AcquisitionChunkSize; + const u32 AcquisitionChunkSize = 16; + const bool AcquisitionChunkSafe = ((AcquisitionCount + u32(Sparse)) % AcquisitionChunkSize) == 0; + const u32 AcquisitionChunkCount = (AcquisitionCount + (AcquisitionChunkSize - 1)) / AcquisitionChunkSize; for (u32 acquisition = u32(Sparse); acquisition < AcquisitionCount; acquisition += AcquisitionChunkSize) { f32 transmit_indices[AcquisitionChunkSize]; for (u32 transmit = 0; transmit < AcquisitionChunkSize; transmit++) { u32 index = acquisition + transmit; - if (((AcquisitionCount + u32(Sparse)) % AcquisitionChunkSize) != 0 && (index >= AcquisitionCount)) + if (!AcquisitionChunkSafe && index >= AcquisitionCount) break; f32 tx_channel = Sparse ? f32(S16(HeapBase + SparseElements - 2 * u32(Sparse)).x[index]) : f32(index); f32 transmit_delta = lateral_coord - element_pitch * tx_channel; @@ -379,8 +380,7 @@ RESULT_TYPE FORCES(const vec3 world_point) f32 receive_index = sqrt(receive_delta * receive_delta + z_delta_squared) * SamplingFrequency / SpeedOfSound; f32 apodization = apodize(a_arg); for (u32 transmit = 0; transmit < AcquisitionChunkSize; transmit += 1u, rf_pointer += AcquisitionByteStride) { - if (((AcquisitionCount + u32(Sparse)) % AcquisitionChunkSize) != 0 && - (acquisition + transmit >= AcquisitionCount)) + if (!AcquisitionChunkSafe && (acquisition + transmit >= AcquisitionCount)) break; SAMPLE_TYPE value = apodization * sample_rf(rf_pointer, receive_index + transmit_indices[transmit]);