You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We need to demonstrate an ability to load whole 3D scenes and render them in real-time with ray-tracing.
Even though #6 has paved the way to ray tracing, and there is a ray query example now, there is still a few hard steps to make for this to work on complex scenes.
First of all, there needs to be a blade-render crate that takes care of scene resources, BLAS/TLAS, pipelines, and associated buffers. The user would still be in control of encoding the commands, but the renderer would do all the heavy lifting of ray-tracing.
Secondly, we need to find a way for the ray intersection code to fetch the associated object data: vertex/index buffers, material parameters, etc. This is generally done via the device address buffer (and potentially SBT) in Vulkan, but here we have to also make it compatible with Metal. So far, it looks like the only way there is via converting everything to use Metal Argument Buffers. So we'd start by doing the work on Naga side.
Potentially, we'd first get Vulkan running with blade-render, and then focus on ramping up Metal side. There is still a question of what type would be used for the array bindings, since &[BufferPiece; N] is apparently not liked by the orphan rules:
error[E0119]: conflicting implementations of trait `HasShaderBinding` for type `&[BufferPiece; _]`
--> blade-graphics\src\lib.rs:443:1
|
429 | impl<T: bytemuck::Pod> HasShaderBinding for T {
| --------------------------------------------- first implementation here
...
443 | impl<'a, const N: usize> HasShaderBinding for &'a [BufferPiece; N] {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `&[BufferPiece; _]`
|
= note: upstream crates may add a new impl of trait `bytemuck::Pod` for type `&[BufferPiece; _]` in future versions
The text was updated successfully, but these errors were encountered:
@zakarumych Blade is unsafe, so this is OK. I wouldn't mind a solution that checks or shares the structure definition, just haven't found a good one yet.
We need to demonstrate an ability to load whole 3D scenes and render them in real-time with ray-tracing.
Even though #6 has paved the way to ray tracing, and there is a ray query example now, there is still a few hard steps to make for this to work on complex scenes.
Main steps:
blade-render
crate withRenderer
APIBonus:
First of all, there needs to be a
blade-render
crate that takes care of scene resources, BLAS/TLAS, pipelines, and associated buffers. The user would still be in control of encoding the commands, but the renderer would do all the heavy lifting of ray-tracing.Secondly, we need to find a way for the ray intersection code to fetch the associated object data: vertex/index buffers, material parameters, etc. This is generally done via the device address buffer (and potentially SBT) in Vulkan, but here we have to also make it compatible with Metal. So far, it looks like the only way there is via converting everything to use Metal Argument Buffers. So we'd start by doing the work on Naga side.
Potentially, we'd first get Vulkan running with
blade-render
, and then focus on ramping up Metal side. There is still a question of what type would be used for the array bindings, since&[BufferPiece; N]
is apparently not liked by the orphan rules:The text was updated successfully, but these errors were encountered: