Open TomClabault opened 16 hours ago
The HIPRT/Orochi maybe a common GPU acceleration library, it can use GPU hardware, but the common "CUDA" cores. My renderer is based on the game-specific raytracing featrues, like the hardware acceleration structure, https://www.khronos.org/blog/ray-tracing-in-vulkan#Acceleration_Structures
Maybe this is the key different?
So this could explain it on NVIDIA hardware but on AMD (and I have an RDNA3 GPU), HIPRT is capable of using hardware accelerated ray tracing.
Did you not make any particular optimization, data packing, anything?
Also it seems that you do not have next event estimation in your renderer do you? I followed the code in RTCommon.glsl::GetRayColor()
but I could not find mentions of NEE.
You only take lights into account when the ray directly hits a light correct?
This would explain a good part of the performance difference.
Sounds like a naive question but after trying your renderer, I noticed that it is noticeably faster than mine (even though mine isn't using Vulkan).
Some things could be improved in my renderer (data compaction/packing and wavefront path tracing mostly) but I don't think that this is going to make my renderer as fast as yours.
So my question is: what are things that thought about when writing your renderer that make it fast? Any optimizations that you made in particular?
What's the secret? :)