SEGI Webpage SEGI is a voxel-based Global Illumination effect that aspires to provide 100% dynamic Global Illumination to Unity games and applications. Since it requires no precomputation, SEGI can bring GI to certain situations where precomputed solutions like Enlighten cannot! SEGI provides indirect lighting and glossy reflections from a single directional light, the sky, and any emissive materials in the scene. In the future, SEGI will support indirect lighting from point and spot lights. SEGI calculates indirect light visibility for soft indirect shadows, and also calculates soft sky light shadows. It can render either a single bounce or infinite bounces of indirect light. SEGI is in beta and still in-development. If you are considering purchasing this asset, please consider the current limitations and plans for future development before buying! If you want to report an issue, make sure it's not in the list of known issues below. You can either notify me here in this thread, in a PM, or email me directly (my email address is in Section 5 of the User Guide). Screenshots and Demos The only additional effects in these screenshots and demos are bloom, tonemapping, and anti-aliasing. No reflection probes, lights, or SSAO are used. The screenshots were taken with a render resolution of 1920x1080. Demos (Windows) Sponza Demo Low Poly Demo Labyrinth Demo Compatibility As this is the first beta version of SEGI, compatibility is limited. SEGI has only thoroughly been tested on a Windows PC; behavior on other platforms is unknown. Improving compatibility is of high priority. SEGI requires DX11. SEGI is not compatible with mobile devices, and probably never will be. Current Limitations and Known Issues Known Issues -Infinite bounces can be slow in some complex scenes -Incompatible with forward-rendered objects (deferred only) -Light cookies on Directional Lights do not affect GI -Point and spot lights do not contribute to GI -Possible stuttering while playing in editor with the camera inspector visible -Undefined behavior with VR -Undefined behavior with multiple instances of SEGI -Does not work with orthographic camera (since deferred rendering is disabled for orthgraphic cameras) -Some voxels are black/too dark when voxel AA and infinite bounces are both enabled -Slight changes in positions of some objects in the volume can cause large lighting differences Current Limitations Light Leaking Spoiler: More Information... There are two causes of light leaking under the hood of SEGI. The first is an inherent limitation of cone tracing. The premise of cone tracing is that for each traced "ray", instead of simply sampling a point of information, you get to sample an area of pre-combined information. This keeps rays that are traced in different directions more coherent and allows for tracing far fewer rays to get a smooth result. Simply put, cone tracing samples blurred data. This diagram compares naive ray tracing (left) with cone tracing (right) Now, what happens when we have a one-voxel-wide occluder in front of that light data? As you can see, with naive "brute force" sampling, each ray encounters full opaque black before it reaches the illuminated voxels, so no light gets through. With cone tracing, however, data is blurred which smears the occluder and the light information such that rays do not encounter full opaque black before reaching the illuminated voxels. The other cause of light leaking is a lack of directional light information in the voxel data. This means that, instead light bouncing forward off an illuminated surface, it bounces in all directions. This problem is helped with the Inner Occlusion Layers property and GI Blockers (see Section 4.2 of the User Guide), but is not solved completely. In the future, multiple already explored options will be considered regarding storing and reading directional voxel data to resolve this issue. Indoor/Outdoor Hybrid Scenes Mostly because of the light leaking discussed above, SEGI can struggle with indoor/outdoor hybrid scenes, especially with interiors that have thin bright walls. The use of GI Blockers (discussed in the User Guide) can help. Limited Scene Scale Currently, SEGI only uses a single voxel volume to store GI data. This means that large scenes or scenes with greatly varying object scales are not handled well. In the near future, voxel volume cascades (akin to shadow cascades) will be used to extend the GI distance and influence whilst keeping high-density data where it counts--near the camera. Redundant Voxelization SEGI completely revoxelizes everything inside the GI voxel volume every frame. This obviously is not ideal, especially with mostly static scenes, because a lot of redundant work is being done. This issue will be investigated soon in order to find a way to reduce redundant voxelization and improve performance. Development Roadmap Many things are planned for the future development of SEGI, both specific and general. As well as fixing the known issues and limitations, these things are planned to be worked on in the future. The improvements in this list are roughly in order of priority. -Use velocity buffer to eliminate artifacts caused by moving objects with temporal sampling -Smarter voxel data encoding for reduced memory usage and faster voxelization -Voxel volume cascades for handling large scenes -Lazy mipmapping for spreading the cost of mipmapping the voxel volume over multiple frames -Smarter voxelization for less redundant work -Directional voxel data to prevent light leaking -Use Spherical Harmonics during bilateral blur for better results with normal maps -Cubemap support for ambient/sky light. -Cubemap/reflection probe fallback for reflections instead of uniform sky color -Extra occlusion layers to be material-specific instead of globally applied to all voxelized geometry -More simplistic and efficient switchable modes The general design direction I've taken with SEGI has focused on accuracy, but there are variations that I've played around with that are less accurate but lighter on performance. I'd like to explore these options and include them as options for people who don't need such accuracy and prefer higher performance.-Support for forward-rendered objects -Indirect light from point and spot lights -Better close-proximity GI by storing voxelized geometry normals -Additional dominant cones for soft voxel shadows traced from point/spot lights -Improve smoothness of GI when stochastic (randomly jittered) sampling is disabled -Voxel data pre-calculation for static objects -Baking GI result for super-fast GI baking -Separate voxelization from light injection so lighting can be updated on static voxels -Fix visual "warmup" (first few frames after entering play mode show incorrect GI) -Screen-space tracing for fine-scale indirect shadows (SSAO on steroids) -Glossy refraction and subsurface scattering Did SEGI help your project/scene look awesome? If you'd like to share your work, post a screenshot in this thread and mention how you should be credited! The most awesome screenshots will be featured in this thread, on the webpage for this asset, and on the Asset Store page (with credit given, of course)! Please share with me your experience with SEGI! The more communicative we all are, the more progress this project will make. Let's make real-time GI a reality for game developers and games!