Dev News (Patreon)
Content
Hey all! Sorry it's been a while again, here's what's been going on.
Since the last dev news post, I've been working on another potentially huge feature for PTGI E13.
Performance is one of my highest priorities with SEUS PTGI, and I always try every little idea that comes to me that could promise performance gains. Especially because of the performance cost of the new E13 features, I've really been striving to find something that can offset this. This time, I've been working on extending the TAA (Temporal Anti-Aliasing) to be able to reconstruct a higher resolution image than what the internal render resolution is. The goal for this is to only render the image at half (per-axis) resolution internally, and then temporally reconstruct a full-resolution image.
For example, if you were running your game at 1080p, PTGI would only render internally at 540p, and then rely on temporal reconstruction to present a 1080p-like image. The absolute best-case scenario for this would be: little to no visual drop in quality, and 4x fewer pixels to shade. This is achieved by taking advantage of image redundancy/similarity across frames. For example, if a particular area of the world is rendered from a similar vantage point for 20 frames in a row, by the 20th frame, the temporal reconstruction has used information from the last 20 frames to reconstruct a high resolution, anti-aliased image.
As I said, this is an extension of TAA, and TAA works on the same principle of taking advantage of redundant areas of the screen. Many of you may know (and have noticed in PTGI) that TAA can have some issues with ghosting and temporal lag. This occurs essentially because we cannot have perfect knowledge of what image features are okay to reuse, and what features should be discarded. If we over-estimate discarding of history, we will get nasty flickering/jitter, and no AA. If we under-estimate, we'll get ghosting/streaking/temporal lag. TAA errs on the side of under-estimation in order to achieve a temporally stable and smooth image.
Without any additional tricks to improve the estimation of how much of the previous frame's information to use, extending TAA into this temporal reconstruction upscaling thingy (don't really know what to call it yet) makes these issues way worse (and it looks reeeally bad). So, I've been spending a lot of time trying to come up with new ways of rejecting information that we don't want to keep. This is quite a difficult problem!
I think I may have finally found a novel solution that can provide significant reduction in these artifacts! But because I've been working on it for so long, I can't really tell if I've gotten close enough to the best-case scenario (minimal visual artifacts), or if I've just gotten used to the new visual quirks/artifacts.
Because of this, I'm thinking about releasing a test version of PTGI which would basically just be E12 with this new "half resolution rendering" feature, just to really get a good idea of how it performs without the confusion of it being included with a bunch of new features. If most people see the performance gain as worth the slight drop in visual quality, then it'll be here to stay! And of course, it can always continue to be worked on and improved.
On the topic of performance gains, since that's the whole point of this new feature, just what are we talking about here? Well, half-resolution rendering means that we're rendering a quarter of the pixels, but the other work the graphics card is doing isn't being reduced. So, in practice, we don't see a perfect 4x improvement in frame-rate. But, when you're running the game at a resolution where most of the work is going into shading the pixels, you can get some crazy gains! In my testing, a speedup of 3x is very common, which is pretty amazing! Again, it depends on how much time your GPU is spending on pixel shading vs other parts of the graphics pipeline. But that could take someone from an unplayable 20 fps to a smooth 60 fps.
You can also look at it another way. Those who have been running PTGI at reduced resolution for performance reasons won't have to do so anymore, and may even still see a slight increase in frame rate!
Unfortunately, I can't really capture a proper preview of this feature, since stills wouldn't show much, and video compression would probably just hide what is visually relevent. Again, this is why I want to release a "E12 + half resolution rendering" preview version. Do you like this idea?
That's it for development news. I really am sorry it's been so long since the last release. I want you guys to know that I'm doing my absolute best, and speaking honestly, I can't fully blame the difficulty and complexity of these new features for the gap in releases. I don't like talking about my personal life, but you guys are here to support my work, and if something is affecting my work, I feel like you deserve to know.
I've talked about struggling with depression in the past, and it is something I still deal with. The past few months have been some of the most difficult I've ever had, and I'm sure many of you can relate. I'm an extremely emotionally motivated person, especially when it comes to my creative work. This can have the wonderful effect of having excitement turn into pure hyper-focus super brain-blast creativity explosions. Because of this, it is absolutely a gift, and SEUS wouldn't exist without it! But, it also gives depression what feels like unfair advantage to take away the things that are most important to me. As much as I hate to admit it for many reasons, I have to be honest with myself and with you and say that it does get in the way of my work. Again, I feel you deserve to know.
Some time soon I'd like to talk about some plans that I have for the future, but this post is way too long as it is! Thank you so much for your support and understanding!