-
Notifications
You must be signed in to change notification settings - Fork 30
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
GPU driven rendering #33
Comments
Now, since mesh-shading is released for OpenGothic can start thinking about next steps. With Idea for emulation workflow:
Spirv patching notes:
Counting shader
Once counter are done, internal shader has to build multi-draw-indirect buffer, with prefix summed counts.
Final draweach Multiple renderpasses
Split command-buffersGenerating extra compute shaders will require a way to insert
Issues
|
Some experiments:
In here:
|
Strategy update, for compue-driven workflow:
Extra descriptor set:
Workflow by example:
Will be translated as:
|
TODO:
|
Current idea for Use Y/Z inputs of // workgroup dimensions
in uvec3 gl_NumWorkGroups; // not sure how this interacts with vkCmdDispatchBase
const uvec3 gl_WorkGroupSize; // unaffected
// workgroup and invocation IDs
in uvec3 gl_WorkGroupID; // Y is polluted
in uvec3 gl_LocalInvocationID; // unaffected
// derived variables
in uvec3 gl_GlobalInvocationID; // polluted, since it is byproduct of gl_WorkGroupID
in uint gl_LocalInvocationIndex; // unaffected |
New idea on how to avoid scratch buffer traffic problems(and make solution more Intel-friendly):
The only problem is |
GL_EXT_spirv_intrinsics is out. Surprisingly allows to bypass some of compiler |
Closing: indirect is mostly implemented in engine (except builtin's - ignore them for now) |
This ticket is to track ideas/known solutions to GPU-driven.
Vulkan-Extensions
https://www.geeks3d.com/20200519/introduction-to-mesh-shaders-opengl-and-vulkan/
https://on-demand.gputechconf.com/siggraph/2018/video/sig1811-3-christoph-kubisch-mesh-shaders.html
http://vbomesh.blogspot.com/2018/09/meshlets.html
https://vkguide.dev/docs/gpudriven/draw_indirect/
https://www.saschawillems.de/blog/2018/09/05/vulkan-conditional-rendering/
Known production solutions
https://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf
https://developer.amd.com/wordpress/media/2013/01/Chapter03-SBOT-March_of_The_Froblins.pdf
https://frostbite-wp-prd.s3.amazonaws.com/wp-content/uploads/2016/03/29204330/GDC_2016_Compute.pdf
https://www.elopezr.com/a-macro-view-of-nanite/
https://advances.realtimerendering.com/s2021/Karis_Nanite_SIGGRAPH_Advances_2021_final.pdf
Current idea
Use
VK_NV_mesh_shader
as starting point. And build some emulation layer to enable mesh-shader on wider range of hardware.The text was updated successfully, but these errors were encountered: