Advanced Global Illumination in Unity 5 - Unite Europe 2015
(KASPER STOMRM)
BakedGI
Lightmaps and light probes
Precomputedrealtime GI
Lightmaps and light probes
Bakedand realtime reflection probes
Those3 components can freely be combined.
Whatdoes precomputed realtime GI mean?
Freelychange all light properties in the player
ADD/remove lights
Change light properties
Freelymodify material reflectance and emission properties of static geometry (Metashader pass)
Freelychange the environment lighting
Lightingworkflow
Hashingand caching
Filebased
Hashinputs and compute missing outputs
Robust
General
Easyto distribute
Cacheable
Async
Allowsfor “Auto mode” and “snapshot mode”
LightmappingModes
Performance
Shading performance
Memory footprint
Non-Directional
Flat disuse
Tex0: diffuse response
Fast
Lowest memory footprint
Good for mobile
Directional
Normalmapped diffuse
Tex0:diffuseresponse
Tex1:directionality(fixed 4)
Dominant light direction
Length= directionality
Rebalancing coefficient
Combineddirectionality for direct and in direct
Relativelyfast, twice the memory
Directionalspecular
Diffuseand specular
Both normalmapped
Tex0:intensity
Tex1:directionality(fixed3)
Dominant light direction
Length = directionality
Metapass
Customshader pass using the GPU
Decouplethe albedo and emissive Enlighten uses, from the regular shader passes
Modifyalbedo (material reflectance)
Changeemission of static geometry
Additiveloading of lighting data
Bakinglighting data can be done in two ways
Separately (separate levels , no sharedlighting)
Together (multiple levels can affect eachother
Preview available in the Unity 5.2 alpha
Enlightenupgrade from 2.22 to 3.02
Performanceimprovements
New feature:real-time transparency
Remove objects at runtime
Destruction , frosted windows, doors etc.
Improvedcubemaps
Probelit objects currently not visible to Enlighten
Enlighten 3.0 includes all immovable objectsin clustering
Which means they can act as emitters!
Bestpractices
Set arealtime resolution that makes sense for you scene
Use thefast emissive API (DynamicGI .SetEmissive)
Add acustom meta pass to change bounce lighting and emission without affection theregular shader passes.
Add glowby attaching lights to dynamic objects
Use emissivesurfaces as area lights.
AdamSimonar
NVYVE工作室发布了第一人称恐怖游戏《帕梅拉(P.A.M.E.L.A.)》
Geometryimport and setup
As you’remodelling/designing ,try to plan what needs to be pre-computed vs using lightprobes.
Generally,only large architectural elements should be set as static (use namingconventions such as _LMS to denote pre_computed geometry.
Keepin mind each object’s desired effect on the scene; in the below example, thegreen tubes are physically very small ,but have a large impact on the scene’slighting so they were set as static.
Performanceand material tips
For object that need to have emission updatedat runtime, make sure to keep them as separate meshes that can use a flat colorvs. complex texture map for emission updates
Use dynamicGI.SetEmissive rather thanDynamicGI.UpdateMaterials whenever possible for better performance
Updatinglighting and materials is the expensive part and can incur big GPU spikes onlarge scenes
Don’t set unnecessary lights as dynamic, e.g.enemy player flashlights
Stayroughly within physically based values when creating materials
Overly bright or dark materials can produceincorrect ,odd looking GI