DirectX 11 tech demo
The technology demo for NeutronE is done so here it is! Comments are more than welcome, the installer will be available for download as soon as our new website is up and running …
fully multi-threaded next generation 3D engine
The technology demo for NeutronE is done so here it is! Comments are more than welcome, the installer will be available for download as soon as our new website is up and running …
I already mentioned in one of the earlier posts that Neutron engine will have a real-time global illumination solution so here it is! The algorithm is based on ’surfels’ - point lights with area and it requires DirectX 10/11 features to run (geometry shader and stream out). The following video shows a scene which is lit dynamically, notice the bounce of green on walls and the test sphere as it moves around. The video was captured on Intel Core 2 Quad Q9300 and NVidia 8800 GTX which is really a low spec machine for the next gen engine like this. This basically wraps up the work on rendering pipeline, the next step is the tech demo which will show the engine’s full potential.
Some people (myself included) did not know that it’s possible to use DirectX 11 on DirectX 10 hardware. Looks like Microsoft finally got something right
Anyway, after making this discovery it was quite tempting to test those new features so here we are - Neutron engine now runs on DirectX 11 API! The transition from DirectX 10 to DirectX 11 was quite easy, again I have to praise Microsoft for not changing the API completely. The only downside is lack of debugging tools for new API, NVidia has none and Microsoft’s Pix has very limited functionality. Despite this ‘little’ obstacle the upgrade was successful and now we have the new and improved ocean rendering using compute shader. The new approach provides better control over wave amplitude, choppiness, wind influence etc. Transition from deep to shallow water is now based on water depth so it gives more realistic look. Finally, here is a short video showing new ocean at sunrise with some volumetric clouds in distance.
While ago the first global illumination solution was added to the Neutron engine. The new improved GI now supports instanced geometry so it can be used outdoors as well. It’s based on radiosity volume which holds spherical harmonics coefficients and radiance captured from various directions. This approach is quite accurate since radiance capture pass takes into account all the occluders in the scene but as a consequence it does not run at real-time speed. Other approaches which run at real time speeds use VPLs (virtual point lights) and have little or no occluder information so they produce some artifacts due to light ‘leaks’. Neutron engine will soon have 3 solutions for GI: SSDO, static more accurate GI and real time but less accurate GI. The following video demonstrates the difference in rendering quality based on used approach. Note the bounce of green light on rocks and wall, also note how shadow is darker deeper inside the bush. Also, please note that for the purpose of demonstration the radiosity amount in the video is higher than normal and scene appears a bit darker than what it would normally look.
After a while we are back with some exciting news. NVidia’s PhysX is fully integrated in Neutron engine with all it’s features! The following video shows some of those features in action (static/dynamic bodies, tearable cloth, soft bodies and joints). All other features (wheels, ragdolls etc) can be easily integrated down the line as needed. As usual all HD videos are at http://www.youtube.com/neutronengine
Storms look cool, so why not add one to the engine
Lightning and thunder generation is a part of dynamic weather system and it can be controlled like any other environment parameter over 24h cycle. The following video shows one possible scenario where storm forms after slightly overcast morning. For HD version please visit http://www.youtube.com/neutronEngine
After adding ‘time of the day’ feature next logical step was to add some weather effects. Dynamic cloud generator works with ‘humidity’ factor to decide on how cloudy the sky gets. The same factor can be used to determine when rain starts/stop falling so the weather changes dynamically. Rain is completely simulated on GPU using geometry shader to convert particle points into rain drops. The following video shows one possible scenario where rain builds up after a relatively clear and sunny morning. The rainfall is light at the beginning with humidity reaching 65% and it gets heavier as we move towards 95% of humidity. For HD version please visit http://www.youtube.com/neutronEngine
Dynamic control of all environment properties in 3D engine is very important. Let’s face it, without it the 3D scene just does not look real. So, the logical step was to improve Neutron engine further and add this feature. All parameters related to wind,clouds,water, sky, fog,sun,moon,starts etc can be tweaked through 24h cycle using a simple editor. The results can be seen in this video, HD version can be found at http://www.youtube.com/neutronengine
Neutron engine supports shadow casting by translucent objects (clouds, smoke, fire etc) but there was no support for seamless blending of solid and translucent shadows. Since the engine renders shadows using the ‘deferred shadows’ approach it was very easy to implement this feature. Results can be seen in this video showing clouds passing over terrain and blending with the solid tree shadow on the ground. HD version is available at http://www.youtube.com/neutronengine
Powered by WordPress