ryzom / ryzomcore

Ryzom Core is the open-source project related to the Ryzom game. This community repository is synchronized with the Ryzom Forge repository, based on the Core branch.
https://wiki.ryzom.dev
GNU Affero General Public License v3.0
330 stars 89 forks source link

Support for Oculus Rift #43

Open ryzom-pipeline opened 11 years ago

ryzom-pipeline commented 11 years ago

Original report by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Provide support for the Oculus Rift and other stereo rendering devices.

ryzom-pipeline commented 11 years ago

Original comment by Matt Raykowski (Bitbucket: [Matt Raykowski](https://bitbucket.org/Matt Raykowski), ).


You should be able to utilize your GSoC student then. (=

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Could probably pull this off using some of the old nevrax code for pixel programs.

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Pixel programs work.

ryzom-pipeline commented 11 years ago

Original comment by Michael Witrant (Bitbucket: [Michael Witrant](https://bitbucket.org/Michael Witrant), ).


I added support for OpenHMD here: https://bitbucket.org/piglop/ryzomcore/commits/2d1c89a19629cc5770157c6218dd89b1babce3c1

When enabled, the player view is forced to "first person" and the rotation is controlled by the Oculus Rift.

I only tried it on Linux but OpenHMD should work on Windows and OS X.

This is very basic. The player model should have a specific rendering (ie. without the head) and there's absolutely nothing about adapting the view to the Oculus display. I tried to implement stereo rendering but I couldn't find a way.

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Thanks, piglop! We'll probably need to fix some first person bugs though!

Can you also provide a simple class that (1) returns a CQuat with the orientation, (2) can shift the UCamera to the two neccesary eye rendering points, and (3) provides the necessary data for the shader?

Have asked ThibG as well for a binding with his libvr library, so we can compare the different possibilities.

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


List stereo devices, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Add library name to device name, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Read sensor data and set camera in snowballs, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Render from multiple cameras, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Cleanup and make bloom work with stereo rendering, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Add some comments, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Correctly adjust text to viewport, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Add 2D interface shifting calculations, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Add eye distance in 2D interface shift, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Move snowballs compass, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Adjust 2D interface shift, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Allow multiple user cameras to be calculated separately, useful for sky etc, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Create a clipping frustum, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Return view as CQuat, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Pull CPing out of main_loop.cpp, refs #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Separate some profiling code from main_loop.cpp, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Take some debug render code out of main_loop.cpp, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Moved some temp code out of main_loop.cpp, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Some more debug functions moved, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Remove some unused includes, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Move some config stuff out of main_loop.cpp, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Separate some camera related functions, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Create interface classes for stereo displays and head mounted displays, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Add interface for stereo display render targets, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Create stereo render target, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Fix a render target issue, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Render the scene to a target texture for the stereo rendering filter, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Test the barrel shader, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Render left and right deformed view, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Test arbfp1, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Add arbfp1 and fp40 barrel fragment programs, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Remove unnecessary user render target code from bloom, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Make bloom work together with render target used for the rift shader, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Add minimal head model and world scale, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Use width instead of height of screen for hmd fov, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Add stereo debugger for visually comparing rendered frames, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Fix particles being animated twice in stereo render, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Correctly synchronize some more animation in snowballs, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Distort 2D gui as well, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Some necessary changes to camera setting, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Move some more updates out of the render code, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Init/release VR interfaces in ryzom client, ref #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Put stereo render loop inside ryzom client main loop, see #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Don't render to texture when in wireframe mode, re #43

ryzom-pipeline commented 11 years ago

Original comment by Jan Boon (Bitbucket: [Jan Boon](https://bitbucket.org/Jan Boon), ).


Handle head orientation in ryzom client, ref #43