{"id":961,"date":"2015-03-06T08:10:08","date_gmt":"2015-03-06T08:10:08","guid":{"rendered":"http:\/\/www.migenius.com\/?p=961"},"modified":"2015-03-09T11:46:29","modified_gmt":"2015-03-09T11:46:29","slug":"realityserver-4-3","status":"publish","type":"post","link":"https:\/\/www.migenius.com\/articles\/realityserver-4-3","title":{"rendered":"RealityServer 4.3"},"content":{"rendered":"

We have just released RealityServer 4.3 which includes the new NVIDIA Iray 2015<\/a>. There are some great new features included and we will be adding several more to incremental releases in the future based on new additions to Iray. We’ll cover some of the highlights for you here, there are also a lot of smaller additions so we encourage users to take a look through the release notes for both RealityServer and Iray. \u00a0Here is a taste of what’s new, starting with something we have been waiting a very long time for and are\u00a0very glad to say has been included in this release.<\/p>\n

Instancing<\/h2>\n

This is a big one. We have a lot of customers who need to create scenes which have large numbers of the same object in them. Think for example about a stadium, which might have only four or five main types of seating but could easily have around 50,000 actual seats. In the past such a scene would be impossible to render with Iray Photoreal on the GPU due to the memory requirements, with instancing however this all changes. Of course it doesn’t come for free, there is a performance penalty for using instancing and you should explicitly flag the items you want to instance rather than enabling the feature for everything. In our tests however we found the performance hit to be fairly modest, around 10%. Note that this will likely vary a lot depending on your scene and how much instancing it has. Of course, it will always be faster than running out of GPU memory and falling back to the slower CPU based mode.<\/p>\n

\"646,836,000<\/a><\/p>\n

Gratuitous instancing image. 2400 instances of a 269,515 triangle model (646,836,000 total triangles) rendered with RealityServer 4.3.<\/p>\n<\/div>\n<\/div><\/div>

Instancing is not enabled by default, if you want to use it you need to set an explicit option to turn it on. There are two modes, one where everything is instanced, which could be significantly slower and another mode where you can explicitly define which objects, groups or instances should have instancing enabled. This is the best option and we are already using this in some of our products that use RealityServer. One good strategy is to analyse your scene and only enable instancing for objects that actually have a significant number of instances.<\/p>\n<\/div><\/div><\/div>\n

With instancing anything that has a lot of repetitive geometry can be rendered with a much lower memory footprint. So retail stores, stadiums, forests and offices are all great candidates to benefit from instancing. In cases where you are not running up against the GPU memory limits you will get better performance by disabling this feature but in many cases it now allows you to render scenes that were previously impractical. Of course with 12GB cards such as the Tesla K40<\/a>, Quadro K6000<\/a> and the recently announced GeForce TITAN X<\/a>, massive scenes are becoming more practical than ever. Check out the RealityServer documentation for more information on instancing.<\/p>\n

Programmable MDL<\/h2>\n

While MDL<\/a> (Material Definition Language) has been around for some time now, it has relied heavily on a pre-defined and fixed set of base functionality to work and it was not possible to add your own procedural texturing or other functionality. This all changes with RealityServer 4.3 and Iray 2015. You can read about some cool testing we did with this new feature in our Procedurally Retro with MDL article<\/a>\u00a0where we created a new procedural texture. If you need to create a custom procedural tile, or evaluate something complex to set the input of one of the built in functions this is now straight forward. The main requirement of your programmed MDL functions is that they are side-effect free, which is usually straight forward. Programmable MDL can be used not just for materials but also in lights and the environment. The last of these introduces some interesting possibilities, like adding procedural clouds to the build in Sun and Sky system.<\/p>\n<\/div><\/div>

\"MDL<\/a><\/p>\n

Procedural clouds using and MDL environment function<\/p>\n<\/div>\n

 <\/p>\n<\/div><\/div><\/div>\n

OptiX Prime for Iray Photoreal<\/h2>\n

Iray Photoreal has its own built-in ray tracing code which is highly efficient and robust. However many customers have been asking to see faster build times for acceleration structures used during rendering and of course faster rendering times. There is now the option to enable OptiX Prime based acceleration structure construction and ray tracing. This mode gives significant speed up in build times (so lowering the time to first image from a cold start) and improved runtime performance in most scenes. Memory usage is higher using this mode, particularly during construction of the acceleration structure so whether you want to utilise it will depend heavily on whether memory or\u00a0performance is\u00a0more important for your application. Fortunately its just one option to turn on or off so you can experiment easily.<\/p>\n

Hybrid Example Using three.js<\/h2>\n

A new example application is now shipping with RealityServer which shows you how you can integrate RealityServer rendering alongside client-side rendering in the browser using three.js<\/a>, a popular library for implementing 3D in the browser. This compliments our already available Unity 3D example<\/a>\u00a0and together these provide multiple options for either bringing client side rendering to your RealityServer application or bringing server-side rendering to your existing client-side application. The example uses a simplified version of our standard demo model for client side rendering during navigation and then switches to the high quality stream from RealityServer for\u00a0the full detail model when you stop navigating. While navigating, rendering is paused on the server so that compute resources are not consumed. Of course you can match the client-side model and server-side models more closely in terms of materials, in general however you will want to keep the complexity of the client-side model as low as possible to reduce download times. This hybrid approach also has the advantage of keeping the full detail 3D content secure on your server.<\/p>\n<\/div><\/div>

\"threejs\"<\/p>\n

WebGL based navigation blended to high quality results<\/p>\n<\/div>\n

 <\/p>\n<\/div><\/div><\/div>\n

The List Goes On<\/h2>\n

In addition to the many new features there are also many important fixes and enhancements to existing features. While many of these are minor they have been specifically requested by customers to address their needs an we are happy to be able to roll them into this release.<\/p>\n

We have also further updated our 3ds max and Maya exporters to create scenes that are compatible with Iray 2015 rendering. Existing customers have already been sent the new release and we will be rolling out updates for our pre-configured Nimbix<\/a> NAE within the next couple of weeks. To the right are some of the other enhancements available in this release.<\/p>\n<\/div><\/div>\n