* Terrain ray cast benchmarks and optimization:
- Added some benchmarks that exercise terrain ray casting.
- Optimized terrain ray casting by removing an unnecessary AABB intersection check (this was suggested by @invertednormal in the original review, but I forgot to actually remove it until now).
- Fixed a bug where we were not normalizing the ray direction before performing the Moller-Trumbore ray<->triangle intersection calculations.
Signed-off-by: bosnichd <bosnichd@amazon.com>
* Update to make work with changes pulled down from mainline.
Signed-off-by: bosnichd <bosnichd@amazon.com>
* Making terrain query resolution a single float instead of a Vector2
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Keeping the concept of different x/y step sizes in region queries since that may be useful and is separate from query resolution. Also keeping the concept of different x/y step sizes in physics since that's independent of the terrain gem.
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Formatting cleanups
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* A few more minor cleanups
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Added support to convert serialized Vector2 query resolution to a single float.
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Switch ray intersection check back to using separate values for x and y resolution
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Fixing new unit tests added to use float query resolution.
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* Updating automated test
Signed-off-by: Ken Pruiksma <pruiksma@amazon.com>
* [Terrain] First pass of the ProcessList and ProcessRegion APIs for retrieving surface data
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Add a couple of more tests. The expected values were plugged in based on the values generated by the brute force approach.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Move some declarations out of loops since they can be reused.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Update all the per position callbacks to pass SurfacePoint refs. Construct only one SurfacePoint object outside the loop which can be reused.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Update tests to use the new per position callbacks
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Add ProcessRegion functions to the terrain benchmark.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Change C style static casts to aznumeric_cast. Add maybe_unused to unused params in benchmarks.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Update the ProcessList API functions to use array_view instead of a vector. This includes some additional changes to satisfy build dependencies.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Add ProcessList API functions to benchmarks
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Update the ProcessList API functions to take Vector2 as input positions
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Revert changes to AtomCore library split. Add partial implementation of span(mostly just copied over from array_view) to AzCore std containers.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Adding some const/non-const overloads that were missing in span
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Move input position list generation to a function
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Bring back Vector3 version of ProcessList functions. Rename Vector2 version to follow similar pattern as the Get functions.
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Split span.h into .h/.inl files
Signed-off-by: amzn-sj <srikkant@amazon.com>
* Add [mayby_unused] for unused parameters to fix build errors
Signed-off-by: amzn-sj <srikkant@amazon.com>