So, it’s the beginning of the development of SpaceEngine 0.981!

Now I have HTC Vive, and I’m working on its support. Image and interface output is already implemented, rendering of controller models is almost works (OpenVR library provides a high-poly models of wireless Vive controllers to show them in the game, many games using this). At the same time, I’m unified the virtual reality support code, and updated Oculus runtime support to version 1.6 (I’m keeping the native Oculus SDK support, since rendering performance in Oculus is better in it than in OpenVR). Oculus DK2 is also works fine with it, despite on the Oculus Home writes that it “is not supported.” But Oculus DK1 is not supported – the Oculus Home even not detect it. So I have so far keep the code for SDK 0.8: so someone requested, I can make a SE build for Oculus DK1.

I also almost completed the SLI support. I need to make some more changes to the engine so that it works without interruptions. I had email communication with NVidia representative, and they promised to include SLI to the SpaceEngine profile when I finish it. The next step will be AMD CrossFire support.

Unfortunately, the classic SLI (AFR) does not work with VR, but for VR there is a special “VR SLI” mode. I’ll try to implement it. Maybe then my two GTX 780 will be able to give 90 fps on the planets in Vive. I must say that the performance of SE in Vive is very low; besides, Vive does not like if FPS goes below 90 – some creepy lags and sticking of the picture starts, and they are asynchronous for each eye (!!! – it is really painful, eyes can be broken, literally). Oculus has much better software in this regard. It has the technology called “Time Warp”, which allows you to see a smooth image in your helmet which runs as 75/90 FPS, despite on how fast game engine can produce frames. If the game slows down and gives out only 20 FPS, you still have the smooth experience. The Vive has a “reptrojection” technique, but it even not compares with this Oculus’ magic.

Another made a small cosmetic change is the shader that renders a particle (star-like point) of the planet when it is far away. At some distance, there is a 3D model of a planet appears, and at this point the particle start looking like it is being drawn in the center of the disk of the planet. But if the phase angle is small (a planet has a shape of a narrow crescent), this looking bad. Now the particle is shifted to the center of the crescent arc, so the transition is not so noticeable. Screenshots for comparison (view full size):