Vulkan Renderer for Trem 1.3


#1

Recently I found out that someone implemented a vulkan based renderer for ioquake3 ( https://github.com/suijingfeng/vkQuake3 ). In addition someone made a post about it in the ioquake forums stating that they got it working on macos ( https://discourse.ioquake.org/t/first-shots-of-vkquake3-running-on-metal/1249 ). I did some research on the googles, and it does look like there is now foss support for running vulkan on macos 10.11 and above, so hypothetically we should be able to have a working vulkan based renderer on this engine for all of the platforms we are currently supported.

I figured that porting vkQuake3’s vulkan renderer to this project would be relatively straight forward to do just to see what it’s like. It was a bit less straightforward to do than I initially thought, especially due to this engine making use of C++, and vkQuake3 still being in C, but I did get it to a “somewhat working condition” with a static library build at least on Linux. The Dynamic Library build is broken (probably a makefile issue), a lot of the advanced features need to be implemented/enabled/fixed, and there are some obvious glitches/bugs I noticed on some of the maps I tried it on, but on the most part for at least many old trem maps, it does look better than even renderer2, and at least the fog is done better than the other renderers as well.

Once fixed up, it looks like this vulkan render has potential to be a better renderer than this engine’s current renderer2, in terms of both visuals and hypothetically performance.

Others are welcome and encouraged to work on this, I don’t know when I’ll be getting back to work on this, but what I did so far with it is publicly available here, currently on the vulkan branch:


UTCS UD - Development Thread
#2

Nice project! I wonder that vulkan based renderer did very great job for graphical changes, but I saw on your testing Trem with vulkan render mode of screenshot wasn’t a big difference for comparison at all.

It seems like that vulkan based engine was made improvement for weather environment, like the fog as you said, also some performance should will getting increase by fixing massive old render issues. For my opinion, compare with original render on Trem, I must said that it’s really way better with vulkan render.

One more thing that I caught something is that renderer just had supported up to 4k resolution of monitor display (https://github.com/suijingfeng/vkQuake3/commit/48899ee5d1d1f5f1f0f0dec2a92c03cee9c4d61a). What? Vulkan renderer isn’t really done for people who did using 4k will on the lists? That’s pretty amazing, but I’m not sure that resolution isn’t having to run stable yet…


#3

The implementation of vulkan I did for the 1.3 repo is very unfinished. But it does have potential to have all of the advanced features in the “opengl2” renderer and more, if someone finishes what was started with this implementation. Something to note is the “opengl2” renderer actually uses a lot of the advanced features from OpenGL2, and some features from OpenGL3. As I understand it, Vulkan has all of the features of OpenGL4, but optomized to potentially have significant improvements in performance, if implemented well enough. Also Vulkan is intended to be the successor of OpenGL.

Another thing to note is that while the Vulkan renderer can make the old maps and assets look better, potentially better than the “opengl2” renderer, if this vulkan implementation is completed, like the “opengl2” renderer the true potential can only be unlock through new maps and assets made for the advanced features.

I don’t know if this Vulkan renderer implementation for trem 1.3 will be completed, I mainly ported what I did because the vkQuake project looks interesting and I was curious. For the score of Trem 1.3, the “opengl2” renderer is sufficient enough for graphics improvements, as the main objectives of Trem 1.3 is major game play improvements, easier installation/setup/use, major admin system improvements,and backwards compatibility. Considering that for major versions after 1.3 we plan on moving to the OpenWolf engine that already has far superior graphics implemented, completing the vulkan renderer implementation for Trem 1.3 is not currently a high priority.

However, with that said, if Vulkan for 1.3 does get completed, that would be a nice bonus feature to have. Maybe that will happen at some point, perhaps as that vkQuake project progresses.

I did take more screenshots on other maps with this incomplete implementation, my general impression was that there was a dark feel, however at the same time it felt like it was very easy to see things, like a lot of map features stood out more perhaps from more contrast, and it seemed like even text in maps was a lot easier to read. I should note that in-game with the shader animations it did look better than what is shown in these screenshots.

shot0389 shot0391 shot0394


#4

After seeing all those screenshots, I can’t even imagine all the possibilities this could open.

I can’t wait for it to be fully implemented and see all that will be done with it :smiley: .


#5

Vulkan does indeed same as Direct3D 12 version, but with OpenGL will having backward compatible of setup system, the main features are lower CPU usage and lower overhead, more direct control of GPU. Some considers were supported at least Windows 7, but Windows 7 API are natively run Direct3D 11, if graphics card had supported Direct3D 12 and put into Windows 7, the system still running on version 11.

On Trem 1.3, inside building without lights rendered will not visible any colors, textures and objects at all. With lights emitting on some places will mostly visible on places, and it gives more smoothly of light effects.