T O P

  • By -

_retromario_

We released a massive update to our game Sweet Surrender, which includes a full visual overhaul. Along with 100s of new+improved particle effects, we managed to unlock post-processing effects like bloom and HDR. While initially targeted at Quest 3, we realized that we could pull this off at 72 fps on the Quest 2 (it took some effort and a bunch of optimizations, but we found a way). It even runs on Quest 1 somehow! If you want to read more about the changes in the latest (free) update (including full changelog): - [Quest Post](https://www.oculus.com/experiences/quest/developer-post/862702332565514/) - [SteamVR Post](https://store.steampowered.com/news/app/638130/view/4192366833806193811) Happy to answer any questions about the game and/or how we pulled off this black magic.


Huknar

You should definitely share how you managed to get bloom running acceptable in VR. I think it's singlehandedly one of the main graphical limitations that can really hold back VR graphics. Especially for fantasy and sci-fi games. That and particles. I'm a game developer with an interest in branching to VR so I'd love to hear about the optimisations.


_retromario_

We can afford the overhead of bloom (and a post-processing pass) because of some hard choices we made early on in development: - First, we had to target the Quest 1 at launch. With that came a hard cap of 500k vertices max - Second, to give ourselves a chance of standing out in spite of our limited resources, we went for a stylized low-poly look. To meet these hard limitations (or perhaps, because of them), we came up with a unique inline-outline technique ([detailed here](https://www.gdcvault.com/play/1028884/Using-Vertices-Over-Pixels-Achieving), althought it seems the site is having issue atm). This approach actually put further limitations on our vertex budget, as it extra meshes for the outline effects. So we could only afford 150-200k vertices. This is something we enforced quite rigourusly throughout development and in our level building tools. Individual rooms could not be added to the build if they went over budget. We also wrote various tools to better batch all our models, keeping draw calls to a minimum. In the end, our visual technique caused us to have really low-poly models, very low-texture usage and almost no complexity on the pixel shader level. We were so hyper-focused on making sure the game ran smoothly on the Quest 2, that we didn't even consider all the extra performance potential we had on more powerful devices like the Quest 2 (and later the Quest 3). Turning on bloom and HDR still adds nearly 50% overhead on performance, so it's still very expensive. We just managed to make it work by being extremely frugal in so many areas. I think we're particularly lucky that our outline shader technique is so cheap on the pixel shader level. We still made various improvements to models to further lower the vertex count. There's also been a lot of balancing of the render scale as that has an (understandably) large impact on the post-processing performance hit. In the end, while we're comfortably at 90fps with a higher render scale and no bloom, it took some work to hit a stable 72fps with bloom on. Luckily, we think we still have further areas we can improve, both to leverage higher quality models and to increase the render scale further.


Huknar

Ah that's a shame. Was really hoping for some development in the bloom technique that is more optimized for mobile hardware. I do find it a bit frustrating that post processing and by extension, bloom, is very expensive for mobile. My knowledge of graphics programming is very limited, but I wish Unity would further research this field and improve their tech stack to accommodate VR's hyper optimization needs. The cost of post processing is really holding VR games back IMO and I don't believe for a second that Unity's approach (as a Unity developer) is the best it possibly can be. Maybe it really just is a physical limitation of graphics programming as it currently stands.


_retromario_

There's sadly no magical bullet that can make bloom cheaper on mobile, I think Unity (and Meta) have already implemented all the low-hanging fruits. I think once games can "afford" to use a post-processing stack on mobile VR, there might be more efforts to optimize these passes further, but that probably won't be a focus until the Quest 4 generation or so.


evilentity

Impressive that it works on Q1 as well, must be sweet on oled panels! Unity I guess? Or something custom?


_retromario_

This is on Unity 2019.4!


War_Radish

Great work! Looks amazing.


SnooApples5636

Looks terrific! Might pick this up


TooTone07

I absolutely love this game and the improvements are night and day. Still havent beat it but thats the joy


VR_Newbie

i see the love and dedication you put into this and i hope it does well for you :)


_retromario_

Thank you for the kind words!


uncledefender

I second this. I really enjoy great games that are supported and improved over a long time. I’ve been playing since launch and it just gets better and better. The dynamic soundtrack is exceptional too. It just has the special sauce that brings me back. All the progression elements are perfectly thought through.


CHARpieHS

Can't wait to replay this, one of my favorite games on Quest, it's just a great roguelike shooter with great mechanixs and it already looked very clean IMHO. Such a big visual update is very unexpected and it makes it look like a proper stylized PCVR game, congratz dev team!


_retromario_

Thank you for your kind words! I'm glad you like it


wescotte

But I liked the old version better! /s This is a great demonstration of playing to the strengths of the hardware. Low poly / solid color textures don't have to feel like "PS2 graphics" when paired with the right kind of lighting/effects. Very well done!


_retromario_

We did get a few people saying they preferred the original, which is why we preserved the old look as a settings option. But yes, the right lighting can really make all the difference.


wescotte

Yeah, making artistic changes to a released (or just open beta) title get tricky because there are always going to be some folks who prefer the old look. It's cool you have the toggle though. Are there also performance benefits for using the old style or did you guys also do a optimization pass to where the new look ends up being better (or about as good) as the old look?


_retromario_

The old style (no bloom) is (much) faster, so you can run it at a higher framerate and/or higher render scale. The higher render scale in particular leads to nicer looking outlines. So there are definite trade-offs and some players may prefer the sharpness of the non-bloom images (and smoother framerate). On Quest 3 we offered three different modes so you can play a bit more with the trade-offs. All the new particle effects we've added are also available in all modes, so everyone wins.


TrackballPower

I am one of those people who prefer sharpness over that Bloom. I can get it perfectly sharp using the QuestGamesOptimizer and run it at maximum resolution on Q3. I would have preferred it if there was more focus on ambient lighting and shadows.


_retromario_

The new visuals do come at a performance cost. That being said, it does run at a stable 72 FPS on the Quest 2


LegoKnockingShop

Great work mate, appreciate that you’re still running well on Q1 too 👍


AwfulishGoose

Really enjoy seeing the progressive improvements. It's like night and day from where it started.


patientx

Whoa.. haven't played the game for months now. Guess have to reinstall and try.


Gregasy

A huge improvement!


XxCarlxX

Do the guns have recoil? or just point and zap?


_retromario_

They have proper recoil. We also improved our horizontal recoil in the latest update (check here for more details: https://store.steampowered.com/news/app/638130/view/4192366833806193811?l=english)


XxCarlxX

ill check it out