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);
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