MatCap:低成本PBR的原理与实现

MatCap是Material Capture的缩写,意为“材质捕获”;
Matcap Shader是一种在某些层面能替代甚至超越PBR的次时代渲染方案;
它的效率极高、计算成本极低,显示效果极佳,却能完美运行于不同的移动平台,并兼容AR、VR设备,所以极具研究与实用价值;
但Matcap也有很多局限性和缺点,在今天的课程中,我就将给大家分享讲解Matcap的实现原理和并实现matcap渲染,以及如何在以较低成本渲染的同时,解决它的一些效果上的缺陷。
版权声明
本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明
学习更多技术干货,请加qq:1517069595或vx:alice17173(企业级性能优化/热更新/Shader特效/服务器/商业项目实战/每周直播/一对一指导)
点赞、关注、分享可免费获得配套学习资源
详细内容可参考文末完整视频
为什么要用MatCap

左边:
每一个公式都对应了一段Shader代码,这里展示的是局部光照,而且这里并没有把这些公式的计算过程展开,大家就已经看到这么多公式了,展开后对应的渲染指令会更多,因此大家可以想象到这里的计算开销是比较大的。
这里还仅仅是采用了局部光照计算模型,如果我们采用更真实的基于物理的光照,也就是所谓的PBR,那么,计算的开销会更大!
右边:
为什么要用MatCap?一句话说就是:性能省、效果佳。
为什么性能省?是因为它是从一张纹理贴图去采样光照计算的结果
为什么效果佳?是因为这张贴图直接来自于PBR光照渲染的结果,贴图质量高,渲染出来的光照质量自然就高!
精确计算matcap节省的指令数那是另一个话题了,先说结论:
大体上估算,一个较为完善的光照计算过程需要几十条以上的图形指令
而matcap只需要几条,而且很多计算都可以在顶点阶段完成,这样就大大节省了性能
在我们学完了matcap原理后,相信大家也能理解这其中究竟省了多少渲染开销
MatCap原理
MatCap的基本原理比较简单:就是:
用一张MatCap贴图作为渲染好的漫反射贴图
用物体表面的法线对该贴图进行采样
但是,说起来简单,网上也有不少MatCap实践的文章,但是对于MatCap原理的介绍都囫囵吞枣,这里我们结合实战,给大家列举一些MatCap容易被大家忽视的细节,通过这些细节,真正做到了解MatCap贴图技术!
MatCap实战
Step 1:建立正常物体表面贴图

通常,一张贴图可以表示物体表面细节,如上图所示,但是该图不能表现物体的漫反射光照情况,因此我们把物体表面贴图换成用于表示漫反射光照的自发光贴图
Step 2:替换为MatCap贴图

这张MatCap贴图本来用于表现物体的边缘光,但是我们注意到物体的中心位置也有边缘光效果,因此这是错误的!
换成球体可能更能发现问题:MatCap贴图的十字中心应位于球体中部!

Step 3:为此我们用物体表面法线对物体进行采样

似乎更正确一点了,但是MatCap贴图被重复了四次,因为法线坐标是介于【-1,-1】~【1,1】,相当于把uv坐标横竖各重复了一次
Step 4:重新映射法线坐标到【0,0】~【1,1】



上图是从【-1,1】重映射到【0,1】


效果不太正确,从视角方向观察到的MatCap贴图应当是一致的!
Step 5:采用视图空间法线
我们需要采用“视图空间”法线进行MatCap贴图的采样,具体原理较为复杂,可以参考Unity小白的TA之路


效果对了!都是边缘发光:


那么问题来了:法线跟MatCap贴图是如何对应的呢?如何制作一张正确的MatCap贴图?
这里用文字描述会不太容易理解,建议配合视频进行学习(视频地址见文末)


答案就在图里!
拓展
用MatCap进行卡通渲染

结合固有色贴图获得角色细节(有些额外细节,可以观看视频)

替换材质和MatCap Shader算法可以获得更丰富的质感:
文末扫码领取MatCap材质

MatCap的缺陷

MatCap Shader代码实现
Shader Graph通常只适合用来做效果原型,在这里我们把它转换为Shader代码
文末加好友进群学习如何手写Shader代码,以及URP Shader

关于代码的思考
同学们可以在文末跟帖讨论:

MatCap进阶
这里只做总结,具体技术详解请见文末视频(手打酸了,打不动字了~~)
也可以加文末好友进TA专属训练营






面试和作品要点解析
Matcap相比于PBR的性能优化
Matcap各类问题的解决思路
雷蒙德老师会针对游戏公司近年来的作品和招聘要求,给各位同学一对一指导作品创作,帮助各位同学创作与众不同的作品效果~
写在最后
学习更多技术干货,请加qq:1517069595或vx:alice17173(企业级性能优化/热更新/Shader特效/服务器/商业项目实战/每周直播/一对一指导)
点赞、关注、分享可免费获得配套学习资源
详细内容可参考下方完整视频
