Unity URP Shader之用Matcap渲染天牛

Matcap全称MaterialCapture(材质捕获),是一种把光照信息存储在纹理,从而省略大量光照计算(只需要采样一张图),就可以实现有光的感觉。

实现方法:将模型的法线转换到相机空间,再使用法线作为uv去采样贴图。由于法线的范围是-1到1,在采样时法线的范围是以0点为圆心,半径为2的圆形区域。再被映射到0-1时,就只会采样到matcap贴图的圆形区域。

关键代码如下:

// matcap
half3 viewN = mul(UNITY_MATRIX_V, float4(N, 0)).xyz;
half2 uv_matcap = viewN.xy * 0.5 + float2(0.5, 0.5);
half4 matcapColor = SAMPLE_TEXTURE2D(_Matcap, sampler_Matcap, uv_matcap);

例如mapcat贴图如下:

 现用matcap技术渲染一只天牛,效果如下:

 转载请注明出处:https://www.cnblogs.com/jietian331/p/17020075.html

 

posted @ 2023-01-02 16:29  孤独の巡礼  阅读(714)  评论(0编辑  收藏  举报