第五节:光和材质
最后更新于
最后更新于
实时解渲染方程
Light Challenges 光的表现
visibility to Lights
Light Source Complex
How to do Integral Efficiently on Hardware 对光的积分
Any matter will be light source 全局光照
Indirect illumination
Global illumination
Using simple light source as main light
Using ambient light to hack others
Supported in graphics API
Using environment map to enhance glossary surface reflection
Using environment mipmap to represent roughness of surface
基于光叠加原理,光的线性叠加
漫反射 + 高光 + 环境光
能量不守恒
Unstable in ray-tracing
non-energy conserving
无法表达真实材质
都是塑料质感
使用纹理记录距离光源最近像素的深度
Resolution limit ,纹理精度导致阴影锯齿
Depth precision ,自遮挡,加 bias 和提高纹理精度解决
Simple light + Ambient
dominent light solves
ambient and EnvMap solve
Blinn-Phong material
Shadow map
空间换时间
Good compression rate,存储百万个 probes
do integration with material function
Fourier Transform 傅里叶变换
任何频谱都是不同频率的波长的叠加,
图片由时域转到频域,去掉高频信息或低频信息,再转回时域,能对图片保留相应信息
Convolution Theorem 卷积
Spherial Harmonics 球谐函数
1阶 SH 只需要 9 个值,压缩后是 4 Bytes 就能存储一个 Diffuse 光场
SH Lightmap :Precomputed GI
LightMap 是预计算的,对静态物体的表面的每个点的环境光照存储
基于上面 SH 的理论,规定 LIghtMap 中一个 4 Bytes 颜色块定义了空间中的一个静态物体表面中的一个点接收到的全局光照
全局静态物体的表面需要二维展开到 LightMap 上,所以 LightMap 也是一个 Altas
Light Probe: Probes In Game Space
Probe 在玩家感知强的地方,在环境光变换大的地方密集
LightProbe 可以看作定义在 3 维空间的 LightMap,但不需要逐像素体素,所以可以实时预计算
LIght Probe Point Generation 工业上需要自动化生成 LIghtProbe 采样点
Reflection Probe:反射探针可以看作高精度的,做了范围限定的 LightProbe
现代游戏入射光
直接光照:光源类型 + shadowmap
静态间接光照:LightMap
实时间接光照:LightProbe,Reflection Probe
后处理光照:SSAO,SSR
常用 GGX 模型
相比 Phone 高光,高频波峰足够抖,高光逐渐消失的时候是柔和过度
F 菲涅尔现象,视线越垂直,折射越明显,反之反射越明显
每个参数必须符合迪士尼原则
参数需要尽可能的少
数值参数需要归一化到在 0 ~ 1
参数的任意组合不能出现 BUG
引擎不是真实世界模拟器,而是游戏程序创造工具
Disney Principle Material Parameters 迪士尼材质参数
SG 模型,全部参数都用纹理表达
convert MR to SG,MR 是对于 SG 的封装,依赖 SG,参数相对 SG 对艺术家更友好
MR 在金属与非金属过度容易出现白边
cube map,提前预处理环境光
提前知道卷积,模糊的结果
使用 MipMap 存储不同粗糙度的 Specular
LUT,提前存储这个 BRDF roughness 和 cosθ 的关系
级联阴影,视线所达到的地方,用多张 ShadowMap 表示,分辨率一样,表示的范围越来越大,精度越来越低
阴影是渲染管线中的最耗时的部分,场景中每个物体需要重画,同时存储量高
软阴影
Percentage Closer Soft Shadow , PCF
PCSS
Variance Soft Shadow Map
LIghtmap + Lightprobe
PBR + IBL
Cascade shadow + VSSM
quick evolving of GPU
Real-Time Ray-Tracing on GPU
Real-Time Global Illumination
SCreen-space GI
SDF Based GI
Voxel-Based GI (SVOGI / VXGI)
RSM / RTX GI
BSDF (Strand-based hair)
BSSRDF
ue5 的方法,平均分布 Shadow Map ,动态加载
海量的不同的 Shader
Artist Create Infinite More Shaders
Uber Shader and Variants 使用宏定义产生不同的 Shader
同一个 shader 可能可以编译到不同的 Graphics API