Page 1 of 1

[DK1/2] Aeon Alpha

Posted: Sat Dec 20, 2014 7:08 pm
by rupy
"It's like Homeworld in first person."


Lowpoly multiplayer space shooter, for high framerate and zero simulator sickness.
  • - Disable Aero on Win: Right click desktop, Personalize, Select "Windows 7 Basic" Theme.
    - Disable force VSYNC: Aeon should render at 2xHz FPS.
    - Uses 0.4.4:
    • - Switch to extended display mode.
      - Keep the Configuration Utility open.
      - For DK2: rotate screen to 1920x1080 like all other "extended" demos.
    - To launch double click bin/aeon.jar
    - IPD Config: hold 9-key until crosses diverge, then press 8-key until crosses converge.
    - Controls: Arrow keys and A, S and W.
    - Press R to reset view.
Download (This also works without Rift, so you can play with friends that don't own a Rift)

Re: [DK1&2] Aeon Alpha

Posted: Sat Jan 17, 2015 2:50 pm
by rupy
Hey, so I got the barrel distortion up, but now I want to integrate the chromatic aberration distortion into the same shader and I kind gotta a feeling it should be possible, but I'm a complete shader noob, can anyone help?

This is the code so far (the arrow parts are what I'm struggling with):

SOLVED: The below code works!

Code: Select all

String VERTEX = 
	"void main() {\n" + 
	"   gl_TexCoord[0] = gl_MultiTexCoord0;\n" + 
	"   gl_Position = gl_Vertex;\n" + 

String FRAGMENT = 
	"uniform sampler2D tex;\n" + 
	"uniform vec2 LensCenter;\n" + 
	"uniform vec2 ScreenCenter;\n" + 
	"uniform vec2 Scale;\n" + 
	"uniform vec2 ScaleIn;\n" + 
	"uniform vec4 HmdWarpParam;\n" + 
	"void main() {\n" + 
	"   vec2 theta = (gl_TexCoord[0].xy - LensCenter) * ScaleIn;\n" + 
	"   float rSq = theta.x * theta.x + theta.y * theta.y;\n" + 
	"   vec2 theta1 = theta * (HmdWarpParam.x + HmdWarpParam.y * rSq + " + 
	"           HmdWarpParam.z * rSq * rSq + HmdWarpParam.w * rSq * rSq * rSq);\n" + 
	"   vec2 tc = LensCenter + Scale * theta1;\n" + 
	"   if (any(notEqual(clamp(tc, ScreenCenter - vec2(0.24, 0.49), ScreenCenter + vec2(0.24, 0.49)) - tc, vec2(0.0, 0.0))))\n" + 
	"       gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n" + 
	"   else {\n" + // 1.0, 1.017, 1.038
->	"      float r = texture2D(tex, (((tc - LensCenter) / 1.0) + LensCenter)).r;\n" + 
->	"      float g = texture2D(tex, (((tc - LensCenter) / 0.983) + LensCenter)).g;\n" + 
->	"      float b = texture2D(tex, (((tc - LensCenter) / 0.962) + LensCenter)).b;\n" + 
->	"      gl_FragColor = vec4(r, g, b, 1.0);\n" + 
	"   }" + 

Re: [DK1&2] Aeon Alpha

Posted: Sat Jan 17, 2015 2:59 pm
by cybereality
I tried this yesterday.

The distortion looks better but I forgot to stop the OVR service so I wasn't getting any tracking.

I will give it another go and see how it is.

Re: [DK1&2] Aeon Alpha

Posted: Sat Jan 17, 2015 3:01 pm
by rupy
Hey cyber,

I think i fixed it!

Don't forget to turn Aero and Vsync off too!

Re: [DK1&2] Aeon Alpha

Posted: Sun Jan 17, 2016 12:00 pm
by rupy
Trying to render to the Wearality lenses.

Would appreciate any OpenGL help I can get.

Re: [DK1&2] Aeon Alpha

Posted: Sat Feb 13, 2016 8:04 pm
by rupy
I patched the game with my adaptive "double-screen-Hz" FPS solution.

If you try it you will almost get a better experience than 0.8 with Async Timewarp and Direct Rendering.
Except tearing and ghosting which will be solved in the CV/Vive screens (global update) and/or next gen screens (no ghosting).


Because when you render two frames per Hz of the screen, the last frame is as close to the photons as you can be.

Until we either get screens that show frames when they are received or can ask the screen when the next frame will be shown; this is as good as it gets.

To try:

- Download everything you need from
- Reinstall Runtime 0.4.4.
- Install Java 1.5+.
- Disable Aero and vSync.
- Keep the config utility window open.
- Double click aeon/bin/aeon.jar.

Re: [DK1&2] Aeon Alpha

Posted: Sat Feb 13, 2016 8:22 pm
by cybereality
You can get low latency, high performance, with modern Oculus SDKs (without having to disable VSync or do any double-rendering tricks).

See this article: ... -latching/

Re: [DK1&2] Aeon Alpha

Posted: Sun Feb 14, 2016 3:25 am
by rupy
I'll try to illustrate the difference following the examples in that article:

Late latching:

Code: Select all

 0         14
|   +---+WX |
Adaptive "double-screen-Hz" FPS:

Code: Select all

 0         14
| +--X +--X |
Where + is a sensor read and X is a display update.

All the over-engineered workarounds (async time warp, late latching etc.) still make me simulator sick (probably because of the inconsistency) and how Oculus & Microsoft implemented direct rendering excludes custom game engines, not to mention that you removed external for no good reason (you could have left it as a developer/hacker mode) on a device I bought to be able to develop for it with extended! All the solutions you have now are technical debt, future screens and 3D APIs will make them obsolete, while my solution is around 5 lines and future proof!

I tried Eve Valkyrie on latest everything; only on a 760Ti though, and after 20 minutes I was starting to feel nauseus. A lot less than before on other games, so it's a great improvement, but still I can't spend hours in VR; and at double the power consumption! At 4x power maybe your solution will be comfortable enough.

As a side note; on Intel 4000 HD with the latest driver I get 180 FPS (up from 150 FPS!) so I'm good for Vive if they keep extended!

Did you try Aeon?

Re: [DK1&2] Aeon Alpha

Posted: Sun Feb 14, 2016 2:23 pm
by cybereality
rupy wrote:Did you try Aeon?
No, sorry. I'm not installing an ancient runtime.

Re: [DK1&2] Aeon Alpha

Posted: Sun Feb 14, 2016 6:07 pm
by rupy
Seems we are in a deadlock, I got the 0.8 driver from Stellas Minecrift update, and I'll try to get it to work when I'm in the summer house which has 0.8 Runtime... will let you know how that pans out, maybe I can get the orientation data with the Configuration Utility open and run the DK2 as a monitor like before since I do all the rendering myself? Who knows!

Maybe that even works on CV/Vive! :)

Re: [DK1/2] Aeon Alpha

Posted: Fri Mar 18, 2016 12:52 pm
by rupy
So tracking works great with the 0.8 runtime, but the direct monitor is completely hidden, no way to get access to it now from LWJGL.

The real question is how many ms. does the direct monitor save? I render at 2x Hz, which makes the latency 5 ms. on a 90Hz screen, I doubt the direct monitor will save you the 6 ms. more it takes you to render 90 FPS at 11 ms. per frame.

Luckily I ordered a Vive and SteamVR has extended so hopefully you will be able to try my game in a Vive soon!

Re: [DK1/2] Aeon Alpha

Posted: Mon Apr 18, 2016 1:22 am
by rupy
So I have ported to Vive:

Boy the flaws are still there, the screen is basically not better than the DK2 (all the oled artifacts are still there) and the lenses need low contrast; so I have to rebuild the colors. Right now it flares alot. The 2x Hz FPS still works well to alleviate simulator sickness but I was hoping the global update displays would actually only display finished frames, which they don't, but only when you move your head... and setting sync to 90 FPS doesn't solve the problem?!

While I'm very impressed with room scale and the demos that where included with the Vive, VR as a whole is a bit meh... still... I'm waiting for pascal to upgrade my 750 Ti (which does a surprisingly good job at rendering all the Vive content) 16nm is probably peak litography, so after that it's up to software and clever solutions to get more!

The only real application for VR is to build a lowpoly editor/animator tool anyone can use to build content for non VR games.