Saturday, July 8, 2017

Subnautica [DX11]

Updated 08.07.2017
- Tested on build 49182
- Helmet is removed (only on Highest quality level)
- Godrays are removed
- Use Nvidia Inspector to assign the game's EXE (Subnautica.exe) to the profile "3D-Hub Player". (For instructions on how to assign profiles, see this guide). This is for saving convergence equal 1.0 to profile

The game is in early access and has a 3d bug - hud is flickering when convergence not equal to 1.0
You can either set convergence always to 1.0 (HUD on screen 'zero' depth) or disable it with 'Q' key

  1. Download this ZIP file and extract the contents into the game directory.
  2. In your Steam library, right click on "Subnautica" and select "Properties"
  3. Click "Set Launch Options"
  4. In the box, type " -window-mode exclusive -force-d3d11" and click "Ok"
  5. If you use not steam version in desktop shortcut's properties in object field add " -window-mode exclusive -force-d3d11" after 'Subnautica.exe'.
I made this using DarkStarSword's Unity template.
If you like this mod, please consider supporting DarkStarSword on Patreon

P.S. I've created "Unity Game Wishlist" HERE


  1. Well done Neovad, I didn't know this game, it looks very nice!

  2. This game is in my Steam wishlist, so it's nice to see that it got a fix. Thanks so much neovad.

  3. I've found out how to make texture filtering, so I'll try to remove diver helmet without disappearing other items

  4. Huh well what do you know. I was playing this with the Vive and it rocks but I'm holding off until the game is done for the best experience.

  5. This is awesome!
    Thank you so much for this!

  6. Nice, I was planning on waiting until this game was out of Early Access before taking a look at it (I hope you don't end up spending too much time fixing and re-fixing EA games like I did...), thanks for this :)

  7. Just looking at your release notes (I haven't fired up the game yet), flickering hud at convergence != 1.0 sounds like confused driver heuristics. Try multiplying the output position by convergence in the vertex shaders (only when convergence != 0.0) to neutralise the drivers correction. If you're adding your own HUD adjustment, do so before that multiplication. This is similar to fc1a985b6e496d96-vs_replace.txt in the template, but without applying the nvidia formula. If that doesn't work or causes other artefacts ask me about my other tricks to neutralise the driver correction.

    Have you tried any patterns for the God Rays? Most Unity games that use these tend to follow similar patterns for these (and is very common even outside of Unity) - the most complex that I've seen so far was Stranded Deep since there were a few shaders that interacted with each other so it took a few attempts to find the right shaders to adjust.

    1. When I tried to add constant depth to HUD both state (flick depth and normal) had moved deeper/upper on this constant value. I've tried to find out which variable contain flickering value to correct it with if (...) {...} statement but my attempts were unsuccessful . God Rays can't be a cycled dynamic 2D texture because it has beam vectors when you look at sun. I've only moved it on 0.5 depth as flat object but couldn't find what to use instead of 0.5 (tried r0.z and r0.w) to stereoize it

    2. In Stranded Deep were few interacted vertex shaders in God Rays or vertex shader send data to pixel shader(s)? In this game God Rays's VS is very simple:
      r0.xyzw = cb0[1].xyzw * v0.yyyy;
      r0.xyzw = cb0[0].xyzw * v0.xxxx + r0.xyzw;
      r0.xyzw = cb0[2].xyzw * v0.zzzz + r0.xyzw;
      o0.xyzw = cb0[3].xyzw * v0.wwww + r0.xyzw;
      o1.xy = v1.xy;