ogl_beamforming

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

Commit: ff26061020309898300211e413f00731f09953c9
Parent: 3a2d7cdb86a8822e4331368b649625dde622aa16
Author: Randy Palamar
Date:   Thu, 20 Feb 2025 10:25:13 -0700

das: small refactor

orientation_projection should just due the projection, not pass back a multiplier

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

diff --git a/shaders/das.glsl b/shaders/das.glsl @@ -81,16 +81,14 @@ vec2 apodize(vec2 value, float apodization_arg, float distance) return value * a * a; } -vec3 orientation_projection(bool rows) +vec3 orientation_projection(vec3 point, bool rows) { - return vec3(float(!rows), float(rows), 1); + return point * vec3(!rows, rows, 1); } vec3 world_space_to_rca_space(vec3 image_point, bool rx_rows) { - vec3 result = (xdc_transform * vec4(image_point, 1)).xyz; - result *= orientation_projection(rx_rows); - return result; + return orientation_projection((xdc_transform * vec4(image_point, 1)).xyz, rx_rows); } float sample_index(float distance) @@ -101,14 +99,14 @@ float sample_index(float distance) float planewave_transmit_distance(vec3 point, float transmit_angle, bool tx_rows) { - return dot(point * orientation_projection(tx_rows), + return dot(orientation_projection(point, tx_rows), vec3(sin(transmit_angle), sin(transmit_angle), cos(transmit_angle))); } float cylindricalwave_transmit_distance(vec3 point, float focal_depth, float transmit_angle, bool tx_rows) { vec3 f = focal_depth * vec3(sin(transmit_angle), sin(transmit_angle), cos(transmit_angle)); - return length((point - f) * orientation_projection(tx_rows)); + return length(orientation_projection(point - f, tx_rows)); } vec2 RCA(vec3 image_point, vec3 delta, float apodization_arg) @@ -120,8 +118,8 @@ vec2 RCA(vec3 image_point, vec3 delta, float apodization_arg) bool tx_col = TX_MODE_TX_COLS(transmit_mode); bool rx_col = TX_MODE_RX_COLS(transmit_mode); - vec3 recieve_point = world_space_to_rca_space(image_point, !rx_col); - delta *= orientation_projection(!rx_col); + vec3 receive_point = world_space_to_rca_space(image_point, !rx_col); + delta = orientation_projection(delta, !rx_col); vec2 sum = vec2(0); /* NOTE: For Each Acquistion in Raw Data */ @@ -143,7 +141,7 @@ vec2 RCA(vec3 image_point, vec3 delta, float apodization_arg) !tx_col); } - vec3 receive_distance = recieve_point; + vec3 receive_distance = receive_point; /* NOTE: For Each Receiver */ // uint j = (dec_data_dim.z - 1) * uint(clamp(u_cycle_t, 0, 1)); { for (uint j = 0; j < dec_data_dim.y; j++) { @@ -168,7 +166,7 @@ vec2 HERCULES(vec3 image_point, vec3 delta, float apodization_arg) float focal_depth = focal_depths[0][0]; float transmit_angle = transmit_angles[0][0]; - vec3 recieve_point = (xdc_transform * vec4(image_point, 1)).xyz; + vec3 receive_point = (xdc_transform * vec4(image_point, 1)).xyz; float transmit_distance; if (isinf(focal_depth)) { @@ -188,7 +186,7 @@ vec2 HERCULES(vec3 image_point, vec3 delta, float apodization_arg) vec3 element_position; if (rx_col) element_position = vec3(j, i, 0) * delta; else element_position = vec3(i, j, 0) * delta; - vec3 receive_distance = recieve_point - element_position; + vec3 receive_distance = receive_point - element_position; float sidx = sample_index(transmit_distance + length(receive_distance)); vec2 valid = vec2(sidx >= 0) * vec2(sidx < dec_data_dim.x); @@ -211,10 +209,6 @@ vec2 uFORCES(vec3 image_point, vec3 delta, float apodization_arg) image_point = (xdc_transform * vec4(image_point, 1)).xyz; - int transmit_orientation = TX_ROWS; - if (transmit_orientation == TX_ROWS) - delta = delta.yxz; - vec3 focal_point_offset = vec3(0, delta.y * floor(dec_data_dim.y / 2), 0); delta.y = 0; @@ -242,7 +236,6 @@ vec2 uFORCES(vec3 image_point, vec3 delta, float apodization_arg) void main() { - /* NOTE: Convert voxel to physical coordinates */ ivec3 out_coord = ivec3(gl_GlobalInvocationID) + u_volume_export_dim_offset; vec3 image_point = calc_image_point(vec3(gl_GlobalInvocationID)