The Rendering Equation
Challenges
Visibility to Lights 阴影问题,如何获得任何方向的radiance
Light Source Complexity 光源的复杂程度
Integral Efficiently 积分效率
Any matter will be light source 光源可以反弹
Simple Light Solution
环境光+主光+环境光贴图
漫反射+高光+环境 = Blinn-Phone
- 问题是能量不守恒(或者说保守)
Shadow Map:光源看不到的地方就是阴影,将摄像机放在光源的位置,记录下一张深度图,也就是记录 从图片中每个像素打出的光线 到对应物体的 最小深度是多少,之后在摄像机原本的位置观察,对比 此时每个像素打出的视线 到对应物体的位置相对于光源视角的深度和深度图对应像素的深度,如果比深度图位置深度大,说明光源看不到,就是阴影
Pre-computer Global Illumination
- 预计算
Spherical Harmonics函数
- 压缩光场
SH Lightmap:Precomputer GI
Lightmap:
优点:运行时效率快,产生很细节很微妙的效果
缺点:烘焙时间很长(lightmap farm),只能处理静态光,贴图太大占内存
Light Probes+Reflection Probes
在场景中撒很多点,对每个probe采样广场
优点:处理静态和动态光源,运行时效率高,处理漫反射和镜面发射
缺点:做不到lightmap那种细节
Physical-Based Material
Microfacet Theory
一个表面就是有无数个反射,能弹多少,体现在法线的分布,金属没有能力捕获光子,非金属有能力捕获光子,一部分光子会进入物体反弹几次
BRDF:ggx
漫反射+CookTorrance(DFG)
D:法线分布方程D_ggx符合光的表达,光线过渡更加柔和;Roughness表示法线的分布
F:fresnel Equation菲涅尔效果
G:自遮挡
PBR Specular Glossiness
- Diffuse + Specular + Glossiness
PBR Metallic Roughness
Base Color + Roughness + Metallic
比SG模型更容易控制
缺点就是非金属和金属之间的过渡会产生白边
Image-Based Lighting(IBL)
Diffuse Irradiance Map:预先计算好diffuse卷积的结果储存在图中
Specular Approximation:specular使用split sum进行估计,就是把三个方程相乘的积分估计成三个方程分别自己积分最后相乘
不同粗糙度积分不同,将不同粗糙度的结果存在不同的mip map中,根据roughness去查询
Classic Shadow Solution
Cascade Shadow:层级阴影
不同层级之间要做插值
优点就是快、效果好、走样少
缺点:不能生成高分辨率的区域shadow,没有彩色阴影,半透明表面投射出不透明的阴影
PCF Percentage Closer Filter
- 用滤波的方法做软阴影
PCSS Percentage Closer Soft Shadow
Variance Soft Shadow Map
Summary of Popular AAA Rendering
Lightmap + Lightprobe
PBR + IBL
Cascade shadow + VSSM
Modern Wave
Real Time Ray-Tracing on GPU
Real Time Global Illumination
Screen-space GI
SDF Based GI
Voxel-Based GI
RSM/RTX GI
More Complex Material Model
BSDF
BSSRDF
Virtual Shadow Maps
Shader Management
- Uber Shader and Variants:自动编译所有shader组合