Vulkan Ray Traced Pipeline #1900
Replies: 3 comments 11 replies
|
The game and its content were originally designed for a DirectX 8 pipeline with no ray tracing or per-pixel shading support, so a lot of the lighting is baked as vertex colours into the geometry data without corresponding in-game light sources. During the development of the Metal and OpenGL rendering pipelines, per-pixel lighting was tested but found to yield different rendering results than the expected per-vertex lighting. We wouldn't be opposed to a Vulkan rendering pipeline, but the expectation would be for it to visually match the existing Direct3D9 rendering output. |
|
The pipeline is also very much not bindless right now. D3D9 doesn't support bindless rendering. The Metal renderer has bindless rendering on a branch - and I'm hoping to get it integrated but it has not been so far. Even then - the bindless pipeline is limited to just the material portions of rendering. I'm hoping to get an architecture defined to allow bindless rendering of both meshes and materials together. But the pipeline has several tricks it plays that modify a lot of resources on the fly which makes it trickier to support bindless. And the pipeline doesn't have a clean linkage of materials and meshes that provide an easy storage point for bindless resources. Ray tracing has not been considered for the bindless Metal pipeline because of the light baking in the textures - as @dpogue mentioned. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
I was considering what the interest would be if i were to add a some hybrid lighting model. I'm not sure what that would be like though and what technologies would be best. I currently have this working for Amnesia the Dark Descent but had to gut the opengl backend because it coupled very deeply into how the graphics part of the codebase worked. something like this would probably need to move a lot of the data to a bindless architecture. So ill have to bind all the textures/meshes into a couple large ssbo. assuming this was built with opengl in mind there is a lot of state driven logic so i don't think a conversion like this will be straightforward.
In terms of the methods for direct lighting im using Restir and a surfel radiance cache for indirect lighting. Not sure if something else would be better wouldn't mind looking into some different methods to achieve a lighting model that fits better with this
engine.
I attached a couple of images of this working in my other project. I don't want to promise anything since this is a fairly complex process that will take quite a while to get something stable. How this fits in with the rest of the tooling is a question i would need to explore more. I just wanted to share my thoughts and see if there is any interest.
All reactions