滚动膨胀效果

可这效果就是让我们的烟能够拥有规律性的膨胀的效果

我们有连个尺度的贴图,一个是大尺度的贴图,粒度比较的大,另一个是小尺度的,比较的零碎。其中两张贴图其实是一样的,不过小的贴图是缩小了36倍。根据时间,对大尺度的斜方向平移贴图,然后锐化贴图,对小尺度的上移材质,然后进行锐化,各自增加自己的参数值。之后两者进行叠加合成一张贴图。

之后衰减上部的数值后,根据顶点的法线进行变换。也就是说,这种变换是根据法线不断的进行膨胀操作,因为很凌乱,所以比较像烟。

法线效果

法线效果主要表现烟的表面的凹凸感,实际上并没有什么特殊的

烟雾上升效果

首先增加一个UV的basecolor的平移效果,然后进入FuzzyShading函数,此函数模仿类似于天鹅绒或苔藓的表面,并与菲涅耳计算类似。

制作完成后进入执行ConvertFromDiffSpec函数,这个函数您只需插入漫反射和镜面反射颜色,它就会在运行时将其转换为带有漫反射,高光和金属的PBR方案。但是存在一个主要的大问题。调用这个函数是非常昂贵的。

内置火光

这里主要是通过自发光来完成的,同时也是最复杂的地方,我们一个一个部分来进行分析,第一个就是底部的非常强烈的火光是如何实现的

我们会根据法线,如果法线的朝向是越接近朝向(0,0.5,1)的,那么我们就将它进行高亮,最后通道控制只在底部的部分。

控制有了,但是光是怎么做的呢,是对noize的平移操作,然后添加到UV上,作用到火山的火光贴图上,这样的话,我们的火光会出现扰动。然后根据随时间变化的sin函数,对Smoke进行控制,叠加后就会形成一个不仅会扰动,而且内部会有烟的花纹的情况。

  1. 然后是普通的发光

普通的光就是整体的光,和上面的底部光一样,只是数值上会比他大一些。然后是加上反向的菲尼尔公式,更重要的是,由于我们是黑烟,所以根据常识会有灰色的部分,这一部分根据我们的在basecolor上的颜色我们来计算叠加