Page 1 of 42

QZDoom - ZDoom with True-Color (Version 1.3.0 released!)

Posted: Sun Sep 25, 2016 5:25 am
by Rachael
Image

Bugs go here (registration not required)

What is QZDoom?

QZDoom is a continuation of dpJudas's truecolor software rendering, merged with and forked from GZDoom.

Why merge with GZDoom?

Compatibility. It helps with the ever-growing wishlist of features for the port. If it runs on GZDoom, it runs on QZDoom, and hopefully QZDoom will eventually be able to "borrow" some of GZDoom's effects. It is also a goal that if this project is able to inherit enough of GZDoom's features, it will allow GZDoom itself to move forward further than would otherwise be possible since some users will no longer be held back by such a move. This is not intended to replace GZDoom, but rather, to exist alongside it, simply to offer an alternate renderer for development, testing, and playing.

Project Wishlist

These are features that are planned for QZDoom. Not all of them may make it in.
  • Bloom/tonemaps
  • "GL" Lights
  • "GL" Skyboxes
  • Model support (will be done in a similar manner to voxels, so it won't be as good as GZDoom's)
  • True freelook support
  • GZDoom's texture upscaling filters (HQNx, xBRZ, etc)
  • Floor decals
  • Flat&Wall sprites
Screenshots?

Image Image Image Image Image Image Image Image

Download

Home Page: http://qzdoom.drdteam.org/
Source: https://github.com/madame-rachelle/qzdoom
Official Release: http://qzdoom.drdteam.org/page.php?p=download
Git Builds: http://devbuilds.drdteam.org/qzdoom

Special thanks
  • dpJudas for his extensive work and efforts to make this a reality!
  • Graf Zahl for GZDoom
  • Randy Heit for ZDoom
  • id Software, Raven, Velocity, etc - All the games that ZDoom supports
  • All the various contributors and mod authors over the years, some of whom's work has been featured in these screenshots, but also those who have contributed code to both Doom and ZDoom and its family projects.
  • Blzut3 & _mental_ - Mac OS support

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Sun Sep 25, 2016 6:32 am
by Nash
So this is basically "GZDoom for people who can't run the latest OpenGL", am I understanding this correctly... ?

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Sun Sep 25, 2016 8:48 am
by _mental_
This PR fixes it on macOS. I can probably miss something but software (true color and original) and OpenGL renderers work now.

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Sun Sep 25, 2016 11:13 am
by Rachael
Nash wrote:So this is basically "GZDoom for people who can't run the latest OpenGL", am I understanding this correctly... ?
It's still ZDoom's software renderer - just with Truecolor changes. Eventually, I am hoping to make it into something that is compatible with GZDoom.
_mental_ wrote:This PR fixes it on macOS. I can probably miss something but software (true color and original) and OpenGL renderers work now.
Merged - thank you. :)

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Sun Sep 25, 2016 11:16 am
by Accensus
There's an issue with the QZDoom image in this thread. Can't load it. Says the site can't be reached.

EDIT: Works now. Probably an issue on my side if you haven't touched anything.

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Sun Sep 25, 2016 11:32 am
by Rachael
Could just be Dreamhost. Everything on this thread is loaded from a mirror thread on DRD Team where everything is actually stored. I've nailed the problem down to Dreamhost's mySQL servers - for some reason they're slower than snails in the middle of February, but there's nothing I can do about it unless I move to a different host. Since DRD Team isn't that big, I haven't seen much reason to.

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Sun Sep 25, 2016 11:36 am
by YukiHerz
Just what i needed, since my computer was cursed with a non-descript intel gpu for which i can't install drivers beyond 9.somethingthatbreaksalotofthings.

Thanks for putting this together, and thanks to dpJudas for his work on the renderer, lets hope this takes off smoothly.

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Sun Sep 25, 2016 3:17 pm
by dpJudas
Thanks HazeBandicoot. Maybe I'll do some improvements on this - we'll see. I have some old LLVM code that I'm thinking about resurrecting that could turn out to be very useful for QZDoom.

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Sun Sep 25, 2016 3:44 pm
by Rachael
Fixed Linux compile. Have fun, all. ^_^
HazeBandicoot wrote:Thanks for putting this together, and thanks to dpJudas for his work on the renderer, lets hope this takes off smoothly.
You're welcome. :) This project is mostly for fun (and more of a learning experience for me). I'm hoping it takes off smoothly, too. :)

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Sun Sep 25, 2016 10:14 pm
by Nash
So why was it decided that the true colour renderer be a separate program instead of being merged into ZDoom? Was there any discussion that led to this decision?

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Mon Sep 26, 2016 2:12 am
by Rachael
I'm not going to speak for dpJudas on this one - he can speak for himself - but for my part, the decision was made to do it simply because the original code submission had been waiting in queue for so long.

Also, when I discovered that the code was incompatible with GZDoom, I realized it needed to be fixed, anyway. Randi cares about GZDoom enough that I don't think she'll merge in such code if she knew it would cause major problems down the line with GZDoom. I had a little bit of help from dpJudas doing that, but for the most part, I was able to resolve most of the conflicts and function reprototyping on my own in order to get it working. But hey, if I can do that, I know Graf/Randi can too, so it's not impossible - especially since I already did most of the work for them, anyway, now.

When it comes to that, and the lack of response Randi has given the issue for well over 4 months now, it was decided in order to keep this alive, forking would be the best option. As far as I know Randi's still welcome to take the true-color renderer in the state that it is in, right now, but it's going to get harder than it is to do it right now, and it will only get harder as time goes on and the merge history starts getting buried under new features with both GZDoom and ZDoom themselves moving forward, and QZDoom right along with them.

I think what it really comes down to, is after reading some of the docs and things that Randi typed up specifically about the renderer she didn't see much future for the software renderer in its current state, anyhow, if I had to guess, without some significant changes that were made unnecessary by the later introduction of ZDoomGL and GZDoom.

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Mon Sep 26, 2016 3:48 am
by Hipnotic Rogue
This looks really interesting. A true colour software renderer seems pretty cool. I look forward to playing around with it.

A quick question though. Are the computer overheads much higher than ZDoom?

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Mon Sep 26, 2016 3:54 am
by Rachael
From what I can tell it's about the same. An important thing to note is with the new truecolor renderer each column is split into worker threads, granting a huge benefit to multicore CPU's.

The best map is the one of the ones that are most notorious for causing problems in all versions of ZDoom and GZDoom - Frozen Time. I recommend testing this in ZDoom, GZDoom, and QZDoom, to compare renderer speeds. The trouble spot is at "Warp 4700 6200" facing out towards the bridge. Note that lower resolutions will be significantly faster with all 3, but especially moreso with ZDoom and QZDoom.

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Mon Sep 26, 2016 11:11 am
by dpJudas
Given the size of the truecolor patch, it might be better to just give it its own fork like Eruanna has done. The only catch is, as Eruanna also mentioned, that getting any of it back into zdoom would require some extra work as it diverges from my original PR.

On the plus side, it having its own fork will allow it to do some things that probably would never been accepted into zdoom. At the end of my initial coding on the true color stuff I had gotten quite annoyed at how poorly MSVC was doing at optimizing the drawers. There are too many of them to type them by hand using intrinsics, and my template "magic" approaches fed MSVC with immutable constants but the compiler was too [censored word] to take advantage of it. So I ended up in a situation where the drawer functions were still very difficult to read, but already had lost some speed since earlier, less readable, iterations.

I've added an experimental 'llvmcompiler' branch to qzdoom that uses LLVM to JIT functions. Its goal is to solve the above problem by talking to the compiler backend at a much lower level where inlining, constants, pointer aliasing, and optimization passes can be controlled a lot better. It also can compile to exactly the CPU running on the target machine. And, theoretically, it could parse gzdoom hardware shaders' glsl and emit optimized code on the fly. The catch is that this adds LLVM to the dependency libraries - maybe not a price everyone would be willing to pay.

I'll post something again once I got it to codegen some of the main drawers so I'll get some actual speed numbers to compare against the MSVC intrinsics drawers.

Another thing I'd also like to do at some point is get rid of the old assembly drawers for palette mode. Not so much because they are bad, but because the multithreading done for true color can also be done for palette mode, but I don't have the skills or interest to code in assembly. Just ditching them probably wouldn't fly in a PR request either.

Re: QZDoom - ZDoom with True-Color (WIP)

Posted: Tue Sep 27, 2016 8:14 pm
by Rachael
Updated.

New fixes are pretty much just Randi's round of fixes from today.

Code: Select all

Fixed: Y and Z were flipped for sound velocity
Fixed: Heretic platforms make a mid-move sound, unlike Doom's
Fixed: The menu no longer refreshed the screen border