For direct access use https://forums.oldunreal.com
It's been quite a while since oldunreal had an overhaul, but we are moving to another server which require some updates and changes. The biggest change is the migration of our old reliable YaBB forum to phpBB. This system expects you to login with your username and old password known from YaBB.
If you experience any problems there is also the usual "password forgotten" function. Don't forget to clear your browser cache!
If you have any further concerns feel free to contact me: Smirftsch@oldunreal.com

Crappy software renderer

Questions, Tips&Tricks for the special patches
Post Reply
User avatar
yrex .
OldUnreal Member
Posts: 273
Joined: Wed May 06, 2015 6:46 am
Contact:

Crappy software renderer

Post by yrex . »

Something I've done some time ago. It sucks, but... well, the point is to show that it can be done, and I've never seen anyone else doing something like that before.

My work | contact: ampoyrex at wp dot pl
User avatar
Smirftsch
Administrator
Posts: 8999
Joined: Wed Apr 29, 1998 10:00 pm
Location: NaPali
Contact:

Re: Crappy software renderer

Post by Smirftsch »

if you really wrote an own software renderer here, this is quite impressive, it's a hard and very difficult piece of work!
Last edited by Smirftsch on Tue May 08, 2018 4:22 pm, edited 1 time in total.
Sometimes you have to lose a fight to win the war.
User avatar
AlexNitro44
OldUnreal Member
Posts: 64
Joined: Fri Jun 09, 2017 6:33 pm

Re: Crappy software renderer

Post by AlexNitro44 »

Video looks fairly decent actually, except for masked textures being opaque! It's a shame I can't try it out, gives me a GPF at UOpenGLRenderDevice::Unlock every time, no matter what bit depth, resolution and fullscreen settings I choose. (It DOES use OpenGLDrv.OpenGLRenderDevice, right?)

As for why this hasn't been done before, it's probably because Unreal's software renderer is so good, there's likely little room for improvement. Translucent surfaces don't slow the renderer down as much as in games like Half-Life (even with FastTranslucency disabled). The only real issue with the stock render is how it handles meshes: sometimes they are drawn when not needed, other times they disappear or are drawn on top of BSP surfaces.

Heck, Unreal's software render is faster than Direct3D on some era-correct cards such as the ATI Rage Pro & RIVA 128. Today, there's generally little reason to write a software renderer, given that even integrated graphics can do a far better job and run much faster.

Also, the use of Basic and X86 assembly together is quite unusual. :)
User avatar
yrex .
OldUnreal Member
Posts: 273
Joined: Wed May 06, 2015 6:46 am
Contact:

Re: Crappy software renderer

Post by yrex . »

Okay, so if you feel masochistic enough to actually try to run this...

- Yes, choose OpenGLDrv.OpenGLRenderDevice (it has nothing to do with OpenGL).
- It will only work on Unreal 226 (Gold).
- Use 512x384, other resolutions may crash for some reason.
- Use 32 bits.
- Both fullscreen and windowed mode should work, although the second one is a safer bet if your computer is less than 9 years old.
- Try opening multiple maps, or the same map for the second time.
- I have UseDirectDraw=true and SlowVideoBuffering=false if it matters...

The reason for making a software renderer is that once you've already made it, there's lots of cool stuff you can do with it relatively easily:

- Postprocessing such as bloom or waving screen when you're underwater. Decreasing saturation as brightness decreases. Color look-up tables. Maybe even a crude depth of field if you have a Z-buffer. Low color depth simulation with dither (an "8-bit" filter). A brightness/contrast/gamma filter.
- Or you can redirect the output to e.g. a console window or some other weird stuff.
- You can dither meshes and sprites just like in the '96 betas.
- Water and glass surfaces warping what's behind them, just like in UE3.
- Perspective-correct and correctly clipped meshes.
- Alpha blending, of course.
- Changing the way translucent/modulated mode works e.g. to simulate Glide-style translucency.

Indeed, the Unreal's software renderer is faster than the hardware ones for me, especially when drawing lots of dynamic lights and fog. My guess is that it's because of constant reuploading of lightmaps and fogmaps, which is a costly operation. Perhaps sending all lightmaps as one big texture would make it faster?
My work | contact: ampoyrex at wp dot pl
User avatar
AlexNitro44
OldUnreal Member
Posts: 64
Joined: Fri Jun 09, 2017 6:33 pm

Re: Crappy software renderer

Post by AlexNitro44 »

Thanks, managed to get it to run - 400x300 proved to be most stable, but 512x384 worked too. Results were beautiful:

ImageImage

Over ~1200 BSP nodes causes things to disappear, starting with the HUD, then models and finally level geometry. Things can look crazy when that happens, especially if a skybox is in view.

ImageImage

Can anyone say modern art? :D

I can agree on fog and dynamic lights being massive performance killers, turning those effects off help greatly.
User avatar
lowenz
OldUnreal Member
Posts: 338
Joined: Fri Dec 28, 2007 9:31 am

Re: Crappy software renderer

Post by lowenz »

Something I've done some time ago. It sucks, but... well, the point is to show that it can be done, and I've never seen anyone else doing something like that before.

Amazing!
The task is not so much to see what no one has yet seen, but to think what nobody has yet thought, about that which everybody sees - E.S.
Post Reply

Return to “OpenGL & D3D for Unreal & UnrealTournament”