摘自浅墨博客:http://blog.csdn.net/poem_qianmo/article/details/55803629
代码及资源下载:https://github.com/QianMo/Awesome-Unity-Shader/tree/master/Volume%2016%20%E5%9F%BA%E4%BA%8EMatCap%E5%AE%9E%E7%8E%B0%E9%AB%98%E7%9C%9F%E5%AE%9E%E6%84%9F%E8%BD%A6%E6%BC%86Shader
低计算成本、高真实感移动平台shader
Matcap概述
Material Capture(材质捕获),通常简称为matcap,在Zbrush、Sculptris、Mudbox等3D软件中有较多的使用。
Matcap Shader的基本思路是,使用某特定材质球的贴图,作为当前材质的视图空间环境贴图(view-space environment map),来实现具有均匀表面着色的反射材质物体的显示。考虑到物体的所有法线的投影范围在x(-1, 1),y(-1,1),构成了一个圆形,所以matcap贴图中存储光照信息的区域是一个圆形。
基于matcap思想的shader,可以无需任何光照,只需要提供一张或多张合适的matcap贴图作为光照结果的“指导”即可。
不像一般的shader,需要提供光照,在shader里计算光照,基于matcap的思想的shader相当于matcap贴图就把光照结果应该是怎么样的答案告诉shader,我们只要写下答案即可。
matcap有一定的局限性。得到相对固定的整体光照表现,若单单仅使用matcap,就仅适用于摄像机不调整角度的情形,并不适合摄像机会频繁旋转、调节角度的情形。但我们可以在某些shader中,用matcap配合与光照交互的其他属性,如将matcap结合一个作为光照反射的颜色知道的reflection cube map,就有了与光照之间的交互表现。