ogl_beamforming

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

beamformer.meta (3948B)


      1 @Enumeration(DataKind [Int16 Int16Complex Float32 Float32Complex])
      2 @Enumeration(DecodeMode [None Hadamard])
      3 @Enumeration(RCAOrientation [None Rows Columns])
      4 @Enumeration(SamplingMode [2X 4X])
      5 
      6 @Table([name pretty_name fixed_transmits]) AcquisitionKind
      7 {
      8 	[FORCES         FORCES         1]
      9 	[UFORCES        UFORCES        0]
     10 	[HERCULES       HERCULES       1]
     11 	[RCA_VLS        VLS            0]
     12 	[RCA_TPW        TPW            0]
     13 	[UHERCULES      UHERCULES      0]
     14 	[RACES          RACES          1]
     15 	[EPIC_FORCES    EPIC-FORCES    1]
     16 	[EPIC_UFORCES   EPIC-UFORCES   0]
     17 	[EPIC_UHERCULES EPIC-UHERCULES 0]
     18 	[Flash          Flash          0]
     19 	[HERO_PA        HERO-PA        0]
     20 }
     21 
     22 @Table([name]) InterpolationMode
     23 {
     24 	[Nearest]
     25 	[Linear]
     26 	[Cubic]
     27 }
     28 
     29 @Expand(AcquisitionKind)   @Enumeration(AcquisitionKind `$(name)`)
     30 @Expand(InterpolationMode) @Enumeration(InterpolationMode `$(name)`)
     31 
     32 @Emit
     33 {
     34 	`read_only global u8 beamformer_acquisition_kind_has_fixed_transmits[] = {`
     35 	@Expand(AcquisitionKind) `	$(fixed_transmits),`
     36 	`};`
     37 }
     38 
     39 @Emit
     40 {
     41 	`read_only global s8 beamformer_acquisition_kind_strings[] = {`
     42 	@Expand(AcquisitionKind) `	s8_comp("$(pretty_name)"),`
     43 	`};`
     44 }
     45 
     46 @Emit
     47 {
     48 	`read_only global s8 beamformer_interpolation_mode_strings[] = {`
     49 	@Expand(InterpolationMode) `	s8_comp("$(name)"),`
     50 	`};`
     51 }
     52 
     53 @ShaderGroup Compute
     54 {
     55 	@Shader CudaDecode
     56 	@Shader CudaHilbert
     57 
     58 	@Shader(decode.glsl) Decode
     59 	{
     60 		@Enumeration(DataKind)
     61 		@Enumeration(DecodeMode)
     62 		@Flags([DilateOutput])
     63 
     64 		@Bake
     65 		{
     66 			@BakeInt(DecodeMode           decode_mode           )
     67 			@BakeInt(InputChannelStride   input_channel_stride  )
     68 			@BakeInt(InputSampleStride    input_sample_stride   )
     69 			@BakeInt(InputTransmitStride  input_transmit_stride )
     70 			@BakeInt(OutputChannelStride  output_channel_stride )
     71 			@BakeInt(OutputSampleStride   output_sample_stride  )
     72 			@BakeInt(OutputTransmitStride output_transmit_stride)
     73 			@BakeInt(TransmitCount        transmit_count        )
     74 		}
     75 	}
     76 
     77 	@Shader(filter.glsl) Filter
     78 	{
     79 		@Enumeration(DataKind)
     80 		@Enumeration(SamplingMode)
     81 		@Flags([ComplexFilter MapChannels])
     82 
     83 		@Bake
     84 		{
     85 			@BakeInt(DecimationRate       decimation_rate       )
     86 			@BakeInt(FilterLength         filter_length         )
     87 			@BakeInt(InputChannelStride   input_channel_stride  )
     88 			@BakeInt(InputSampleStride    input_sample_stride   )
     89 			@BakeInt(InputTransmitStride  input_transmit_stride )
     90 			@BakeInt(OutputChannelStride  output_channel_stride )
     91 			@BakeInt(OutputSampleStride   output_sample_stride  )
     92 			@BakeInt(OutputTransmitStride output_transmit_stride)
     93 			@BakeInt(SamplingMode         sampling_mode         )
     94 			@BakeFloat(DemodulationFrequency demodulation_frequency)
     95 			@BakeFloat(SamplingFrequency     sampling_frequency    )
     96 		}
     97 
     98 		@SubShader Demodulate
     99 	}
    100 
    101 	@Shader(das.glsl) DAS
    102 	{
    103 		@Enumeration(AcquisitionKind)
    104 		@Enumeration(DataKind)
    105 		@Enumeration(InterpolationMode)
    106 		@Enumeration(RCAOrientation)
    107 		@Flags([Fast Sparse CoherencyWeighting SingleFocus SingleOrientation])
    108 
    109 		@Bake
    110 		{
    111 			@BakeInt(AcquisitionCount           acquisition_count           )
    112 			@BakeInt(AcquisitionKind            acquisition_kind            )
    113 			@BakeInt(ChannelCount               channel_count               )
    114 			@BakeInt(InterpolationMode          interpolation_mode          )
    115 			@BakeInt(SampleCount                sample_count                )
    116 			@BakeInt(TransmitReceiveOrientation transmit_receive_orientation)
    117 
    118 			@BakeFloat(DemodulationFrequency demodulation_frequency)
    119 			@BakeFloat(FNumber               f_number              )
    120 			@BakeFloat(FocusDepth            focus_depth           )
    121 			@BakeFloat(SamplingFrequency     sampling_frequency    )
    122 			@BakeFloat(SpeedOfSound          speed_of_sound        )
    123 			@BakeFloat(TimeOffset            time_offset           )
    124 			@BakeFloat(TransmitAngle         transmit_angle        )
    125 		}
    126 	}
    127 
    128 	@Shader(min_max.glsl) MinMax
    129 	@Shader(sum.glsl) Sum
    130 }
    131 
    132 @ShaderGroup Render
    133 {
    134 	@Shader(render_3d.frag.glsl) Render3D
    135 }