-
-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement Hybrid Frustum Traced Shadows #3965
Comments
I think shadow rendering in 4.0 is in a good enough state to not bother with less proven (and less supported) techniques. There's already support for PCSS-style shadows in 4.0 too. As you said in the proposal:
Hardware support for conservative rasterization also means that this feature won't work on many Vulkan-compatible GPUs, such as Kepler, Maxwell 1 and GCN 2.0+. This means we would have to support two codepaths for shadow rendering, which is a lot to maintain (and probably too much given the relatively low number of rendering contributors). In the far future (4.2 or later), raytraced shadows will likely become more viable from a performance and hardware support standpoint to be worth implementing in core.
|
Closing in favor of more prominent and battle tested techniques (like Raytracing or Virtual Shadowmaps) |
Just for reference, this seems to be the paper that talks about this https://cwyman.org/papers/i3d15_ftizb.pdf |
Describe the project you are working on
Large Open Environments
Describe the problem or limitation you are having in your project
Shadow Detail (Directional Lights especially) are too low quality even at 16k Resolution for the distance with a huge cost (Because of the Resolution), and traditional Shadow Maps are just impractical, as even if it was possible to go past 16k Texture Resolutions for Shadow Maps (by maybe having each split be 16k instead of all 4 being a part of a 16k atlas) it'd eat memory, and would be Very slow and inefficient.
Describe the feature / enhancement and how it helps to overcome the problem or limitation
Hybrid Frustum Traced Shadows (or HFTS) is an NVIDIA developed tech from 2015, that creates pixel level shadows
(similar to ray tracing, just without the need for as strong hardware, it just needs to support Conservative Rasterization - https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_conservative_rasterization.html - 2nd Gen Maxwell and onward support this from NVIDIA, and on Vega and onward from AMD)
HFTS also allows for Contact Hardening Shadows, which in short means the Shadows close to the caster are Hard, while the further away they are from the caster, they get Softer.
HFTS would help with having endless, high quality Directional Shadows because it generates data specifically for the pixels on screen, unlike Shadow Mapping, while also not using Ray Tracing and being much more efficient.
The technology has been used in several AAA games, such as the Division, Watch Dogs 2, Star Wars Battlefront 2 (EA edition), albeit most of these games don't actually benefit from this too much, as Shadow maps work ok in these titles for the most part..
The main reason for this proposal is because this option would allow for much easier work with shadows (due to it being less limiting) at the cost of some performance if one decides to go with it over normal shadow maps, while also making some things that are simply impossible to do well with normal shadow maps, suddenly possible.
Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams
Information about the technique can be found on NVIDIA's page.
https://developer.nvidia.com/hybrid-frustum-traced-shadows-0
The only hurdle is that it's License (Haven't been able to find out more past the Page linked above) might not be MIT friendly and would have to be implemented as a Plugin.
If this enhancement will not be used often, can it be worked around with a few lines of script?
No.
Is there a reason why this should be core and not an add-on in the asset library?
Shadow Rendering is Core, but with the GDExtensions it could probably work as an addon.
The text was updated successfully, but these errors were encountered: