Optimize The Hell Out Of Your VR Project Settings UE4

Поделиться
HTML-код
  • Опубликовано: 20 окт 2024
  • Updated Discord invitation: / discord #UnrealEngine #VR #VirtualReality
    ► Description
    Hey everyone, I get asked multiple times a day what project settings I'm using to get good quality/high-performance content out of my Oculus Quest projects so thought I'd take you through the settings I use. These are settings I've found over time and work quite well for both mobile and desktop VR, I use these settings in my own content so please let me know how it works for yours. If you know any other performance tips or tricks, why not leave them down in the comments to help everyone out.
    If you're new to VR and want to get started with Oculus Quest development, I recommend watching these videos first.
    1. Installing UE4 from Source code (contains more up to date Quest features)
    • Installing UE4 4.25 fr...
    2. Installing Android Studio (Required to create Oculus Quest projects in UE4.25+)
    • Installing Android Stu...
    3. My Oculus Quest 1 Settings (These are different to the Quest 2)
    • My Oculus Quest 4.25 B...
    4. My Oculus Quest 2 Settings
    • Quest 2 Settings You S...
    -----------------------------------------------------------------------------------------------------------
    ► Join the Discord: / discord
    ► Patreon: / gamedevxr
    ► Twitter: / gamedevxr
    ► Instagram: / gamedevxr
    -----------------------------------------------------------------------------------------------------------
    PC SPECS:
    ► GTX 2070Super
    ► I9-9900K
    ► 32GB Ram
    Equipment
    ► Keyboard : HyperX Alloy Origins
    ► Mouse : Anker® Ergonomic Optical USB Wired Vertical Mouse
    ► Mic : Trust GXT 232
    ► Web Cam :
    ► Screen : AOC I2367fh 23-inch LED
    ► Headset 1 : Oculus Quest 128gb
    ► Headset 2 : Oculus Rift + Motion Controllers
    ► Headset 2 : Oculus Quest 2
    ► Graphics Tablet : Wacom Cintiq 13hd

Комментарии • 88

  • @lifeartstudios6207
    @lifeartstudios6207 3 года назад +33

    ///////// HERE ARE SOME EXTRA THINGS YOU CAN DO ///////////////
    - you should use the oculus UE4 engine as well.
    - Don't use bsp's they are bad for performance.
    - occlusion culling is needed it you have many separate meshes, but not if your scene is merged
    - use a couple master materials with instances for everything
    - try to use fully rough materials
    - don't use inverse squared fall off on your lights
    - Spotlights can be cheaper than point lights in a lot of cases
    - Use ARM64 and Vulkan, should shave like half of your bottleneck off in a lot of cases
    - Instanced stereo and mobile multiview possibly conflict and double render so you might want to look into that
    - Use defined textures in reflection spheres, don't capture in real time
    - Turn off as many passes as possible on your mesh objects ( receives decals, ray tracing, render in depth pass, visible in reflection captures) obviously this depends on your object
    - Plug up the default values in materials if your aren't using them (ie: metallic = 0, specular leave open unless it's metal, Roughness = 1, normal = vector 3 [0,0,1])
    - Set all your texture samplers to "shared wrap" so that the textures stay in memory and are shared for all other uses of them
    - Use unlit materials where you can
    - Reduce the hell out of your particles
    - Stay under 100k polys and 400 draw calls in your scene to run well on quest 1. Quest 2 can go higher. Rumor says that really you can hit 300k polys for quest 1, but it's not true in every scenario
    - Put a post process in your scene set to unbound and override the following settings( bloom = 0, exposure min and max = 1, chromatic aberration = 0, dirt mask = 0, lens flares = 0, vignette = 0, ambient cubemap = 0, ambient occlusion = 0, motion blur = 0, reflections = screen space)
    - Ambient occlusion doesn't work in VR so turn it off, this is for baked too
    - In rendering settings panel: Use legacy shading = true, Early Z pass is actually typically good at opaque or opaque and masked ( depends on your project )
    - Android Settings Panel: I use min sdk = 25 and target sdk = 28 ( there's big improvements the higher you go ), if you don't need all multitexture formats then get rid of the ones you don't need
    - Oculus VR Panel: Enable Specific color Gamut = Quest, CPU level = 2, GPU Level = 4, FFRLevel = FFR Low ( if you want a boost at the cost of peripheral vision being a bit blurred), FFRDynamic = false, Late Latching = true ( needs vulkan and mobile multi view), Phase sync = true ( can be bugged in some engine versions)

    • @GDXR
      @GDXR  3 года назад +4

      Thank you for the extras, I am planning to create a second video covering general optimization techniques within the editor and go over anything I might have missed but I think I have 99% already on the list as well as some others, ill list below. I didn't cover it here just because of the length of the video. I'm using the Oculus Version of UE4 in this video, For anyone reading this wanting to know how to install it I have a video showing how linked in this video's description.
      My comments on some stuff you mentioned.
      - Currently, for me, Arm64 crashes my projects and so does Vulkan so be careful when using this, this is my reason for using Armv7 in the video and OpenGL but as you said, give it a go.
      - I have issues when not using instanced stereo and multiview.
      - In the next video I was going to recommend removing reflection spheres completely because I use fully rough and see no difference.
      - Particles, id actually suggest trying not to use any, obviously easier said than done.
      - As you mentioned polycount varies. Recommend just keeping it as low as you possibly can. It also helps to have them spread around evenly. So no matter where you look in your game the polycount should be close to the same everywhere.
      Post Process: This is something I'm going to cover in my next video but I actually disagree with having a volume in the scene. As the player camera already has Post-processing applied which is why when you delete the volume, it often still looks pretty good. In this case, id suggest opening your player blueprint and selecting the camera, here you can select and set "Post Process blend Weight" to "0" this should disable all of your post-processing in the scene as long as your target hardware is set to mobile. this way you don't have a post-process volume as well as the camera post-processing.
      But everything else I have on the list, as well as some other things so keep an eye out for it.
      Again, Life Art Studios, thank you for writing this out. Would be awesome to see you over in the Discord.
      I'm going to pin your comment so others don't miss it.

    • @lifeartstudios6207
      @lifeartstudios6207 3 года назад +4

      @@GDXR you can do what I mentioned via the players post process as well, but in actually you need a post process somewhere to actually *disable* post processing features. In UE4, unless you specifically tell the features to be off, they have default values that are on.
      As for arm64 crashing your project, that may be in regard to what engine version you are using.
      Additionally, switching to 4.26 version gives you alpha to coverage meaning you can do more/better masked materials. Something something, it uses the alpha channel to decide where to antialias.

    • @Fisher_007
      @Fisher_007 3 года назад

      I would add some correction to this.
      -Number of master materials have very minimal impact (if there is any).
      -I have a feeling that you suggest hand made reflections for the wrong reason. Reflection captures aren't real-time, so viewing from a high level, they don't cost more. But after giving this some extra thinking, it could be possible that reflection captures are more expensive, because there are a number of extra calculations involved, like viewing angle and mixing multiple reflections.
      -You don't have ray tracing or decals with the Quest, so turning those passes off won't change anything. Turning off visible in reflections is also pointless, because reflections aren't captured at real-time.
      -You don't need to plug in values if you use the default. They are just numbers, for example if your material is non-metallic, it doesn't matter where the 0 comes, be it the default 0 or your own scalar.
      -I don't think legacy shading is more performant, but it definitely looks worse. So I would suggest doing some testing before committing on that.

    • @lifeartstudios6207
      @lifeartstudios6207 3 года назад

      @@Fisher_007 nope these are all tested.
      Number of master materials absolutely makes a difference. That's the whole reason for using material instances.

    • @GDXR
      @GDXR  3 года назад +2

      I agree. Tested on my end as well. Using Material instances helps quite a bit.

  • @patricksullivan4918
    @patricksullivan4918 3 года назад +1

    I'd also like to note that following this video not only helped the quest performance, it made my client run better. I used to have frequent crashes as a result of D3D being lost, but after following this guide, I haven't had that issue.

  • @vegitoblue2187
    @vegitoblue2187 3 года назад +1

    Enable compressed cooked packages to reduce build size. One of our apps were 1.5 GB and it came down to 500mb

  • @toneydeebo360
    @toneydeebo360 3 года назад +1

    Thank you soo much, after doing this my game is a night and day difference in performance. SMOOTH AS BUTTER.

    • @GDXR
      @GDXR  3 года назад +1

      WOOP WOOP !!!!
      That's so good to hear.

  • @stillthisnamestillthisname3920
    @stillthisnamestillthisname3920 3 года назад +1

    Thank you very much! Niagara settings tutorial would be very helpful :)

  • @1_Man_Media
    @1_Man_Media 3 года назад +2

    Great video man very enjoyable to watch even though I don't really work on mobile I still enjoyed it. One comment would be that blueprint nativization doesn't create c++ code for your game. It actually creates a virtual script that can be quickly turned into machine language much like c++ does at runtime. It's much faster as it cuts out the stage of converting your blueprints into code then into machine language to run at runtime, which can of course save you performance. The one downside to this is a rather large increase in the total file sized of your packaged game, but now a days most people have a lot of space so this isn't generally an issue, but could be for mobile maybe?

    • @GDXR
      @GDXR  3 года назад

      Thank you so much for the explanation. Hopefully it will be able to help others with there project. I wasn't aware that it took up more space which is quite interesting but from my own experience with large projects it hasn't caused any issues so far on the quest.
      But thank you again.

    • @1_Man_Media
      @1_Man_Media 3 года назад +1

      @@GDXR no worries, and honestly I agree for most cases if you aren't going to convert stuff into c++ yourself using this feature will generally help with performance, and out way any negatives.

  • @david_manfredini
    @david_manfredini 2 года назад

    I tried your configuration, and know some of the meshes have some sort of "purple shadow" on them. Any idea ?

  • @terrablader
    @terrablader 3 года назад

    Allot of new info here have not seen in other tutorials, Can you mention if you got better results after using ARM64 and turn off Vulkan? would later SDK like 30 be faster or support more features? What is the advantage of launching by the book? seems to take allot longer.

  • @TomTomSatNav362
    @TomTomSatNav362 3 года назад

    You my friend are an absolute life saver. I love you forever for this, thank you so much!

    • @GDXR
      @GDXR  3 года назад +1

      Metro Man - "I love you to random citizen"

  • @reffect5338
    @reffect5338 3 года назад +1

    Very helpfull as usual! Thanx for your efforts!

    • @GDXR
      @GDXR  3 года назад

      Your very welcome.

    • @reffect5338
      @reffect5338 3 года назад +1

      @@GDXR With your Tutorial I managed to gain about 7-8% more performance and additionaly turned FFV off. Tried it out with an ArchViz Demo i built recently - only had to rebuild some Lighting.
      Topic for an upcoming Tutorial: List of UE4 Desktop features, which can be used or not used in OQ2 standalone mode, like different Postprocesses, ColorGrading, HDR, SSR, Fog, SSS, etc. Would be very interested.
      P.S. Why arm64 with Vulcan is not used?

    • @GDXR
      @GDXR  3 года назад

      7-8% is still pretty good depending on the scale of your project. Thank you for the video suggestion, that could be good to cover. But for now, Everything you mentioned hits performance pretty hard so I'd recommend avoiding those apart from the colour grading if it's done through the Quest plugin. Some stuff I'm going to cover in another video soon but for your project now. On Quest I'd suggest changing your materials to 512x512 and then use the merge actor tool within Unreal to group them together. Also in your VR player, open it up, select the player camera and there is a setting in there called "Post Process blend Weight" try changing that to "0" and seeing if you get any more performance after building.
      Arm64: So this is a strange one, I recorded this video using 4.25.4 Oculus Source version from Git and this version of the engine would crash when loading a level using Arm64. Which is why I'm using Armv7 at the minute. I was also using Vulkan for a little while but had issues with viewing content which is why I use Opengl es3.1 as well.
      The biggest issue honestly is that every version of Unreal has some kind of issue/bug that stops things from working so there is no solid solution for what should be used. In this case, I thought I'd just show global settings that should work for everyone to get started.
      If your not in the discord, you should drop by.

    • @GDXR
      @GDXR  3 года назад

      So i just did a test using Arm64 and it broke my lighting, made everything super dark. I then tried using Vulkan with arm 64 and it crashes on launch. x86_64 +Vulkan failed to launch. Armv7 + Vulkan crashes on launch. So the only settings i can actualy use to build my project are using Armv7 and OpenGL. Hope this helps people out.

    • @reffect5338
      @reffect5338 3 года назад +1

      @@GDXR Due to the fact, Late Latching is implemented in 4.26, I jumped from 4.25 from Source to 4.26 prebuilt, to use the GPU Baking PlugIn.
      Thanx for the help and ideas. I will join your Discord channel soon.

  • @cristianmartinez1321
    @cristianmartinez1321 3 года назад

    Hey I am developping a VR experience but for laptop, I guess barely all the settings used in this video are considering that your target is a mobile user. Do you have a tutorial on how to optimize VR performance on laptops? Thanks for your videos and your help!

    • @GDXR
      @GDXR  3 года назад

      Hey Cristian, targeting a laptop experiance is a diffrent ball game idealy you should look at texture resolution and changing your editor graphics settings to be much lower. this should help your project run better.

  • @IRONFRIDGE
    @IRONFRIDGE Год назад

    Is there something like this for ue5 too?

  • @ChrixB
    @ChrixB 2 года назад

    Is it still accurate to use the SDK 25 since now Oculus seems to work with 29 ?

  • @ninomancuso7021
    @ninomancuso7021 2 года назад

    Optimized my level using this, thank you so much for the recommendations.
    One issue Im noticing and not sure if it's just a VR thing, the trees in the scene rotate on their Z axis when I turn my head, almost like they're turningleft and then right, as I turn my head right and left. Almost like they're flat planes, its very distracting and disorienting. Not all of them, just mostly ones that are in middistance. Is there a project setting for this?

    • @GDXR
      @GDXR  2 года назад +1

      Not project settings but it sounds like your talking about LOD's level of detail. You will need to open the tree meshes and change it there. Or the material setup. Difficult to say for sure.

    • @ninomancuso7021
      @ninomancuso7021 2 года назад

      @@GDXR thank you! thanks for the videos

  • @starscream2092
    @starscream2092 3 года назад +2

    is this any help for HTC VIVE ?

    • @GDXR
      @GDXR  3 года назад

      This should work for all desktop VR you just might find you need to activate some post-process features if you set the project to "mobile" rather than desktop.

  • @repositorytutorial3d50
    @repositorytutorial3d50 2 года назад

    Hello I tried to set everything as you said, but now when I install the app on quest 2 it crashes at start up (It worked before, everything was pretty much set as the example scene), I tried to reset everything as it was before by copying the ini files from the config folder (except the default game ini), but it still does not start, I get no error when packing and installing...
    What could it went wrong??
    Is there a way to see the log file of my oculus to understand why it crashes??

    • @repositorytutorial3d50
      @repositorytutorial3d50 2 года назад

      Solved it, I wasn't waiting for unreal to compile all the shaders and it made my project crash, now it works

  • @RxPharmacytech
    @RxPharmacytech 3 года назад

    Will this enhance particle/emitter effects? I have a muzzle effect on my gun that looks awesome on unreal editor but when I build it to the quest the effect looks horrible and pixelated

    • @naufalyudanar4117
      @naufalyudanar4117 3 года назад

      hi, any chance u solved this issue? mine used some fire particleFX and it kinda looks pixelated too

  • @juanmilanese
    @juanmilanese 3 года назад

    shouldn't "occlusion culling" be unchecked?
    I've read somewhere that the standard hardware occlusion culling of unreal is "heavy" for mobile vr environments. Don't know if it is true.
    But I think it could be replaced by the "round robin occlusion" + pre-computed visibility volumes
    Also I've read somewhere (I think it was carmack) saying something about 4x MSAA being "free" (dunno if it was refering to something about vulkan or if oculus 4x msaa the frame while rendering)

    • @GDXR
      @GDXR  3 года назад

      I've never had any issues when using Occlusion culling my self but I'd suggest you try it and see what happens on your end.
      MSAA is definitely not free from my experience. 4x MSAA hits my performance like a sledgehammer against a window when using it on the Quest. This is why I try to get the best performance I can without it enabled and then enable it towards the end once I'm happy as it often sends the GPU back to a high percentage.

    • @lifeartstudios6207
      @lifeartstudios6207 3 года назад

      @@GDXR he's referring to how it's forced on regardless.

    • @lifeartstudios6207
      @lifeartstudios6207 3 года назад

      culling, is a trade off really. It depends on your project. If you're in a single room then you don't need it. If you're in an open world, then likely you will, but should still manage what get's considered for it.

  • @Christopolis
    @Christopolis 3 года назад

    When using UE5 it works right out of the box (besides having to turn off Lumen) It would be cool to see an updated UE5 version of this video along with the tips in the comments ;)

    • @GDXR
      @GDXR  3 года назад +2

      I plan to do one soon, Just been crazy busy lately.

    • @lifeartstudios6207
      @lifeartstudios6207 3 года назад

      UE5 will give you like a 20% loss in performance over something like 4.24 or 4.25

  • @emreturan6259
    @emreturan6259 3 года назад

    Thank you for this great tuto. I just want to make a warning. Set Instanced Stereo to passive in Settings> Engine> Rendering> VR. This setting applies to desktop VR apps. Mobile Multi-View should be used instead.

    • @GDXR
      @GDXR  3 года назад

      your welcome, I personaly have nothing but issues when using Mobile Multiview which is why i wasnt using it in this video. and when i do get it working i see no diffrence in performance.

    • @emreturan6259
      @emreturan6259 3 года назад

      @@GDXR Thanks for your answer

    • @lifeartstudios6207
      @lifeartstudios6207 3 года назад

      I have both turned on intentionally.

  • @RxPharmacytech
    @RxPharmacytech 3 года назад

    I’m having an issue with my game after I build it to the oculus quest 2. My character just keeps snap turning and won’t stop. I followed your half life movement tutorial to make the snap turning . Do you know how I can fix this?

    • @RxPharmacytech
      @RxPharmacytech 3 года назад

      I have not done any of the optimization things in this video yet if I did them would that fix the turning issue? Thanks

    • @GDXR
      @GDXR  3 года назад

      Optimizing the scene won't fix the player turning. Someone else had a similar issue a few days ago in the discord. We found out they have changed the template settings in 4.27 go to the player pawn and make sure "Use controller Rotation yaw" is disabled.
      If you need screen shots check out the discord and go to the ue4-blueprints channel. There's a screen shot in there.

    • @RxPharmacytech
      @RxPharmacytech 3 года назад +1

      @@GDXR thanks man!

    • @RxPharmacytech
      @RxPharmacytech 3 года назад

      Would you happen to have the link for the ue4- blueprints discord channel? Sorry I can’t find it

    • @RxPharmacytech
      @RxPharmacytech 3 года назад

      Use controller rotation Yaw was disabled but my character still constantly snap turns on his own when I build my game to the quest 2. What else could solve this issue?

  • @Fisher_007
    @Fisher_007 3 года назад

    You don't need to switch the whole project to forward rendering, because the Quest version actually doesn't use it. It uses tiled deferred rendering, which is completely separate from the PC forward rendering. BTW what is your experience with nativization when it comes to real projects? I tried it only once and it failed completely, throwing huge number of errors. Looking up online I saw that lots of people were complaining that it's very error prone and doesn't always worth the effort.

    • @lifeartstudios6207
      @lifeartstudios6207 3 года назад

      good luck running deferred render on quest

    • @Fisher_007
      @Fisher_007 3 года назад

      @@lifeartstudios6207 The fact that you don't even get that Quest doesn't use EITHER makes this a bit funny. Also that you don't understand what "deferred" stands for in tiled deferred rendering that any mobile GPU uses really puts your bottom comment's validity into perspective. You really should educate yourself more before spilling nonsense as "wisdom".

    • @lifeartstudios6207
      @lifeartstudios6207 3 года назад

      @@Fisher_007 go check again dude lol. You're doing way more passes on deferred render. I've only spent 6 years working with and optimizing for VR. No big deal. 🙄

    • @Fisher_007
      @Fisher_007 3 года назад

      ​@@lifeartstudios6207 You are something special, my friend. :D The distance you go to ridicule yourself is truly remarkable and hard to get bored with. Although if you ever decide that you had enough, maybe you should look up what tiled rendering is, which is used on basically all mobile GPUs (including the Quests) and how that is vastly different from the immediate mode rendering used on desktop GPUs. Maybe you will stop confusing terms as well, because the deferred part means a completely different thing in an immediate mode renderer than what it means for a Tile-Based Deferred Renderer. Spoiler alert: it's not about deferring the lighting pass. So as I already said, the editor won't give jack shit about you choosing desktop forward or desktop deferred, because it is only capable of running in a single mode on mobile GPUs, which has nothing to do with the other two mentioned. Jeeez, you and your 6 years of experience. :)

    • @lifeartstudios6207
      @lifeartstudios6207 3 года назад

      @@Fisher_007 I know what the renderer is doing on the mobile architecture. We're talking about the shading in ue4. It's also recommended by almost every dev who's working in quest to use forward and these other settings so have fun with your elitist programmer ego dude. That won't get you far.

  • @jonathanantoine4962
    @jonathanantoine4962 2 года назад

    Please zoom on the zone you'redoing stuff, I got an headache trying to understand what you're doing

  • @pewpews2146
    @pewpews2146 2 года назад

    Alot of QUESTions for the Quest.

  • @nu-beings
    @nu-beings 2 года назад

    Do you have any suggestions to fix this error in the Discord? I didn't see it and can't post the question there even after agreeing to the rules.
    LogPlayLevel: Error: ERROR: cmd.exe failed with args /c "D:\Dropbox\Unreal Projects\VRTemplate_Lesson\Intermediate\Android\arm64\gradle
    ungradle.bat" :app:assembleDebug
    LogPlayLevel: (see D:\Applications\Unreal Engine\AutomationTool\Logs\E+Programs+UE_4.27\Log.txt for full exception trace)
    LogPlayLevel: AutomationTool exiting with ExitCode=1 (Error_Unknown)
    LogPlayLevel: Completed Launch On Stage: Deploy Task, Time: 159.933601
    LogPlayLevel: BUILD FAILED
    PackagingResults: Error: Launch failed! Unknown Error
    Thank you for all your videos! They have been very helpful.

    • @mineogames
      @mineogames Год назад

      The true error should be in above in the logs or the full exception trace file.