ShaderLab入门实践7
Hello~小伙伴们好,前面第5期入门实践,汪汪给大家说了要实现毛茸茸材质,结果也是鸽了很久,本篇入门实践7,是结合了第【五】期的法线挤出和第【六】期的透明效果总结而来的哦。其实大家只要学会这两个功能的实现,那么知道理论后,大家其实是可以试着自己写的哦。好了,我们废话少说,开始我们今天的主要内容:毛茸茸基本原理:首先我们需要把贴有贴图的模型放大一圈: 接着,我们把放大一圈的模型进行裁剪: (画的有
·
Hello~小伙伴们好,前面第5期入门实践,汪汪给大家说了要实现毛茸茸材质,结果也是鸽了很久,本篇入门实践7,是结合了第【五】期的法线挤出和第【六】期的透明效果总结而来的哦。其实大家只要学会这两个功能的实现,那么知道理论后,大家其实是可以试着自己写的哦。
好了,我们废话少说,开始我们今天的主要内容:
毛茸茸基本原理:
首先我们需要把贴有贴图的模型放大一圈: 接着,我们把放大一圈的模型进行裁剪: (画的有点随意,大家理解意思就行)


说清楚原理后,汪汪将带大家一步一步来解读和实现:
-
从上面的图解大家应该不难发现,其实我们一个模型渲染了两次,一个渲染本身,一个渲染毛茸茸,所以需要两个Pass
-
由于毛茸茸的错综复杂,如果毛茸茸太过整齐,会导致效果不好,所以需要多渲染几层毛茸茸,来有凌乱的感觉,为了避免shader代码太过复杂,这里引入文件支持,把顶点函数和片元函数写进支持文件,利用#pragma实现调用,再通过#define来改变毛茸茸长度。
支持文件的编写,文件名Helper.cginc:
两个Pass,这里就需要两套顶点/片元函数,一套实现基本渲染,一套实现毛茸茸渲染:
-
基本渲染的实现汪汪就不再打备注或赘述了,大家可以看看第【2】节: 但是需要注意支持文件的书写格式:

-
接下来是重点,毛茸茸的编写,法线挤出和透明显示汪汪不再细说,可以查看汪汪的第【5】、【6】节:

Shader文件的编写:
-
小伙伴们如果细心查看代码,可能会发现,我们在支持文件中写的挤出模型的代码中,有一个STEP值,这个是用来控制模型挤出的数值的,通过在shader代码中复制多个Pass,并通过#define STEP 数值来达到毛茸茸的叠加效果,以此来让毛茸茸更凌乱,如下: 好了,接下来,汪汪要给小伙伴们补充一点,噪波图:


-
噪波图为黑白两色构成,其中在开启透明的情况下,黑色透明,白色显示。 所以噪波图的选择对毛茸茸效果很重要哦~ 这是汪汪找的噪波图,当然,利用PS的滤镜工具,小伙伴们也可以轻松创建: 好啦,我们来看看效果: 当然,这只是很简单的毛茸茸效果,我们可以给它加很多的细节处理,这里只是让大家了解原理,不多赘述,有能力的小伙伴可以自己添加效果,去改造哦~



好啦,本期入门实践就到这里了,小伙伴们有意见和看法可以给汪汪留言,另外如有错误之处,请多多指出和海涵。
更多推荐
所有评论(0)