Micky C, on 27 September 2018 - 01:46 AM, said:
Out of curiosity, does polymost use rasterisation, or some other technique that’s closer to the classic renderer? I’ve heard discussion in the past of how it’s basically “classic implemented in openGL”, and that it does a lot more work on the CPU than a standard 3D renderer, only passing certain aspects of calculation to the GPU.
Yes both Polymost and Polymer both use rasterization. The delta between the two renders is how each converts the build data to geometry for rasterization. Polymost's approach is on the slow side, but its the most accurate(I do remember you guys complaining about issues with Polymost that weren't buggy in classic). You could get performance gains in Polymost by converting it from OpenGL to Vulkan. I just don't know how big those gains will be. Even if you build the command buffer yourself, you still filling that command buffer with many small draw commands, which require a bunch of random access reads into a VBO. Aside from what I stated above, I don't know how well the memory prefetcher will get that data into the various caches before the data is required by the shader(if the data isn't there in time, you stall). There are a lot of unknowns with DXR, and there are a lot of knowns with Vulkan. I know were all the issues are going to be with continuing down the rasterization route, eventually you will hit a ceiling and the geometry passes are going to take a lot longer compared to other engines. Which means most mappers will be making hard choices between map complexity and enabling fancy effects, this is true in all game engines, but even more so in a PolymerNG style renderer. One of the good things about raytracing is, no matter how many sectors you guys have in your map, it won't affect GPU performance.
So its possible in the standard Duke3D and SW maps, a Vulkan Polymer/Polymost will out perform PolymerRTX on non DXR hardware. Most people now-a-days play usermaps, and I think this is were PolymerRTX will shine on some non DXR hardware, and I also think in both cases, PolymerRTX will out perform in standard maps on DXR hardware.
EDIT:
I have all the DXR rendering code implemented, and the map loader is already modified to build the DXR acceleration structures, but for some reason I only get a black buffer on screen. That's the next thing to resolve.