Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
hobomaster22

Helion - C# (0.9.2.9 4/24 - Goodbye BSP tree rendering)

Recommended Posts

Okay so I tested a couple of wads out to see what I get. It looks like my computer is definitely on the lower end as I get below 60 fps on all four wads.

The specs of my computer are:


Intel core i5-4570 cpu @ 3.20hgz (quad-core)
32gb ram

Intel hd graphics 4600
2gb of graphics ram (shared)

And here is the average fps I got on each wad I tested. The best fps seemed to be on crazymaze and the worst was Sunlust map30.

 

(Average fps)

45 fps crazymaze
40 fps planisphere
30 fps planisphere 2
20 fps sunlust map30

 

Share this post


Link to post
42 minutes ago, Madgunner said:

Okay so I tested a couple of wads out to see what I get. It looks like my computer is definitely on the lower end as I get below 60 fps on all four wads.

The specs of my computer are:


Intel core i5-4570 cpu @ 3.20hgz (quad-core)
32gb ram

Intel hd graphics 4600
2gb of graphics ram (shared)

And here is the average fps I got on each wad I tested. The best fps seemed to be on crazymaze and the worst was Sunlust map30.

 

(Average fps)

45 fps crazymaze
40 fps planisphere
30 fps planisphere 2
20 fps sunlust map30 

 


Thanks for going through some of the maps. It's mostly that GPU that is hurting you. It's an integrated card from 2013 and not even a good one. You are running some of the toughest maps on slow hardware that is nearly a decade old. To put it in perspective my high end laptop with a Ryzen and RTX 3070 struggles to stay above 30 fps with Planisphere 2 using GZDoom. In Helion I can average 1,200FPS viewing the entire map. We have been working on some big upgrades that increase performance massively in a few different areas. We are just competing with ourselves at this point because the FPS numbers have become so obscene. There is still a lot we can do to push even further believe it or not. I am hoping to show off the cool new things we are working on very soon. For one, the monster closet discussion has become a reality. We can automatically detect monster closets in maps like Sunder and run limited routines for the monsters. No map changes required for this feature :)

Share this post


Link to post
4 hours ago, hobomaster22 said:


Thanks for going through some of the maps. It's mostly that GPU that is hurting you. It's an integrated card from 2013 and not even a good one. You are running some of the toughest maps on slow hardware that is nearly a decade old. To put it in perspective my high end laptop with a Ryzen and RTX 3070 struggles to stay above 30 fps with Planisphere 2 using GZDoom. In Helion I can average 1,200FPS viewing the entire map. We have been working on some big upgrades that increase performance massively in a few different areas. We are just competing with ourselves at this point because the FPS numbers have become so obscene. There is still a lot we can do to push even further believe it or not. I am hoping to show off the cool new things we are working on very soon. For one, the monster closet discussion has become a reality. We can automatically detect monster closets in maps like Sunder and run limited routines for the monsters. No map changes required for this feature :)

Yeah I figured it's a pretty crappy card haha. I have another computer with a slightly better card in it, but I have to reinstall windows on it. I'll do it within the next couple of weeks and test it again and see what my fps is.

Quick question, are you guys currently accepting patches for this? I'm going to be busy for at least another few months finishing my Unity game, but after that I'd like to give my hand a try at coding for this. I'm definitely not as good as you guys are, but I'm definitely willing to listen and learn. I'll probably have to brush up on my linear algebra some more too, but luckily there's now great resources for that online.

Share this post


Link to post
9 hours ago, Madgunner said:

Yeah I figured it's a pretty crappy card haha. I have another computer with a slightly better card in it, but I have to reinstall windows on it. I'll do it within the next couple of weeks and test it again and see what my fps is.

Quick question, are you guys currently accepting patches for this? I'm going to be busy for at least another few months finishing my Unity game, but after that I'd like to give my hand a try at coding for this. I'm definitely not as good as you guys are, but I'm definitely willing to listen and learn. I'll probably have to brush up on my linear algebra some more too, but luckily there's now great resources for that online.

We will accept pull requests. There’s always work to be done that doesn’t require math at all. Most of the difficult stuff is pretty much handled and I honestly haven’t touched much math in Helion lately. The vector classes wrap the spherical coordinate math which is the most common math functions that we encounter anyway.

Share this post


Link to post


Quick monster closet demo. Automatically detected on map load. The monsters in closets are modified to render as tech columns so they are visible for the demo.

Share this post


Link to post

Playing with some ideas to get sprite rendering faster since it's the largest bottleneck. The first idea was using a geometry shader which was much faster on RTX cards but ended up being slower on integrated cards. For whatever reason all implementations seem to suck for changing textures in the geometry shader. Changing textures is always a slowdown, but it was absolutely tanking performance on integrated cards. So I went back to the original implementation and moved interpolation on the shader which ended up being most of the increase in performance. Forcing to render all sprites in nuts3 went from about 130FPS to just over 1,400FPS. Continuing down the geometry shader path is probably the most optimal, but say it bumps the average up to 2k FPS it's probably not worth the effort.

screenshot_Helion_nuts3.png.4483592796437556f06cf79438345d1f.png

Share this post


Link to post

Played a few more maps on the latest build, and everything is averaging around 200fps on my GTX1060 laptop, so the latest round of efficiencies are definitely proving effective!

 

Obviously there's a lot of QOL things that still need to be implemented, but I did notice a couple of bugs you might not be aware of:

 

- If you zoom all the way out on the automap, the lines disappear.  I guess they're being rounded to 0 pixels wide rather than 1.

- On some levels (MSCP Map02 was where I observed this) it can take almost 5 seconds to return to the game from the automap.  

 

Generally though this feels like its getting closer and closer to solving the vast majority of performance issues that typically hit Doom levels.

 

Share this post


Link to post
17 hours ago, Bauul said:

Played a few more maps on the latest build, and everything is averaging around 200fps on my GTX1060 laptop, so the latest round of efficiencies are definitely proving effective!

 

Obviously there's a lot of QOL things that still need to be implemented, but I did notice a couple of bugs you might not be aware of:

 

- If you zoom all the way out on the automap, the lines disappear.  I guess they're being rounded to 0 pixels wide rather than 1.

- On some levels (MSCP Map02 was where I observed this) it can take almost 5 seconds to return to the game from the automap.  

 

Generally though this feels like its getting closer and closer to solving the vast majority of performance issues that typically hit Doom levels.

 

Thanks for this post. Both the automap bugs are addressed for the next release. Were you able to get Helion to run on your 1060? I've been trying to come up with a way to force it. The way .NET Core works and how the vendors want an export inside the exe is turning out to be complicated. There are ways around it in C#, but .NET Core compiles the app into a dll instead of an exe. The problem here is that the exports have to exist in the exe itself on startup.

Share this post


Link to post

This source port is such a God send! Looking forward to port my Hell Renaissane project to it!

I'd like to get acs, gzdoom map compatibility, 3d models support, portals, I know this is a lot and lots of work but this got me impressed so bad!

More power to you!

 

https://www.doomworld.com/forum/topic/131812-hell-renaissance-the-great-mindsucking-machine-wip-v01

Share this post


Link to post

So I tried to launch it on an old machine with Windows 7 SP1 with no luck, I have installed the net requisiti and it had been for nought. Then I tried to remove net desktop v6 to install Net Framework v 4.8 and then NET desktop v.6. It's like I press on the Helion exe and nothing happens further on.

That PC has nVidia GT740 4gb (a pretty modern GPU) and AMD Athlon x2.

So I think you should also change the minimum system requirements to Windows 7 SP1, as older versions simply won't allow to install net frameworks. On the other side "Ironwail" optimized fork of Quakespasm has been a blast on that system.


Now to my machine testings of Helion (Win 10, Ryzen 5 1600 3.5GHz OC, 2 shitty incompatible 2100MHz 8x8gb CL16 RAM sticks, GTX 1060 3gb)

SOS_Boom.wad MAP32 works in the range of 200-300 FPS even with monsters count high.
Nuts.wad starts with 170 FPS and after monsters wake up drops down to 24FPS then it goes up to 48FPS - only one CPU thread is loaded at around 80% and another for 20%. And it's also like while I look at monsters be them alive or dead the GPU load is at 20%, when aside it's at 30% and of course FPS goes up dramatically.

It's just something about monsters handling to still, especially the logic is still apparently pushing against some bottleneck.



Now some gameplay moments:

- chaingunners, shotgunners and zombieman, are shooting like snipers and can easily get you killed from the distances at which in doom their bullet spread is way to large to hit you often enough, it's like they have no distance bullet spread now;

- SSG plays a reloading sequence when there is no more ammo, in the original Doom when ammo reaches 0 no reloading sequence occur and the gun goes away, being replaced by something that has ammo or fist or chainsaw - the same applies to plasmagun.

- barrels damage radius must be enlarged just a bit because it almost doesn't start the sequence of explosions on some maps designed for it, like Doom 2 MAP02. MAP23 does have sequence of explosions but it feels a bit underpowered.

Edited by Vadim

Share this post


Link to post
2 minutes ago, Vadim said:

That PC has nVidia GT740 4gb (a pretty modern GPU) and AMD Athlon x2.

The GPU is six generations old (we're up to the 4000s now) and were made in 2013, so a full decade ago, and the CPU is even older - the last Athlon X2s were made in 2006 and could be as old as 2005. (Theoretically, the GPU could be bottlenecked by the CPU in this system, that's how old the CPU is - which is honestly pretty embarrassing since it's a 740.)

 

This is, quite literally, a retrocomputer at this point.

 

Also, your wording is confusing. You say that it won't run on a Win7 SP1 system, but then say that should become the minimum requirement. Did you mean it should be bumped up from Base Win7 to Win7 SP1, or that it should be Win8.1, or...?

Share this post


Link to post
28 minutes ago, Dark Pulse said:

The GPU is six generations old (we're up to the 4000s now) and were made in 2013, so a full decade ago, and the CPU is even older - the last Athlon X2s were made in 2006 and could be as old as 2005. (Theoretically, the GPU could be bottlenecked by the CPU in this system, that's how old the CPU is - which is honestly pretty embarrassing since it's a 740.)

 

This is, quite literally, a retrocomputer at this point.

 

It's still a quite decent computer for collecting dust and being started once a month to launch office. Even though nvidia GT/GTX7 series are almost a decade old, it still supports the latest OpenGL 4.6 and Vulkan to some extent - it's a system considered modern by GZDoom. I'd even say Open GL3.3 is something that let's you play modern version of GZDoom.

Moreover, Doom and Quake geometry don't have that big poly count as modern games, so for Full HD, GT740 4gb is kind of ok unless those are big super detailed outdoors and lots of monsters (are polygons too).
 

12 minutes ago, Dark Pulse said:

Also, your wording is confusing. You say that it won't run on a Win7 SP1 system, but then say that should become the minimum requirement. Did you mean it should be bumped up from Base Win7 to Win7 SP1, or that it should be Win8.1, or...?

 

I honestly don't know if it runs on other computers with Win 7 SP1, I got another one somewhere with an even older graphics card from ATI and the same class CPU, with regular Windows 7 though, maybe I should try updating it to Windows 7 SP1 to try if Helion runs, then I got two more GPUs like old nVidia GTS 8800 512mb and AMD HD6770 1gb if those were not taken out to trash or sold.

 

It will absolutely never run on regular Windows 7 without service packs because necessary NET frameworks and runtime won't install. So yes, for this time, the minimum OS requirement should be bumped up to at least Win 7 SP1.

 

Share this post


Link to post
39 minutes ago, Vadim said:

 

It's still a quite decent computer for collecting dust and being started once a month to launch office. Even though nvidia GT/GTX7 series are almost a decade old, it still supports the latest OpenGL 4.6 and Vulkan to some extent - it's a system considered modern by GZDoom. I'd even say Open GL3.3 is something that let's you play modern version of GZDoom.

Moreover, Doom and Quake geometry don't have that big poly count as modern games, so for Full HD, GT740 4gb is kind of ok unless those are big super detailed outdoors and lots of monsters (are polygons too).
 

 

I honestly don't know if it runs on other computers with Win 7 SP1, I got another one somewhere with an even older graphics card from ATI and the same class CPU, with regular Windows 7 though, maybe I should try updating it to Windows 7 SP1 to try if Helion runs, then I got two more GPUs like old nVidia GTS 8800 512mb and AMD HD6770 1gb if those were not taken out to trash or sold.

 

It will absolutely never run on regular Windows 7 without service packs because necessary NET frameworks and runtime won't install. So yes, for this time, the minimum OS requirement should be bumped up to at least Win 7 SP1.

 


Windows 7 SP1 is required, I didn't think to specify it. I have tested it on a laptop I have that was made around 2009 with Windows 7 and is fully up to date. Amazingly the drivers were updated at some point to support OpenGL 3.3.

Most doom maps aren't that complex even for the older hardware you are talking about, but where you do see a huge gap is with maps that have lots of dynamic changes, texture switching, and if the map has flood filling. We have to buffer the updates if a map is constantly changing light levels for example, and newer GPUs handle this significantly faster.

High monster counts are the biggest bottleneck. The next update we are planning to release shortly addresses some of these issues. There are major speed improvements to monster movement checks as well as sprite rendering to help reduce the bottleneck on the CPU. I will go through the issues you posted previously as well, thanks for you reply.

Share this post


Link to post
1 hour ago, hobomaster22 said:


Windows 7 SP1 is required, I didn't think to specify it. I have tested it on a laptop I have that was made around 2009 with Windows 7 and is fully up to date. Amazingly the drivers were updated at some point to support OpenGL 3.3.

Most doom maps aren't that complex even for the older hardware you are talking about, but where you do see a huge gap is with maps that have lots of dynamic changes, texture switching, and if the map has flood filling. We have to buffer the updates if a map is constantly changing light levels for example, and newer GPUs handle this significantly faster.

High monster counts are the biggest bottleneck. The next update we are planning to release shortly addresses some of these issues. There are major speed improvements to monster movement checks as well as sprite rendering to help reduce the bottleneck on the CPU. I will go through the issues you posted previously as well, thanks for you reply.

 

Thank you for your amazing work and for doing such a good job!

Share this post


Link to post
On 1/12/2023 at 6:46 PM, Dark Pulse said:

the last Athlon X2s were made in 2006

Not that your assumption is necessarily wrong, but you're thinking of Athlon 64 based X2s (although technically those would typically be "Athlon 64 X2"). The Athlon X2 brand was used for the DDR3 APUs that had their GPU disabled, so 2013/2014 (at least Piledriver, but it seems one Steamroller model exists).  Don't think they released any Excavator based X2s.

Share this post


Link to post
3 hours ago, Blzut3 said:

Not that your assumption is necessarily wrong, but you're thinking of Athlon 64 based X2s (although technically those would typically be "Athlon 64 X2"). The Athlon X2 brand was used for the DDR3 APUs that had their GPU disabled, so 2013/2014 (at least Piledriver, but it seems one Steamroller model exists).  Don't think they released any Excavator based X2s.

I thought those were Athlon II? The ones alongside Phenom II, but before the FX series, right?

Share this post


Link to post

Helion 0.9.1.2 release.  There are huge rendering speed improvements and optimizations for monster movement as well as the monster closet implementation I was talking about. Sunder MAP15 is now consistently smooth. Average FPS more than doubled in problem areas on my machine in the range of 1,000-1,400FPS and almost quadruples the low FPS range to 140-220FPS. Obviously, based on your specs the numbers will vary but it should be much faster for everyone.

As shown previously the sprite rendering speeds are magnitudes faster. Previously I could barely get above 300FPS rendering a subset of the monsters in Nuts 3. Now rendering the entire map yields over 1,400FPS average.

Detailed list of changes:

Spoiler

Implemented reject lump for line of sight checks if present.
Added dropped item for dehacked.
Updated cluster checks and added ability to load text from archive entry.
Virtual resolutions now available under the window.virtual options.

 

Middle view positions for transfer heights are now statically cached. Significant rendering increase for maps that use a lot of transfer heights.
Moved sprite interpolation on the shader. Significant rendering increase for maps with large amounts of sprites on the screen.
Implemented monster closet detection where monsters will run simpler AI routines.
    Can be toggled with game.monstercloset.
    monsterclosets console command will dump monster closet stats.

 

Optimized common state changes and lookups.
Cleaned up a lot of new allocations that will prevent garbage collection from causing large frame drops on maps with large amounts of monsters.
Optimized blockmap line checks for faster enemy movement linking.
Optimized box/line intersection functions and cache bounding box.
Optimized BSP lookups to use fixed pointers for ToSector and ToSubsector calls for movement linking.

 

Fixed A_CheckReload.
Fixed A_KeenDie for dehacked.
Fixed A_SposAttack mapping for dehacked.
Fixed EXPLODE state lookups for dehacked.
Fixed ammo usage for MBF21 WeaponProjectile.
Fixed accel scroller calcuation.
Fixed rendering issue with middle textures and transfer heights.
Fixed snapping issue when looking straight up or down.
Clear alpha pixels when drawing lines that are one sided.
Better automap zoom control.
Fixed issue where rendering buffers wouldn't clear while in automap.
Fixed physics issue when teleporting while sliding against a wall.
Fixed some issues with boom locked door specials.
Fixed issues with stair specials.
Fixed problems with transfer heights rendering with moving sectors.
Updated dehacked sprite lookup for when the sprite name is modified to fix dehacked pickups breaking that are dependent on the sprite frame.

 

Share this post


Link to post

@hobomaster22, I just played nuts and yes there were some fps dropping to 40 when monsters wake up but later on it eased in about 5-10 secs and it was all smooth, good job!

Share this post


Link to post
12 hours ago, Dark Pulse said:

I thought those were Athlon II? The ones alongside Phenom II, but before the FX series, right?

There was indeed Athlon II X2 as well, but the ones I'm referring to are the FX based ones (Athlon X2 340, 350, 370K, and 450).  There were also Phenom (original) based Athlon X2s in 2008 which don't have the "II" in their name.

Share this post


Link to post
8 hours ago, hobomaster22 said:

Implemented monster closet detection where monsters will run simpler AI routines.
    Can be toggled with game.monstercloset.
    monsterclosets console command will dump monster closet stats.

A couple thoughts:

- detection should probably allow scrolling specials. Example would be Eviternity-style spinny closets (e.g. Eviternity 25)

- it really likes grabbing control sectors atm, 0 things on load closets can probably be dumped from the list. Anything with TP dest is already disqualified via monsters-only check (probably safer that way), as is stashing/staging a monster in intermediary closet via TP-to-linedef specials (has anyone ever even done that? I've only seen stashing via TP dest)

Share this post


Link to post
2 hours ago, Doomy__Doom said:

A couple thoughts:

- detection should probably allow scrolling specials. Example would be Eviternity-style spinny closets (e.g. Eviternity 25)

- it really likes grabbing control sectors atm, 0 things on load closets can probably be dumped from the list. Anything with TP dest is already disqualified via monsters-only check (probably safer that way), as is stashing/staging a monster in intermediary closet via TP-to-linedef specials (has anyone ever even done that? I've only seen stashing via TP dest)

Good call. I will add scrolling specials.

I'm not sure if anyone has done intermediate closets. We could potentially include them. One feature I was thinking of including is if the player ends up in a sector flagged as a monster closet, it removes the flag and the monsters go back to normal. May not be worth the time since this kind of thing doesn't happen as far as I know. But if it's relatively easy to implement then I might just do it.

Share this post


Link to post

Is there some kind of debug.txt generated I can investigate?

Cannot get it to run.

-doom2.wad in the same folder: no iwad detected.

-via response file: cant find file.

-drag n drop onto .exe: loads doom title screen but cannot get past the episode select screen.

Share this post


Link to post
30 minutes ago, Lobo said:

Is there some kind of debug.txt generated I can investigate?

Cannot get it to run.

-doom2.wad in the same folder: no iwad detected.

-via response file: cant find file.

-drag n drop onto .exe: loads doom title screen but cannot get past the episode select screen.

Drag n Drop and Doom2.wad in same folder definitely did work a version or two ago.

Some additionals:

  • Are you using the latest .NET? Because that to me was a culprit.
  • Are you running this through Visual Studio or?
  • You mention a response file. What do you mean with this?

Share this post


Link to post

When I first tried it made me download some NET runtimes: I can only assume they were the correct ones.

 

I am running the latest precompiled release: I didnt run the source code or anything like that.

 

A response file is a simple text file which contains standard commandline args like "-file" or "-iwad" or whatever. All Doom ports support that.

Share this post


Link to post
2 minutes ago, Lobo said:

When I first tried it made me download some NET runtimes: I can only assume they were the correct ones.

 

I am running the latest precompiled release: I didnt run the source code or anything like that.

 

A response file is a simple text file which contains standard commandline args like "-file" or "-iwad" or whatever. All Doom ports support that.

This isn't a port though :P

 

To be frank i never heard of the phrase response file in Doom contexts. To me, what you are describing is a .bat file with some commandline arguments. I'd never call that what you are calling it :P

Share this post


Link to post
10 minutes ago, Lobo said:

When I first tried it made me download some NET runtimes: I can only assume they were the correct ones.

 

I am running the latest precompiled release: I didnt run the source code or anything like that.

 

A response file is a simple text file which contains standard commandline args like "-file" or "-iwad" or whatever. All Doom ports support that.


Command line arguments like -iwad and -file do work. I think I know what your problem is. Can you run this version below and let me know if it works?
https://drive.google.com/file/d/1dJcX9LWvIKDSI5rEV-oMf3mVICPq87HM/view

Share this post


Link to post

@(configuration)

doom @<response>

This parameter tells the Doom engine to read from a response file, a text file that may store additional command line parameters. The file may have any name that is valid to the system, optionally with an extension. The parameters are typed as in the command line (-episode 2, for example), but one per line, where up to 100 lines may be used. The additional parameters may be disabled for later use by placing a vertical bar (the | character) between the prefixing dash (-) and the rest of the parameter name.

Share this post


Link to post

As per your suggestion that maybe the iwad in question had an incorrect hash, I tried with doom.wad instead and that worked.
I saw that my doom2.wad was from 2005, so I found a copy from 1996 and tried that: this works.
 

Maybe I somehow edited my iwad back in 2005? Anyway, thanks to Red and yourself for the help.

 

Share this post


Link to post

I tested Doom 2 with the newest build and i'm getting less than 500 fps in Map01: Entryway. From what i read here, shouldn't it be A LOT more? I have set maxfps to 2000 and turned off vsync.

Edited by Gregor

Share this post


Link to post
30 minutes ago, Gregor said:

I tested Doom 2 with the newest build and i'm getting less than 500 fps in Map01: Entryway. From what i read here, shouldn't it be A LOT more? I have set maxfps to 2000 and turned off vsync. I'm using a RTX 2060 6 GB and a Ryzen 7 5700G 3.8 Ghz. Nothing special but it should give me more than 500 frames in a simple map like that, right?

Set maxfps to 0. I think the limiter gets maxed to 500 based on some stuff we have setup in OpenTK.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×