cancel
Showing results for 
Search instead for 
Did you mean: 

3dengine VR: sponza, 10k teapots, 1k omnis, 1k spots (v2)

Closed
Honored Guest
This is nice VR demo which demonstrates my engine rendering abilities at very cool environment.

https://docs.google.com/file/d/0Bycvp9GILmttLVo3VjRCU1BQcEU/edit?usp=sharing

Visual features:
-scene is Crytek Sponza atrium + 10000 teapots (most of them are out of Sponza)
-1000 dynamic omni lights with high density (most of them are out of Sponza)
-1000 dynamic spot lights with high density (most of them are out of Sponza)
-ray traced shadows from every light (robust solution based on screen space bent cone tracing)
-physically based shading - fresnel-roughness BRDF model (diffuse - Disney factor, specular - Cook-Torrance geometry term with GTR distribution)
-physically based atmosphere model (initially engine starts at night but you can change sun position from console)
-physically based fog model that includes lights scattering in atmosphere

Engine features:
-deferred based renderer
-very fast and precise visibility occlusion using OpenGL atomic operations
-binary tree based object managment
-tiled based shading
-precise lights classification using ray tracing instead of boundary boxes

Demo restrictions:
-freefly (but feelings are cool in VR, yaaamy I'm so high... :D)
-no sun shadows yet 😞
-no native OculusHD support (you can change resolution in ovr.cfg, but unfortunately rendering artifacts will appear, because tile size is 16x16 and 1080/16 = 67.5), but I will fix it in nearest future
-no native antialiasing (SSAA x1.5 instead)
-OpenGL 4.3 is required, so demo will work only on NVIDIA 4xx/6xx/7xx/Quadro6000/K5000 series or higher (or maybe Radeon (:)
-Demo is rendering heavy (in nearest future low/normal/high quality profiles will be added)

Controls:
-W,S,A,D - moving
-Q,E - up/down
-C - show cursor
-left mouse click - select/deselect object (you can move/rotate it but only from console)
-mouse - look around

Other notes:
-Demo is NVIDIA friendly, but I dont test it on AMD GPUs (OpenGL on AMD sucks, very slow in most cases...)
-Good news: demo compiled with OVR SDK 0.2.3 so it automaticaly uses your default Oculus profile \O/
-Good news: it is not required to setup the Oculus display in 'clone' mode, just use native 'extend' mode. If Oculus display is not second display, than you should change next line in ovr.cfg:
\vid_display 1 -> \vid_display <display_id - 1>

Usage:
-3DEngine_starter_demo.exe - mono view
-3DEngine_console_demo.exe - mono view + simple console in different window
-vr.bat - stereo view

Console interface:
"~" - open console, all commands begins with "\", after typing some symbols you can press TAB for autocompletion.

Usefull console commands:
"\atm_sun_position X Y" - sun lat(X)-lon(Y) position in degrees (-90 0 = night, 0 0 = dusk, 90 0 = zenith, 30 0 = mid day)
"\atm_haze X" - visibility distance (X) in meters at ocean level (by default is 140m, so you can see a lot of light scattering), for absolutely clean atmosphere set it 400000m
"\vid_glControl X" - X = 0/1/2, 0 - nothing, 1 - glFlush, 2 - glFinish (lowers overall latency but drops performance)
"\ovr_prediction X" - prediction time in seconds
"\shader_debug X,Y,Z,W" - Important: without spaces, X - on/off global ambient, Y - not used, Z - on/off shadows, W - on/off lights moving
"\shader_debug 1,0,1,1" - global ambient ON, shadows ON, dynamic lights
"\shader_debug 1,0,1,0" - global ambient ON, shadows ON, static lights
"instance_move X,Y,Z" - Important: without spaces, moving vector
"instance_rotate X,Y,Z" - Important: without spaces, rotations

Future work:
-Oculus HD support
-More configs: low/normal/high quality
-Sun shadows
-True reflections

Thank you for reading. You can mail me steelratsoftware [at] gmail.com for any suggestions.

Enjoy!

Link changed to updated demo...

UPDATE1:
-OculusHD support
-works fine with any resolution (no problems with tiled shading now)
-friendly SSAA control, just set desired value in cfg file (command \vid_ssaa), for 720p good value is 1.4, for 1080p good value is 1.1
-simple vsync was replaced to adaptive vsync (command \vid_vsync -1)
-prediction time control via \ovr_prediction <sec> in cfg file
-Oculus warping fit to screen command (\ovr_fitToScreen 0 - no fit, lower fov, high subsample quality; \ovr_fitToScreen 1 - fit, full fov near 130 degrees, low subsample quality, more SSAA is required)

Videos (in mono mode):
http://youtu.be/_hs6pNJSfME
http://youtu.be/Kn-0MByKHZk
http://youtu.be/-Gz-WqrdmZk
4 REPLIES 4

Chaoss
Expert Protege
It doesn't work, says FATAL_ERROR: cRenderer::Restart(): OpenGL API initialization - FAILED!
"In the future we will be designing dreams, worlds & experiences rather than games."

Closed
Honored Guest
Please, check OpenGL version in console.log. I think, you should update your drivers. Also you can mail console.log to me (steelratsoftware@gmail.com) and I will check what is going on.

defactoman
Honored Guest
Teapot party heh. I got a solid 60 FPS on my Nvidia 670 w/ i7 i930. The lights moved choppy like it was low FPS, but everything else was smooth. Looked nice.

Closed
Honored Guest
Thank you! I almost complete first update for this demo:

-OculusHD support
-friendly SSAA control from config file

P.S. You can run 3DEngine_starter_demo.exe directly and check your FPS (in right square). Keep in mind that in stereo mode "frametime = frametime_mono + 1 ms" (drawcalls in g-buffer renderered twice)