Games104现代游戏引擎入门-lecture5游戏中的渲染
lighting,material,Shader,
1 渲染方程
35年前有了这个;
真实渲染是很复杂的:
1 挑战1:shadow(光源的可见性)
阴影想做的好是非常难的,visibility to lights;
光源是很复杂的:
平行光源,点光源是很正常的,但是面光源是比较复杂的
Radiance:辐射度
Inradiance:
2 积分怎么做?
3 任何点都可能是光源
场景中可能有很多个光源,可能会无限递归下去!
ray tracying:
2 simple
1 简单光源
2 环境贴图
是符合渲染方程的。
3 材质
经验派:
Blinn-Phone materail 模型
用到了光可以添加原理。
问题是:
1.能量是不守恒的
能量保守,出射能量一定要小于等于入射能量
2.很难表达复杂的真实材质
3 shadow
到光的可见性,从光的视角
Shadow map的问题:
自遮挡的问题
4 基本的着色解决方案
3 AAA Quality
刺客信条:
5-10年前的技术
1 预计算全局光照
空间换时间
1 为啥全局光照是非常重要的?
2 傅里叶变换
空间域转变成频域
3 球面谐波函数
4 光照贴图LightMap,GI
烘焙
好处:
实时做的很好
离线的
缺点:
预计算时间很长。
只能处理静态的物体和静态的光。
lightmap的方法可能会慢慢的退出。
游戏的场景参数化到二维的texture上,很多计算就不需要做了。
5 Light probe
光场:
反射probe:
这两种集合到一起:可以出现不错的GI效果
现在的计算机可以实时更新Light Probes,不会每一帧才去更新,找空的一帧去更新。
缺点:比不上lightmap。
6 材质
ggx
1 DFG:D:normal 分布
D:
G:
F:
物理材质测量:
2 BRDF Dinesy 信条
尽量少的参数:
所有的参数范围最好是0-1;
参数随便你怎么调,他的所有组合都是有意义的。
引擎是个工具,
3 PBR
归一化是很重要的!
几乎不需要设置任何参数,进行的是像素级的控制!
MetallicRoughnees:
metalic:
灵活度下降,但是不会出问题:用MR,用SR少一点。
MR存在下面的问题!
7 IBL
近似解!
IBL:光照的方法,和PBR是孪生兄弟一样
8 shadow
现在用的基本都是Cascade Shadow
不同的层级之间要做插值!
存储大!
shadow是最耗时的,但是确保光的可见性是正确的。
shadow很难做到2ms一下。
做4次的裁剪,
喜欢做软阴影。
PCF 软
PCSS是标配!
4 总结
5年前的3A
PBR+IBL:材质光照
Cascade shadow+ VSSM.
5 未来的发展
实时光锥:
密切的关注实时全局光照
新的方向:Vitual texture,巨大的纹理,能够解决cas shadow的存储不够的问题。
有很多个shader
GPU很讨厌shader
7万多个shader
跨平台的编译。
GI未来会怎么发展:GI 5年左右上来就是GI。
端云协同