老烘焙
烘焙分为两个部分
烘焙直接阴影
在GPU上计算阴影和光照生成直接光照信息。
ShadowMap原理:http://www.manew.com/thread-140847-1-1.html
烘焙AO(AmbientOcculsion)
使用Radiosity 类辐射度算法烘焙AOhttps://www.cnblogs.com/daniagger/archive/2012/06/04/2534168.html
最后直接阴影的信息和AO信息保存到一张图中。
新烘焙LightMass
一、项目简介
烘焙功能主要是对光照进行预计算,以节省动态光照计算的开销,从而在同样条件下,场景能够体现更加丰富的光照和阴影效果。预计算信息保存到图片中,实际运行过程中贴图参与效果计算。
新烘焙LightMass是对老烘焙bake的升级,使用较高质量的光照贴图和阴影贴图代替了老的光照贴图及静态阴影贴图。保存光照信息和阴影信息
想较于老烘焙bake,使用
主要有三个组成部分:光照贴图(Light Map)、阴影贴图(Shadow Map)和Precomputed Light Volume
LightMass
游戏中的阴影实时计算
将静态光源预计算,生成光照贴图
阴影贴图
烘焙灯光效果
二、项目主要特点
使用Lightmass,所有的光源在默认情况下都是区域光源。点光源和聚光源所使用的形状是球型。定向光源使用一个圆盘,被放置在场景的边缘。控制阴影的柔和度的两个因素中的之一是光源的大小,光源越大将会产生更加柔和的阴影。另一个因素是从接受阴影位置到阴影投射物之间的距离。随着这个距离的增加,区域阴影将会变得越柔和,就像现实生活中一样。
漫反射的交互反射是在视觉上最重要的全局光照效果。光源默认使用Lightmass进行反射,您的材质上的Diffuse(漫反射)因素将会控制在各个方向上将反射多少光线(及什么颜色)。这个效果有时被称为颜色扩散。请记住漫反射交互是入射光线将在所有方向均匀地反射,这就意味着观看方向及位置的不同对于看到效果没有影响。
间接光照和间接阴影
半透明阴影
光源穿过投射静态阴影的网格物体的半透明材质将会丢失一些能量,从而导致半透明阴影
- 减少实时计算的消耗
- 间接光照
- 全局光照效果
- 漫反射的交互反射
- alpha阴影、半透明阴影
- 混合即时光
- 烘焙天光和点光、烘焙
- 相较于老烘焙
- 使得场景中模型的点光不受4个的限制
三、项目实施的主要技术与内容
光照贴图
阴影贴图
生成
LightMap
ShadowMap
Static Light
Stational Light
Dynamic Light
烘焙灯光
烘焙阴影
体积光
C++
- 预计算
Shader
- 使用烘焙贴图计算效果
光子辐照度
静态光源+反射次数
实施
烘焙灯光
抽象成光子
基于光子映射的辐照度缓存算法
间接反射光照
光线碰撞
八叉树构建光子图
BVH
光子图辐照度
单条光线光照记录
多条光线叠加采样,生成的光照记录所产生的光照图
半球采样
间接弹射次数大于1
算法
BRDF的实现
生成光照贴图,编写shader
多线程烘焙,解决烘焙速度慢的问题
自发光、阴影、AO
线性衰减烘焙效果
平方衰减烘焙效果