UTCS UD - Development Thread

Hmm? I normally like work from TheDushan (OpenWolf etc.), but honestly these screenshots…, erm, they don’t really look well imo. Were they meant as a joke? Or is this really the actual state of Tremulous second renderer?
@TheDushan I know you can do cool rendering stuff, wasn’t there some fancy Crysis-like underwater screenshot/video of your renderer somewhere around?
The renderer2 had some serious issues in the past, but at its current state we can make real nice maps for renderer2 (with cascded sun shadows etc.)… Probably Tremulous renderer2 isn’t up to date, normally the new renderer should work well.


These are probably tests of the rendering capabilities, heavily exaggerated so that every little mistake in the code is obvious. But to be honest, these actually do look better than e.g. Unvanquished, which in my opinion simply looks boring…


Ah okay, thanks for the answer! I just asked because currently I’m also working on the renderer2 and I wanted to know if there is something to fix here. Well, your new Tremulous project looks veeeeery promising to me!

@Toku & @lamefun , actually all of the screenshots that @TheDushan have been posting are not renderer2. Renderer2 makes use of features from OpenGL2 and some from OpenGL3. It does have a lot of nice more advanced improvements than the old Tremulous renderer, like specular and normal mapping, work on sun shadows, work on the sunlight, improvements to dynamic lighting, etc.

The screenshots @TheDushan has been showing is from the new OpenWolf engine that we will be working on switching to for the next major version after Tremulous 1.3. OpenWolf’s renderer goes way beyond what renderer2 has to offer, @TheDushan has been working on full implementation of OpenGL4 features. He has features such as physically based rendering (pbr), and tessellation, overhauled shadows from all lighting, dynamic skyboxes, and much much more. It also scans what features your system can support, and automatically disables the features your system doesn’t support. Additionally he has been working on optimizing the performance with all of the fancy advanced features enabled.

As @lamefun suggested in his previous post, @TheDushan has been testing out the most extreme aspects of the available features to work out bugs, and take the renderer capabilities as far as he can take it. It is probably safe to say that this renderer will be the most advanced one available for any idtech3 based game available so far. From what I have seen personally from initial tests so far in-game, this renderer looks comparable with even latest commercially available game engines like UE4 and id Tech 6.

Still, something that I think @TheDushan should consider is implementing a Vulkan backend instead of OpenGL4. We were a bit hesitant on that since at the time there weren’t any Open Source options for supporting Vulkan for macos, but now there is for both macos and iOS:

Vulkan is suppose to have all of the feature capabilities of OpenGL4, but with better optimizations, additionally Vulkan is intended to be OpenGL’s successor.


Ah, well, sounds promising!
Btw, your current renderer2 already has physics based rendering (WIP, we need proper assets)): https://github.com/GrangerHub/tremulous/blob/master/src/renderergl2/tr_init.cpp#L1151

All in all there are only three different idtech3 renderers I am aware of, the one from Robert Beckebans ((ET)Xreal → OpenWolf. Than the one from SmileTheory (James Canete), as part from ioquake3 project (which is also based upon Xreal) → this is your current renderer2, and finally the one from kungfooman: https://github.com/KILLTUBE/libwebgame_idtech3
All in all we are more or less bound to anyone of those three. It would be nice if you will introduce another one.
On the other hand it’s also a bit sad that only Spearmint and Tremulous kept the renderer2 from ioquake3, which is capable of many more features people aware of. Unfortunately there are not much people that make assets for the new renderer. Btw, the (cascade) shadows are faster than Xreal’s real time shadowing, which Xreal completely lacks of.
ETLegacy also switched from ioquake3’s renderer2 to the original ETXreal renderer. The original ETXreal renderer has a few advantages (features) and also a few disadvantages (fog is broken, coronas are missing etc.).
Do you guys want to keep the current ioquake3 renderer2?


For Tremulous 1.3, we intend to keep renderer2 available at least as an option, if another alternative becomes available to try on the current ioquake3 based engine 1.3 uses, we can certainly try it without having to give up renderer2, since there is a cvar for switching between the renderers.

Recently someone that goes by the name suijingfeng on github has been working on a Vulkan version of ioquake3’s renderer2, and I’ve heard that he intends to submit a pull request back to ioquake3 when he’s done. I tried porting some of his work to Trem 1.3 as an exercise to get an idea of what it’s like, although my implementation is very buggy and incomplete: Vulkan Renderer for Trem 1.3 .

As I understand it, and @TheDushan is welcome to correct me on anything, and/or elaborate, the new renderer on the latest OpenWolf ( https://github.com/TheDushan/OpenWolf-Engine , note that repo is not fully up to date, @TheDushan has been doing a lot more work on it since, that he hasn’t pushed publicly yet), is loosely based on ioquake3’s renderer2, and does make use of various pieces from Xreal, etlegacy, idTech 4, from other foss sources, and a lot from @TheDushan’s previous work on OpenWolf in the past, but it has a large amount of original work that @TheDushan has been working on since.

True, it does have some kind of support for pbr in the code, but it is very untested, and it probably needs more work even once assets are made for it. But the new renderer in the OpenWolf engine does have full working support for pbr, as can be seen in these screenshots of the Vega map taken on the OpenWolf engine:


Okay, I can’t say anything about TheDushan’s work if his repository isn’t up-to-date. Well, we’ll see…
Eventually he should really talk to kungfooman, this guy really made pbr look great: idtech3 + playcanvas = win (pbr gltf testing and some sky/cube-maps) - YouTube. I tested his engine and it runs really fast (unfortunately the whole game isn’t much Q3 anymore, but thats just my personal issue).
One day all those coding gurus should work together!
BTW: current vulkan for ioq3 supports none of the renderer2 features afaik, at least when I tested the project. I don’t know how supporting VAOs and how to port stuff to vulkan :frowning:


@Toku Technically with code everything is correct. It’s just a new effects what are on top of the texture. It’s called “texture cleaning” and “expanding dark surfaces” .

Along with that effects on provided photos from bigger tech’s are also “Screen Space Shadow”, “Deferred Rendering”, “Screen Space reflections”, “Screen Space Directional Occlusion”, " Horizon Based Ambient Occlusion (along with effects what are inherited from ioQ3 renderer (cube mapping …).
As you can see on the new pictures what I published and posted here.

With new effects

and without new effects

I didn’t documented or told anyone until now about all this. User or client can choose does he want that or not. It’s matter of choice. Simple as that :slight_smile:

Personally I like that effect, but I am not forcing people to use it.

`wasn’t there some fancy Crysis-like underwater screenshot/video of your renderer somewhere around?

There is :slight_smile:

On the provided photos is active full PBR (Physically Based Rendering) with 2K (2048 x 2048) textures (real PBR textures (Albedo map, Gloss map and inverted nY for the normal map), and because of that pictures and effects look different then what people are use to with “normal” (Diffuse/Bump/Specular) mapping.
If Google search cannot help and explain between difference I can :slight_smile:

Okay, I can’t say anything about TheDushan’s work if his repository isn’t up-to-date.

I didn’t update code at the GitHub for few months, but I will eventually :slight_smile: .Reasons for not doing that is just that how I see all this story and whole idTech3 scene is that no-one is interested and everyone is the critic without asking or want to update knowledge of something new.
If anyone else can do better, can create better, I am here.

I am sorry if textures are not correct, I don’t know how to properly re-texture map, and because of that reason I ask for forgiveness :slight_smile:

Because of that reason,with my latest revision I have introduced possibility to overwrite and override map default conditions. Of course like in last 9+ years nothing is documented and until now only I know how it works.

It’s really simple. With now common map files (mapname.world (that is updated BSP file format), mapname.cm, mapname.bullet) you as map maker get “mapname.env” file.
In that file you can add/edit/move all class names what are inside map source “mapname.map”

this is my initial testing of the feature

	"classname" "worldspawn"

When game load map, engine will check if new “.env” file is present and override “classname” what is hard-cored inside the compiled map.

Logic behind all this is really simple.
There are people who don’t know how to create maps, and don’t want to learn (I am one of them) but they would like just to add/edit some small things there. With this system we are on the middle between idTech3 engine and idTech4 engine.


This is direct comparison of renderer’s between stock and original Tremulous 1.3, stock Unvanquished 0.51.1 and what I am creating.

Tremulous 1.3

Unvanquished 0.51.1

and my work, current build, current code (04/17/2019)

P.S. photo with some new effect


@TheDushan We all know what they are, and what they are saying, don’t listen to them, we shouldn’t talk about others, I’M INTERESTED! And I’m sure many more people are interested in good open source rendering!
Its nice to see that you still working on something! Can’t wait!


After little tweaking, fixing random things, discussing (good luck if and when you are trying to explain to me something and I have some % of alcohol in my liver ) :slight_smile:

results are this


I only have one question if you don’t mind too much, why are most textures so glossy?
I mean sure there is some reflection to metals and so on, but isn’t it a little too much?

I know this might only be a preview problem, a placeholder/test, or something in that regard, but Although I like the idea and where it is going, I actually prefer the flat textures rather than (I don’t know how to phrase it other than this, terribly sorry for that ^^’) dirtied or battered mirror textures.

Don’t take it personnal or anything like so, I’m super out-dated and didn’t manage to catch up on all that changed yet. (I simply didn’t have time to do so yet, and I might not have more either until my situation stabilizes.) But I would really like to see this UD thing / Openwolf become something more and achieve what it can :slight_smile:

(Simply a question, not an attempt to diminish or insult you or your work in any way, shape, or form. I’m simply curious.)


Most of what @TheDushan is demonstrating are capabilities of the new OpenWolf engine with its advanced rendering features, and in some cases, extreme examples. I do agree though that shininess is better used in some places than others, and too much of it can take away. With features such as physically based rendering, tessellation, and so one, an expert 3d artist has a ton to work with to create a good balance of all sorts of highly customized materials.


I think the purpose of overly bumpy and glossy textures is to test whether the rendering features work correctly even when brought to their limits, because with a regular texture a subtle bug might not be noticeable, and then an artist might try to use the feature in an unexpected way to achieve some interesting effect, and be prevented from doing so by the bug, and then simply abandon the idea rather than reporting the bug. Arch Linux had such a problem with bugs being ignored that they made an announcement on their forums:


File bugs, don’t ignore them! That’s how bugs perpetuate and last for ages. Or maybe a bug is lingering/unconfirmed and we need more info, you could provide that info. (Cue Uncle Sam?)

[See full thread]


Alrighty! Thanks for clarifying it ^^. I just wanted to make sure it wouldn’t end up being 100% mirrors everywhere in the game :stuck_out_tongue: I sure love the granger’s look, but not enough to have him staring at me 24/7.


Textures are not so glossy, it is just a PBR effect on top of the current textures (what comes with the map), they are not made for PBR.
Textures in the PK3 file are just regular (Normal/Specular/Diffuse) while PBR expect (Albedo/ Displacement/Gloss/etc…)
I am not taking anything personal, I am doing this for fun :slight_smile:, so relax.

You cannot see properly the effect from the video’s or from the photo’s. For the full experience you need to get a debug build in order to test it, and then to say anything about the implementation.
I can provide that if anyone need it for the Windows, Linux and for the FreeBSD. =]

I am not replying just to you, now I am replying to everyone,

Without the proper knowledge of something new or something different, you cannot know what is that, and because of not knowing what’s are “changed / added / removed / replaced” you cannot be objective with your reply.

I admit that in the past I made wrong and bad development choices, but I publicly admitted them all.

This is my latest work at this moment.

Please, keep in mind that I am not trolling or disrespecting anyone. If I did, I am sorry.


I didn’t mean anything I wrote in a bad way ^^ Don’t get me wrong, I completely support such development. I simply wanted some information on that matter since I cannot currently play tremulous for various personal reasons and wanted to get up-to-date with what was happening currently.

I just really like tremulous and it’s hard for me to see so much changes when I’m still used to 1.1’s things :stuck_out_tongue: (Not hard in a wrong way, I like the changes, but it’s hard adapting to it :wink: )
But seeing the new capabilities is super refreshing and won’t hurt the game in any way shape or form, in fact it will allow the game to do way more in a way that doesn’t break its feeling in my opinion.

Lastly, I didn’t meant what I wrote as a way to discriminate your work. In fact I really like the direction it is going, I simply wanted to get up-to-date :slight_smile: Keep up the good work, I can’t wait to see more!