* object rendering can now be disabled in reflections; removed custom ray tracing inclusion masks for more unified system based on object flags and to not interfere with user logic layer masks; other scripting updates;
* unregister editor printscreen
* point light shadow artifact fix
For wi::scene::Scene::Intersects(Capsule), if the overlap depth
is >= the capsule radius, and the line segment that makes up the
spine of the capsule intersects a triangle, then the reported
contact normal would be (NaN, NaN, Nan). In this special case, the closest
point on the capsule line segment to the triangle ("Center" in the code)
would always be the same as the "bestPoint", which leads up to a divide
by zero in the normal vector calculation.
This fix detects this case, and:
1) reports the triangle normal when this special case prevents
calculation of the normal.
2) corrects the depth calculation for this special case to take into
the distance from the "Center" point on the spine to the actual
penetrating endpoint of the spine, projected onto the triangle
normal.
* vulkan: no need to explicitly enable VK_KHR_get_physical_device_properties2
It has been promoted to core Vulkan 1.1
* vulkan: fix creating and destroying swapchains
We can't reuse a semaphore if it is signalled. There is no
easy way to wait on the swapchain semaphore without some ugly hacks,
so instead we just create a new one.
We also need make sure we only destroy old swapchains once they are
(probably) not used anymore. The recent VK_EXT_swapchain_maintenance1
extension would make all of this much easier, but as of now, it's not yet
widely supported.
* cleanup: reduce amount of copy-paste in AllocationHandler::Update()
Using a lambda allows us to remove the copy-pasted loop and increase legibility
by reducing the code by almost two thirds with no performance impact: both GCC
and MSVC generate almost the same code as in the old version, the differences
being often due to slightly different register allocations.
* vulkan: ensure render area is not greater than color attachments
swapchain->desc.width/height can differ from the swapChainExtent,
for example if a VK_KHR_SUBOPTIMAL happened before we received the
"window size changed" event, or if it is not between the minimal
or maximal extents.
Ensure we don't use a render area larger than the color attachments,
as this violates VUID-VkRenderingInfo-pNext-06079 and 06080.