In addition, we added a bunch of new examples and improvements.
Changelog:
Added new types:
- heds_slmpreview_capturemode_enum : Defines a list of capture modes the SLM preview can be set into. Allows to switch the rendering/capturing mode of the SLM preview window programmatically, see heds_slmpreview_set_capturemode() and heds_slmpreview_get_capturemode(). Is also used in the new API function heds_slmpreview_save_to_file().
- HEDSSLMPF_HideSaveButtons : Allows to hide the save buttons in SLM preview window, to allow a smaller window.
- HEDSSLMPF_HideCaptureModeSelector : Allows to hide the capture mode selection box in SLM preview window, to allow a smaller window.
Added new API functions:
- heds_slm_load_cgh_from_imagedata(): Loads image data as an input signal for the CGH computation and returns a data handle for showing the CGH phase function.
- heds_slm_load_cgh_from_imagefile(): Loads an image file as an input signal for the CGH computation and returns a data handle for showing the CGH phase function.
- heds_slm_show_cgh_from_imagedata(): Directly show the result of heds_slm_load_cgh_from_imagedata().
- heds_slm_show_cgh_from_imagefile(): Directly show the result of heds_slm_load_cgh_from_imagefile().
- heds_set_base_portnumber(): Allows to set a custom network port in case there is an issue with the default port setting.
- heds_slmwindow_device_name(): Gives the name of the currently used SLM device.
- heds_slmwindow_device_serial(): Gives the serial number of the currently used SLM device.
- heds_slmpreview_set_capturemode(): Allows setting the rendering/capturing mode of the SLM preview window through API.
- heds_slmpreview_get_capturemode(): Allows retrieving the currently used cpature mode in SLM preview window.
- heds_slmpreview_save_to_file(): Allows using the save buttons for the different capture modes through the API.
Introduced a new error code for the API function heds_slmwindow_open() to differentiate when an SLM window is not opened because of a cancelled EDID Device Detection, see HEDSERR_DeviceDetectionCancelled, or because of any other errors. This is needed to differentiate between user-expected behavior and actual error cases.
Introduced new preselection string options. See the PDF manual file for more info on available preselection string options. The new options are only available when adding “-slm ” to the already existing preselection string. Then, the new options are:
- “-nogui” option to disable EDID Device Detection GUI in case the SLM cannot be found, instead, error code HEDSERR_DeviceDetectionCancelled is thrown.
- “-osm <mode>” to select different 10-bit output color formats in case you have a monochrome 10-bit capable SLM, like ERIS (operated at 60Hz). “OSM” is an abbrivation for “Output Signal Mode”. <mode> can be one of the following strings: MonoR10bit_R8G2LSB MonoR10bit_G8B2LSB MonoR10bit_G8B2MSB ERIS120Hz_8bit
- “-gapi” to overwrite the default rendering API. Allowed values are “Direct3D11” and “OpenGL”.
- Example combination of a preselection string using the new options: “-slm <device_selection_string> -nogui -osm MonoR10bit_R8G2LSB -gapi OpenGL”
New Examples
Added the following new examples:
- Added cgh_calc.*.
- Added cgh_calc_file.*.
- Added cgh_calc_file_rgb.*.
- Added preselection_string_examples.*.
- Moved phase_overlay_beam_manipulation.* into phase_overlay_beam_manipulation_advanced.*
- Added phase_overlay_beam_manipulation.* as a simple version.
- Moved wavefrontcompensation.* into wavefrontcompensation_advanced.*.
- Added wavefrontcompensation.* as a simple version.
Bug Fixes
- Fixed multiple gray level addressing issues especially when using ERIS 120Hz (and the newly introduced ERIS 60Hz) 10-bit mode with 8-bit data formats. We now clearly address gray levels dependent on the data type, i.e. phase or image data. The gray level addressing is not affected by the SLMs mode, i.e. phase SLM or intensity SLM.
- Reordered the existing error codes, see migration below. The new order sorts the codes better into similar groups.
- Fixed that when connecting to multiple manually started remote processes, the given port number was internally increased. Now the “connect://IP:Port” preselection string will actually connect to the given port, no matter which SLM window ID is used.