February 16, 2012, 05:49:21 pm
Lumion handles reflections/refractions much better than even cryengine 3. Especially glass reflections.
Cryengine uses static reflection maps. The idea is simple: you place a probe somewhere, grab a cube map and use it. We could do the same in Lumion but we want it to update dynamically.
For planar reflections they use the technique described below.
Unless something really disappointing happens I guess we will be able to deliver fine planar reflections with bumpmaps and all in Lumion at some point. No planning yet but it's sort of obvious we have to do it. I always have some research going on here and there just for future developments and curiosity. I was recently looking at better, faster ssao and correct transparency. My conclusion is that correct layers of glass is very doable. Rendering semi transparent layers is more difficult because of performance issue. The big problem is that for each layer of translucent materials we have to do the complete lighting again. Maybe it's smarter to optimize the lighting first. This would also help with reflections. In architecture we have a lot of opertunities to optimize. The lights are often static and so is the model. I was think about something like this:
- first make a list of all the light cones that penetrate the view and ignore all others.
- Use static shadow maps as default for all lights
- If a light is very small or far away, just render without shadow maps
- When a light moves or something in it's view moves recalculate the shadow map
- For each light build a list of lights within the light cone.
- Only render those object that are in, moved in or moved out the light cone.
In most practical situations this would mean the rendering is very fast. Lights rarely move and objects too so in 99% of the cases a cached version can be used. For a big building usually only a small percentage of lights is in view so that's another oppertunity to optimize. The ideal solution is occlusion culling but that would be really hard. In full quality render mode we should be able to create a buffer wich contains all visible lights so in the 15 consecutive passes invisible lights will be ignored.