ZDaemon Forum Index ZDaemon
Client/Server DOOM
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Support for multi-core software rendering

 
Post new topic   Reply to topic    ZDaemon Forum Index -> Wishlist
View previous topic :: View next topic  
Author Message
Body-Guard
Spamming!


Joined: 08 Jan 2006
Location: Hungary

PostPosted: Fri Mar 16, 2018 6:07 pm    Post subject: Support for multi-core software rendering Reply with quote

Given that openGL renderer is unlikely to happen, it would be great if ZDaemon was capable of utilizing all available cores for rendering.

This could greatly boost performance at CPU intensive rendering tasks such as:

-Middle textures on double sided lines in general
-Translucent textures / sprites
-High resolution textures / sprites
-Mix of the previous two
-Zdaemon's anti aliasing feature in video mode settings
-Portals
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Aeyesx
Spamming!


Joined: 13 Oct 2012
Location: Czech Republic

PostPosted: Sun Mar 18, 2018 11:59 am    Post subject: Reply with quote

Cool idea, but will that even work?
Having 4 threads to render 1 picture... hmm
That would be somewhat hacky

anyway some posts from random discussion on doom world.
https://www.doomworld.com/forum/topic/58383-how-optimizeable-is-the-doom-renderer/

Quote:
"Other people who work on ZDoom/prBoom/etc. (C/C++ based ports) occasionally reported maximum gains of 10% or so with their own multithreaded renderers, so the general feeling is that they are not worth the effort."


or

Quote:
"Affirmative on the first account. I have experimented with multithreading the drawing of wall and sky columns, sky and floor flats, and even masked columns (sprites, transparent textures) in Mocha Doom for at least a year now. You can find posts and reports about this all over DW.

I also tried several multithreading/work distribution strategies. In general, you might get a measurable performance boost only in very specific situations, and then rarely over 10-15% at regular resolutions, when the time to render to the screen is usually a fraction of normal processing. Higher resolutions make multithreading more appealing (I'm always talking about software rendering here), but still nothing to write home about.

Such situations include e.g. rendering many separate visible walls at high resolutions (provided you parallelize by walls and not by columns), or drawing thousands of sprites in something like NUTS.WAD (provided you have devised an efficient method for splitting work/dealing with overlapping/masked textures and avoiding overdrawing).

With all the possible variations and experimentations I've tried in Mocha Doom, I never achieved speedups over 25% on a quad core, because in maps where multithreaded rendering would help, there are often non-rendering related bottlenecks as well (e.g. NOT rendering NUTS.WAD's sprites AT ALL results in 90 FPS at a given resolution, serial rendering results in 60 fps, best possible multithreaded method for rendering sprites resulted in around 70-72 fps, after I got around all stability/display glitches). Even if I could render in zero-time with infinitely many cores, there would still be at most a speedup of 90/60 = 1.5 aka 50%. An overall speedup of 16.7% with just 4 cores seems about right."


Most sense could be rewrite some rutines into assembly (yet most of it already is in asm i think).

Either way
I wouldn't throw the OpenGL idea to trash fully. Its the only proper way afterall. Using a GPU, a dedicated chip for that.
Even oldest GP will wipe the floor with software render.
It's here, and even younger than the software render one.
And possibly easier to code. It's just fully abandoned and stucked
in 1.04 version or so?
Back to top
View user's profile Send private message Send e-mail
Body-Guard
Spamming!


Joined: 08 Jan 2006
Location: Hungary

PostPosted: Sun Mar 18, 2018 1:25 pm    Post subject: Reply with quote

Rendering is a task which is very much suitable for parallelization, no matter if software or hardware rendering is used. How much the performance gain is by doing so is an another question. I realize that in the majority of cases it won't make any significant difference, but in the cases I've written, and in the topic you linked, higher resolutions to render do matter. Most people use 1080p nowadays and that is already high enough resolution to slow things down on complex maps. ZDaemon's anti aliasing feature is something that would clearly benefit from this. Right now, you either use low resolution with anti aliasing, or use high resolution with no anti aliasing because otherwise it would cause huge fps drop.
Of course the best thing would be to have dedicated hardware rendering to let the CPU 'concentrate' on other things like actor management.
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Aeyesx
Spamming!


Joined: 13 Oct 2012
Location: Czech Republic

PostPosted: Sun Mar 18, 2018 1:37 pm    Post subject: Reply with quote

Well I am running 4K (mostly toke it because of mapping) so any enhancement is a good idea.
(also scaling is becoming a must have, since the radar for example becames a tiny square you don't even notice...)
Back to top
View user's profile Send private message Send e-mail
Aeyesx
Spamming!


Joined: 13 Oct 2012
Location: Czech Republic

PostPosted: Thu Jun 14, 2018 2:48 pm    Post subject: Reply with quote

https://ibb.co/jvoXQJ
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    ZDaemon Forum Index -> Wishlist All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group