第15章-第20章
- 噪声:使用一张噪声纹理实现更多的渲染效果(消融、波浪等)。
- 消融效果:对应消融效果的纹理采样后,作为阈值控制当前片元是否被渲染。消融的边缘具有一定的宽度,其中渐变的颜色使用lerp函数混合。
- 动态的消融效果需要根据时间改变阈值,通过加在物体上的脚本实现。
- 消融后的片元需要同样在ShadowCaster的Pass中剔除,以产生正确的通盈效果。
- 水波效果:对应水波效果的纹理采样后,作为切线空间下的表面法线。
- 水面透射:GrapPass得到的屏幕纹理,在片元着色器中采样这个纹理得到透射颜色,其中利用法线计算采样时的offset。
- 水面反射:反射颜色由这个位置生成的cubemap根据反射方向采样后与主纹理颜色、预设颜色混合得到;反射方向由视角方向和法线方向计算得到。
- 波动:随时间修改采样噪声纹理的uv偏移,产生变化的法线方向。
- 全局雾效:在之前的雾效基础上,增加一个噪声纹理的采样与雾的浓度相乘,得到不均匀的雾。动态的实现与水波相同,随时间偏移噪声采样坐标即可。
- Unity中的渲染优化技术:移动平台与PC的特点对比;CPU、GPU、纹理造成的性能瓶颈及优化方向;Unity的渲染分析工具:渲染统计窗口、性能分析器、帧调试器等;
- 具体优化:CPU:利用批处理减少DrawCall的原理;GPU:减少顶点、减少overdraw;纹理:减小大小和使用缩放。
- Unity表面着色器:相对于顶点着色器和片元着色器跟高的抽象,更加简短,有利有弊。编译指令:指出表面着色器选哟的表面函数和光照函数、以及一些渲染的设定。结构体Input和SurfaceOutput,存储数据来源和表面属性。
- 表面着色器的编译过程和优缺点分析:缺点是自由度低,性能差,可能无法实现自定义的渲染效果;优点是可以便利的处理各种光源,编写简单。
- PBS的理论和数学基础:光的反射、此表面散射–>BRDF双向反射函数:计算这些光照的分布。
- 漫反射部分:Lambertian BRDF–>Unity5使用的漫反射增加了掠射角和表面粗糙程度的计算。
- 高光反射部分:基于Torrance-Sparrow微面元模型,值为:菲涅尔反射函数*法线分布函数*阴影遮盖函数/矫正因子。
- Unity中的PBS实现:漫反射部分如15所述;高光反射部分的法线分布函数(GGX模型),阴影遮盖函数(Smith-Schlick模型),菲涅尔反射函数(Schlick菲涅尔近似等式)。
- Unity5中的Standard Shader:是对于17的具体实现,按照工作流程分为金属工作流和高光工作流。
- 全局光照流水线:直接光照(平行光)+间接光照(前者的来回反射)。
- 反射探针:在指定位置获取Cubemap,模拟间接光照中的互相反射效果。
- 光线追踪不同于间接光照,只追踪了重要的光照路径。
- 预计算实时全局光照:预计算静态物体的光照信息存储到光照纹理、光照探针、Cubemap中。
- 伽马校正:线性和非线性的输入输出会产生差异,需要在移动平台上手动校正。
- HDR:高动态范围渲染,更加细节的掌握亮度差异,而不是将超过范围的值进行截取。缺点:需要更多存储空间、硬件支持不同。
- 第19章:Unity5更新内容。
- 第20章:学习资料推荐。