5 ms·
Graphics Deep Dive: Cascaded Voxel Cone Tracing in the Tomorrow Children
- agentultra 10y agoThe cascade approach is something I've seen in other voxel engines. I'm interested in why the author was unsure whether octrees are suitable for GPUs. I'm looking forward to the slides. This game was a very interesting project and well worth playing if you haven't yet. I love how sometimes going off into the woods yields fruits. It goes against every bit of advice you come across as a programmer these days. Yet sometimes it's just what a project needs.
- blt 10y agoI'm not the author, but I assume they are referring to the amount of conditional branching needed to descend a standard octree. However I bet there is lots of active research into GPU-optimized spatial partition data structures. The data structure in the article is different because it only stores high resolution data for the area near the player. An Octree handles arbitrary distributions of high resolution data, so it is more powerful than needed for this application. I like it when insights into the problem lead to simpler algorithms.
- cma 10y agoSounds similar to the clipmaps UE4 uses for signed distance fields: https://docs.unrealengine.com/latest/images/Engine/Rendering/LightingAndShadows/DistanceFieldAmbientOcclusion/DF_ClipMap.jpg https://docs.unrealengine.com/latest/images/Engine/Rendering... https://docs.unrealengine.com/latest/INT/Engine/Rendering/LightingAndShadows/DistanceFieldAmbientOcclusion/ https://docs.unrealengine.com/latest/INT/Engine/Rendering/Li...
- randyrand 10y agoIn a proper implementation, the data diverges (which is relatively fine) but the code/program counter does not diverge (which is what you want to avoid). There is nothing bad about Octrees on the GPU, but most people use BVH trees now.
- bd 10y agoI'm interested in why the author was unsure whether octrees are suitable for GPUs. See this Twitter thread for discussion exactly about this (with Q-Games developers and original voxel cone tracing author): https://twitter.com/Icare3D/status/803165198530052096 https://twitter.com/Icare3D/status/803165198530052096 Reason #1: pointer chasing on cache impaired systems too costly Reason #2: they simply run out of time for development (instead of giving up on SVO)
- bsder 10y agoCould this really have not been done with a modern engine and technology? Maybe I'm missing something, but I don't see anything that prevents it.
- dgreensp 10y agoThis is modern technology -- the most modern, since it was invented for this game. Global illumination this good is not something you can get off the shelf, to my knowledge.
- benmcnelly 10y agovoxel cone tracing is not a new thing, but the way they are doing it is pretty neat and seems to be giving them good FPS even on console hardware (it's usually pretty beefy to do). As far as other engines doing GI, Unity uses enlighten wich cheats (brilliantly) by precomputing the scene (not baking) which lets it dynamically do GI in a scene. > http://www.geomerics.com/enlighten/ http://www.geomerics.com/enlighten/
- dharma1 10y agoUnity and UE4 can use Enlighten for GI as someone mentioned below. For voxel GI there is: http://www.sonicether.com/segi/ http://www.sonicether.com/segi/ http://docs.cryengine.com/display/SDKDOC2/Voxel-Based+Global+Illumination http://docs.cryengine.com/display/SDKDOC2/Voxel-Based+Global... https://developer.nvidia.com/vxgi https://developer.nvidia.com/vxgi
- speps 10y agoVCT has been around for a while, it's been integrated into UE4 at some point (Siggraph 2012 here [1]). In the end, the global illumination solutions they've had : * VCT [1], seemed real-time * Indirect Lighting Cache (similar to Tatarchuk's irradiance volumes), precomputed with their Lightmass tech same as UE3 I think * LPV (Light Propagation Volumes, contributed by Lionhead Studios) [2] * Distance Field GI [3] Global illumination in real-time is a hard problem, there's a lot of interesting research on it at the moment. [1] https://de45xmedrsdbp.cloudfront.net/Resources/files/The_Technology_Behind_the_Elemental_Demo_16x9-1248544805.pdf https://de45xmedrsdbp.cloudfront.net/Resources/files/The_Tec... [2] https://docs.unrealengine.com/latest/INT/Engine/Rendering/LightingAndShadows/LightPropagationVolumes/ https://docs.unrealengine.com/latest/INT/Engine/Rendering/Li... [3] http://timhobsonue4.snappages.com/distance-field-global-illumination http://timhobsonue4.snappages.com/distance-field-global-illu...
- Narishma 10y agoHere are the annotated slides of a more detailed presentation they did at last year's GDC: http://fumufumu.q-games.com/archives/TheTechnologyOfTomorrowsChildrenFinal.pdf http://fumufumu.q-games.com/archives/TheTechnologyOfTomorrow...
- phkahler 10y agoI found it interesting that they chose 16 cone directions since there is no regular 16-gon. I would have thought 12 might have some kind of an advantage there. Pentagons are the closest to a circular face of any polyhedron and the overlap would be identical between "faces". OTOH 12 is less than 16.
- dave_sullivan 10y agoCouple questions I'm hoping someone can answer: What other techniques are they using especially well to get the look and feel they've achieved? The lighting is impressive, but I notice dynamic depth of field/bokeh is being used well here and I think this is to credit for a lot of the look. The materials themselves look especially good, can anyone comment on why? In particular, the softly-polygonal look of the skin and grainy metal on the side of the bus. Is this just really what a great texture looks like or is there something less obvious? For instance, is there any reason to think Substance Designer + UE4 couldn't export + render materials like that? Also, any idea what's up with the weird outline artifact around most/all objects in the video? I'm really liking games that pair an abstract art style with high realism graphics features. Sort of inching towards a new video game clay-mation look.
- speps 10y agoMost game engines for a few years now are using what's called "Physically Based Rendering" (aka PBR). There's a ton of resources on that, including for offline rendering. It does add a lot to make it look realistic, for example an Intro for it in Unity 5 [1]. I think they extensively used Bokeh DoF to make it look at the right scale as it's a toy world if I'm not mstaken, it's know as the "Tilt Shift" effect. The outline artefact is probably Ambient Occlusion, I didn't see it that much though but that's maybe because I'm used to it. THere are a lot of ways to compute it, including using cone tracing, but the least expensive is a "screen space" technique first introduced by Crytek. It can introduce a dark halo around objects but is constant time usually and very simple to integrate. [1] https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/ https://blogs.unity3d.com/2014/10/29/physically-based-shadin...