Not that many updates lately, during the last two months we've been working on a kick-ass Brigade tech demo that will be shown on a conference in the second half of this month. I'll post screenshots and videos posted after the event, but in the meantime we're still doing some smaller tests, such as this as animated character instance test. The video and screenshots are rendered with Brigade's superfast path tracing kernel (maxdepth 6) and show 12 instanced characters animated in real-time.
Update: Some teaser images of a new scene, rendered in real-time with very nice color bleeding and real-time post processing:
A new test with the Brigade path tracer, showing 1024 physics driven dynamic cubes in a street scene. It's incredibly fun to fly through a photoreal scene in real-time while tons of cubes are falling from the sky in slow motion and being able to change all the lighting and materials at the same time. The beauty of how instancing works in Brigade is that moving hundreds or even thousands of rigid objects happens for free, with almost no impact on the rendering performance. Brigade also doesn't care much about how many polygons these rigid objects contain: a 100K poly Stanford dragon will render nearly as fast as 3K poly Utah teapot. This opens up a lot of possibilities: you could for example render scenes with hundreds of spaceships flying around in an extremely detailed procedurally generated landscape. Dealing with non-rigid meshes like animated characters is a bit harder for a path tracer, because acceleration structures need to be updated every frame, but we have a solution to that problem as well (that's something for another post :) In the meantime, enjoy the video and screenshots below:
It shows 1024 dynamic instances of a Stanford dragon model of 100k triangles each, for a total of 100 million triangles, path traced with Brigade in real-time. Brigade easily allows path tracing of several billion triangles in real-time (we tried 4096 randomly spinning instances of the Asian city model which contains over 400k triangles, and the framerate was surprisingly fluent). This is impossible with OpenGL or DirectX. This is the prime reason why games must switch to a pure ray tracing or path tracing approach (hybrid raster/ray tracing will just not work) if game developers want to have scenes with several hundred million triangles filling the screen. And that's not even taking the perfect soft shadows, depth of field, reflections, refractions, arbitrary BRDFs and color bleeding into account.
Another quick test with OTOY's Brigade engine showing 1024 physics driven Stanford dragons. Brigade has an extremely efficient way of handling dynamic instances and can now effortlessly render billions of (rigid) dynamic triangles in real-time.
All the recent instancing tests are not merely tests, but are part of a bigger project. More about that soon. In the meantime, enjoy the screenshots:
Just needed to share these jaw dropping images using Octane Render, they are too good to be true:
- ultra-detailed 17 million triangle human head mesh captured with OTOY's LightStage
- rendered with path tracing using physically based (unbiased) subsurface scattering
- HDRI environment map lighting
- 2048x1024 resolution
- completely noiseless after 8 seconds with just one GTX 680 using Octane Render v1.01 (which features environment map importance sampling)
And this is a 8192x4096 render (blogspot resized the image unfortunately). Note that all the detail is pure geometry, and is not coming from the normal maps
Found some time to do another quick instancing test with OTOY's Brigade engine:
- 1024 dynamic instances of a car (materials can be customized per instance, not shown yet)
- car model contains about 23k triangles
- 400k triangle city scene (can be instanced tens of times without performance loss)
It's now also possible to have a complete city with hundreds of instanced city blocks containing thousands of (instanced) animated characters and cars, essentially a real-time path traced photorealistic GTA. It's mighty impressive. But that's for another video :)
It's been a long time since I posted a video about Brigade (blame Octane Render, which is so fucking awesome and addictive it's not even funny anymore, check for example this video: http://www.youtube.com/watch?v=7zfCn24bGGk&list=UL). But the latest addition on Brigade definitely deserves a new video: we now have instancing working, it's really useful (best part of the video at the end):
What you see here are 32x32 (1024) Stanford dragons, each containing 100k triangles for a total of more than 100 million triangles, all path traced in real-time. This number is actually quite modest, as we can easily scale up to billions of triangles and still be real-time. This is impossible to achieve with a rasterization based game engine. I'm convinced that instancing will be the decisive factor for game engines to switch to ray tracing and is actually going to be more important than having perfect shadows, reflections, refractions, indirect lighting, diffuse color bleeding, physically based materials, raytraced ambient occlusion and DOF.
The next step is to make practical use of this feature in a game like setting: I want to use the city scene from one of my earlier demos (see http://raytracey.blogspot.co.nz/2012_06_01_archive.html) and stuff it with instanced trees, cars and people, a bit like a real-time path traced GTA. It's doable.