You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- `deletePlantInstance()` now cleans up hidden prototype primitives from the Context when all plant instances have been deleted, preventing orphaned hidden primitives and materials that could never be freed. Added optional `include_hidden` parameter to `getAllPlantUUIDs()` to allow querying hidden prototype primitives.
- CMake now verifies that the CUDA language can actually be enabled (e.g., Visual Studio MSBuild integration is installed) before attempting a GPU build in the radiation, collision detection, and energy balance plugins, preventing cryptic build failures when the CUDA toolkit is installed without Visual Studio integration.
- Bundled Vulkan SDK headers and glslang 16.2.0 shader compiler source with the radiation plugin.
Copy file name to clipboardExpand all lines: doc/CHANGELOG.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,17 @@
1
1
# Changelog
2
2
3
+
# [1.3.70] 2026-03-19
4
+
5
+
## Plant Architecture
6
+
-`deletePlantInstance()` now cleans up hidden prototype primitives from the Context when all plant instances have been deleted, preventing orphaned hidden primitives and materials that could never be freed. Added optional `include_hidden` parameter to `getAllPlantUUIDs()` to allow querying hidden prototype primitives.
7
+
8
+
## Radiation
9
+
- Fixed camera pixel label UUID mapping where the CPU-side conversion from internal primitive indices to Helios UUIDs produced incorrect labels when `buildGeometryData` reordered primitives by parent object. The GPU intersection programs already store actual UUIDs directly, so the redundant conversion was removed.
10
+
11
+
## Build System
12
+
- CMake now verifies that the CUDA language can actually be enabled (e.g., Visual Studio MSBuild integration is installed) before attempting a GPU build in the radiation, collision detection, and energy balance plugins, preventing cryptic build failures when the CUDA toolkit is installed without Visual Studio integration.
13
+
- Bundled Vulkan SDK headers and glslang 16.2.0 shader compiler source with the radiation plugin.
Copy file name to clipboardExpand all lines: doc/UserGuide.dox
+2Lines changed: 2 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -235,6 +235,8 @@
235
235
236
236
The NVIDIA CUDA library is required to build the Aerial LiDAR plugin. For the radiation model, CUDA enables the OptiX backend (which is the preferred backend on NVIDIA systems), but is not required if you use the Vulkan backend instead. Consult this page for help choosing the right CUDA version based on your C++ compiler and GPU compute capability: \ref ChoosingCUDA.
237
237
238
+
\note <b>Install Visual Studio before the CUDA Toolkit.</b> The CUDA installer copies MSBuild integration files (<tt>.props</tt>, <tt>.targets</tt>, <tt>.xml</tt>) into Visual Studio's <tt>BuildCustomizations</tt> directory. If Visual Studio is not installed first, these files are placed only in the CUDA Toolkit directory and CMake will fail with "No CUDA toolset found." If you have already installed CUDA before Visual Studio, you can fix this by reinstalling the CUDA Toolkit (or by manually copying the files from <tt>C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v1X.X\\extras\\visual_studio_integration\\MSBuildExtensions\\</tt> into your Visual Studio <tt>BuildCustomizations</tt> directory).
239
+
238
240
The latest CUDA version can be downloaded here: <a href="https://developer.nvidia.com/cuda-downloads">https://developer.nvidia.com/cuda-downloads</a> (note that if you installed Visual Studio 2019 instead of 2022, you'll need to install CUDA 10.2 instead of the latest version). Download the base CUDA Toolkit installer for your Windows OS. Installing from the "exe (network)" type will result in a smaller file being downloaded. Click through the installer and accept all the default options. By default, it should have installed to 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v1X.X\\', where v1X.X is the version that you installed. You can verify this installation location using the file browser.
239
241
240
242
In order to use CUDA within CLion, you need to tell it where to find the CUDA toolkit. To do this, open up the settings in CLion, and go to "Build, Execution, Deployment" and then to CMake. Click the icon next to the "Environment" field to edit environmental variables. Find the variable named "Path", and double click to edit it. At the end of the list of directories, add the path to the CUDA bin folder, i.e., 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v1X.X\\bin;'. Make sure there is a semicolon before and after the path, and that you replace the v1X.X with your actual CUDA version. It is important to hit the return key, which should cause the Path variable list to turn blue. When you hit OK, the Path variable should be listed under the Environment field.
<tr> <td>\ref PlantArchitecture::getAllPlantUUIDs()</td><td>Returns a vector of UUIDs for all primitives the entire plant.</td> </tr>
1128
+
<tr> <td>\ref PlantArchitecture::getAllPlantUUIDs(uint, bool)</td><td>Returns a vector of UUIDs for all primitives in the entire plant. Optionally includes hidden prototype primitives when \p include_hidden is set to true.</td> </tr>
1129
1129
</table>
1130
1130
1131
1131
Note that individual methods to get UUIDs for all organ types are not provided. Instead, the user can query the Object IDs for each organ type and then get the corresponding UUIDs using the Context method \ref helios::Context::getObjectPrimitiveUUIDs().
Copy file name to clipboardExpand all lines: plugins/plantarchitecture/include/PlantArchitecture.h
+10-2Lines changed: 10 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1921,6 +1921,7 @@ class PlantArchitecture {
1921
1921
//! Delete an existing plant instance
1922
1922
/**
1923
1923
* \param[in] plantID ID of the plant instance to be deleted.
1924
+
* \note When all plant instances have been deleted, hidden prototype objects are also cleaned up from the Context.
1924
1925
*/
1925
1926
voiddeletePlantInstance(uint plantID);
1926
1927
@@ -2653,9 +2654,10 @@ class PlantArchitecture {
2653
2654
//! Get primitive UUIDs for all primitives in a given plant
2654
2655
/**
2655
2656
* \param[in] plantID ID of the plant instance.
2656
-
* \return Vector of primitive UUIDs for all primitives in the plant.
2657
+
* \param[in] include_hidden If true, also include UUIDs of hidden prototype primitives managed by this PlantArchitecture instance (prototypes are shared across all plant instances, not specific to one plant).
2658
+
* \return Vector of primitive UUIDs for all primitives in the plant (and optionally hidden prototypes).
0 commit comments