Skip to content

Conversation

@smbanx
Copy link
Collaborator

@smbanx smbanx commented Apr 24, 2025

This pull request includes multiple improvements and new additions to the ProjectBuilder plugin.

@smbanx smbanx added the enhancement New feature or request label Apr 24, 2025
@smbanx smbanx requested a review from bnbailey-psl April 24, 2025 16:51
smbanx and others added 7 commits April 27, 2025 02:34
*Added automated performance benchmarking
*Fixed documentation sidebar navigation collapse issue

*Context*
- Added Context::setPrimitiveNormal(), Context::setPrimitiveElevation(), and Context::setPrimitiveAzimuth() methods.
- Added sample_Beta_distribution() funciton to randomly sample from a Beta distribution for inclination angle.
- Added explicit normalize() function for vec2, vec3, and vec4 types.
- Minor performance improvements for Helios vector types and Context operations.
- Added OpenMP parallelization for primitive area calculations from transparency textures.
- Changed the type of 'primitives' and 'objects' from std::map to std::unordered_map to improve performance.
- Changed Context::getObjectPrimitiveUUIDs( uint ObjID ) method to support passing an ObjID of 0.
- Context::getObjectPrimitiveUUIDs( const std::vector<uint> &ObjIDs ) was missing a check for existence of the ObjID object.
- Overloaded getPrimitiveParentObjectID( const std::vector<uint> &UUIDs  ) added to take a vector of UUIDs.
- When tile objects are created, completely transparent sub-patch tiles are no longer deleted because this causes problems in the radiation model.
- Context primitive and object class constructors were made 'protected' so that they cannot be instantiated outside of the Context.
- Many new self-tests were added (credit to Ismael Mayanja for this addition).
- Refactoring of PNG and JPEG image to improve robustness.

*Radiation*
- For two-sided primitives, diffuse ray launches were split into two passes to dramatically improve thread coherence and thus performance.
- An issue with texture mapping for tile objects was fixed.
- OptiX variable declarations were moved to RayTracing.cuh header file.
- Moved texture sampling in rayGeneration.cu into a separate function to avoid redundant code.
- New method for handling periodic boundaries was implemented to improve performance.
- Completely transparent sub-patch tiles are no longer excluded from calculations.

*Plant Architecture*
- Many updates to carbohydrate model code. Credit to Ethan Frehner for these updates.
- Added methods to calculate the leaf azimuth distribution of a plant (see PlantArchitecture::getPlantLeafAzimuthDistribution()), and overloaded versions of leaf angle distribution calculation functions that take a vector of multiple plant IDs.
- Added method to set the leaf angle distribution of a plant.

*Visualizer*
- Visualizer::setColorbarRange() was not properly setting the colorbar range.

Co-authored by: Ismael Mayanja <[email protected]>
Co-authored by: Ethan Frehner <[email protected]>
Co-authored by: Sean Banks <[email protected]>
# Conflicts:
#	plugins/plantarchitecture/include/PlantArchitecture.h
#	plugins/plantarchitecture/src/PlantArchitecture.cpp
#	plugins/projectbuilder/include/ProjectBuilder.h
#	plugins/projectbuilder/src/BuildGeometry.cpp
#	plugins/projectbuilder/src/ProjectBuilder.cpp
#	plugins/visualizer/include/Visualizer.h
#	plugins/visualizer/src/Visualizer.cpp
@bnbailey-psl
Copy link
Contributor

Merged in v1.3.30.

@bnbailey-psl bnbailey-psl deleted the projectbuilder-dev branch June 25, 2025 01:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants