目标效果
- 消失效果
- 烧焦颜色的过渡
准备
- 漫反射纹理,作为基础颜色
- 法线纹理,计算颜色
- 噪声纹理,需要密度较小,块比较大的
过程
消失效果
a = 噪声纹理burn.r – 消失程度
a<0的话, clip函数直接返回
相当于噪声图中越亮的,越晚消失
fixed4 frag(v2f i) : SV_Target {
fixed3 burn = tex2D(_BurnMap, i.uvBurnMap).rgb;
clip(burn.r - _BurnAmount);
......
}
烧焦颜色的过渡
(假设消失程度_BurnAmount越来越大)
从消融效果可发现,烧焦块是从噪声图暗处开始,先产生烧焦颜色,然后发生消失效果。
首先我们用一个t来描述在不clip掉该片元时的颜色变化:
fixed3 finalColor(最终颜色) = lerp(ambient + diffuse * atten, burnColor(烧焦颜色), t );
而烧焦宽度,要从消失边缘开始算。也就是t变化接近于1的那一段,同时用soomthstep来平滑这段的取值。得到
t = 1 – soomthst