Ray Tracing Without Ray Tracing API
diaryofagraphicsprogrammer.blogspot.com
diaryofagraphicsprogrammer.blogspot.com
also based on last 20+ years in graphics development, in real-time applications you're using APIs with vendor-specific implementations for quite some time now, and you're dependant on driver quality for quite some time now as well. So, what's the author's point?
In offline rendering, people do write their own everything with code paths to accelerate certain stuff where possible by vendor (embree, gpgpu...). You can bet people will, already are in fact, implement support for RTX as well. Implementing your own crap on compute/shade paths will NOT utilise the chip core in RTX cards - which is meant for these new accelerations, the RTCore.
Any developer who is in the awkward middle ground of building their own technology without the resources of a major engine (both in terms of manpower and in relevance to hardware vendors) should expect everything on the bleeding edge to be partially or fully broken, often with no timely recourse. I'm not faulting the vendors too much- the software x hardware situation is absurdly complicated, and spending limited driver resources on a smaller company's use case instead of, say, Unreal and Unity, doesn't make a lot of sense.
But if you're one of those smaller companies, you pretty much have to build the fallback implementation first using common low level primitives that have been tested a million times across the industry. If you don't, your product simply won't work for many (and sometimes most) users. Even when their hardware is supposed to support it.
And speaking from unfortunate experience, the up-front cost of building the fallbacks is often less than trying to make the fancier things work consistently, even though the fancier thing is ostensibly doing the work for you.
I also expect the hardware ray tracing to be heavily used for offline rendering before it becomes mainstream for real time so there will be plenty of usage from demanding customers to iron out any issues.
Ray tracing has a good shot at getting there (and probably in less than 5-10 years), and developers who can afford the suffering will hopefully pave the way, but early adopters should be very wary.
To be clear, I'm not catastrophically pessimistic. I intend to do some work with it, but I'm not under any illusions. I once encountered five distinct blocking driver bugs in the span of a single week. I just assume everything is broken until proven otherwise.
I've been waiting for a concise explanation of that the damn hardware on these cards actually does since the release announcement. Thank-you.
So meshes are still pivotal. I was hoping for something that might lend itself to accelerating rendering of other types of object representation.
Thing with raytracing though is, if anything, complexity is highly reduced compared to rasterization. That's kind of the whole point of it. With it (rt) you trade less complexity and elegance with more computing power needed.
It is nice to have for starters, but in the near future it will die quickly if somebody comes up with an improved incompatible technique, that can be implemented over existing low-level.
You can use it trough Optix which is proprietary low level C++ API based on CUDA, you can use it with Vulkan or DX12 DXR the levels of abstraction are dependent on what API/interface you’ll be using.
On top of that NVIDIA provides ready to use hybrid ray tracing libraries which are built on top of Microsoft DXR currently with Vulkan coming within the next 2-3 months.
But you don’t have to use their hybrid path tracing or denoiser you can develop it completely on your own.