(
声明,如果有任何侵权或者写错别字,讲错话等违法或非违法行为,请先冷静,不要联系 麦德姆或德姆,都好商量。在冲量,不xi轻喷。

)
在 Cocos Creator 2.4 里面尝试下 Matcap
( 定场诗一首,给自己压压惊,抽刀断水水更流,举杯脚臭脚更chou )
Matcap ( Material Capture ) 应该是个很古老的技术了,知乎上这两个大佬一位提供了实现,一位提出了优化。第一位大佬提供了用工具生成纹理的方案,建议如果有需要的话,可以看看,第二位的貌似就细节调优了,一般人应该也看不到,不重要。
。其实这个东西还是挺好用的,美术可以控制,开发也省事,做些简单的静态一点的东西还口以把。
https://zhuanlan.zhihu.com/p/347947799;https://zhuanlan.zhihu.com/p/57775690
这里主要说下在 Cocos 2.4 里面怎么搞
- 首先要准备个有 vertex、frag的shader,附件里面有,具体也不难代码搬运工一下就有了( 这里面用的是 半兰伯特,感觉还可以把,复杂了俺也不会弄 )
- vert里面算一下 Capture 的纹理坐标,具体的实现附件里面也有
贴点代码,这个流程是固定的,其实俺理解是类似一个解码的过程,把用工具写在纹理里面的东西还原出来
vert() {
// 放到frag里面应该也可以,Unity3D有个优化版本用切线优化的部分貌似就放到frag里面了
// 要是有大佬准备指导一下,很高兴指导下俺
…
vec3 worldNorm = normalize(cc_matWorld[0].xyz * In.normal.x + cc_matWorld[1].xyz * In.normal.y + cc_matWorld[2].xyz * In.normal.z);
worldNorm = mat3( cc_matView ) * worldNorm;
v_capUV.xy = worldNorm.xy * 0.5 + 0.5;
…
}
frag() {
// 这里就比较简单了, 2.0 和 - 1.,以我现在的水准,理解是经验值,用来让纹理看上去好看一些用的,如果不用纹理就纯色的话,( 裸的几何体还挺适合纯色的 )
// 要是有大佬准备指导一下,仍然很高兴指导下俺…
…
matcapColor.rgb = finalColor.rgb + (matcapColor.rgb * 2.0) - 1.;
…
}
MatCap一些相关的东西.zip (62.2 KB)
附件会放一下 shader 和一个
的模型和几张引用的现成纹理( 狮子和这些纹理是引用的,可能有版权 ),放到项目就能看到效果, 最后上个效果把( 其实有个疑问,2.4没有天空盒么?)

***** 那就这样吧。。。


