技巧| 如何打造高逼格耀斑效果

简介:

效果对比

UWA Tech Doc


实现方法

1、降采样
将原始贴图(Source Image)的长宽逐步缩减为原来的1/4尺寸(Quarter Source Image),如下图所示。
UWA Tech Doc

2、亮度过滤、模糊及拉伸处理
对Quarter Image进行亮度过滤处理,滤去Quarter Image中的暗部,以获取Image中的亮斑部分。然后,对其进行Blur模糊和拉伸处理,即将亮斑部分区域柔和且扩大化,已获得Flare效果。

UWA Tech Doc

亮度过滤核心代码:

    half4 frag(v2f i) : COLOR 
    {
        half4 color = tex2D(_MainTex, i.uv);
        color = color * lerp(1.0, color.a, AlphaMask);//AlphaMask 用户输入
        color = max(half4(0,0,0,0), color- FilterValue); //FilterValue 用户输入
        return color;
    }

Blur核心代码:

    half4 color = half4 (0,0,0,0);
        color += 0.225 * tex2D (_MainTex, i.uv);
        color += 0.150 * tex2D (_MainTex, i.uv01.xy);
        color += 0.150 * tex2D (_MainTex, i.uv01.zw);
        color += 0.110 * tex2D (_MainTex, i.uv23.xy);
        color += 0.110 * tex2D (_MainTex, i.uv23.zw);
        color += 0.075 * tex2D (_MainTex, i.uv45.xy);
        color += 0.075 * tex2D (_MainTex, i.uv45.zw);   
        color += 0.0525 * tex2D (_MainTex, i.uv67.xy);
        color += 0.0525 * tex2D (_MainTex, i.uv67.zw);

亮度拉伸核心代码:

v2f_opts vertStretch (appdata_img v) {
        v2f_opts o;
        o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
        half b = stretchWidth;      
        o.uv0 = v.texcoord.xy;
        o.uv1 = v.texcoord.xy + b * 2.0 * offsets.xy;  //offsets用户输入权值
        o.uv2 = v.texcoord.xy - b * 2.0 * offsets.xy;
        o.uv3 = v.texcoord.xy + b * 4.0 * offsets.xy;
        o.uv4 = v.texcoord.xy - b * 4.0 * offsets.xy;
        o.uv5 = v.texcoord.xy + b * 6.0 * offsets.xy;
        o.uv6 = v.texcoord.xy - b * 6.0 * offsets.xy;
        return o;
    }
    half4 fragStretch (v2f_opts i) : COLOR {
        half4 color = tex2D (_MainTex, i.uv0);
        color = max (color, tex2D (_MainTex, i.uv1));
        color = max (color, tex2D (_MainTex, i.uv2));
        color = max (color, tex2D (_MainTex, i.uv3));
        color = max (color, tex2D (_MainTex, i.uv4));
        color = max (color, tex2D (_MainTex, i.uv5));
        color = max (color, tex2D (_MainTex, i.uv6));
        return color;
    }   

3、贴图合并
将原始贴图(Source Image)与 模糊拉伸贴图(Blurred Stretched Image)进行混合叠加 ,即可实现耀斑效果,大功告成!

核心代码:

    BlendOp Add
        Blend One One

性能分析

该方法能在武器展示或者人物亮相时使用,并且考虑到可以达到如此出众的美术效果,所以虽然比起传统Bloom效果增加了2个Draw Call,在我们看来也是超值的。

同时,建议开发者在实际应用中增加一些Pass,比如多次Blur或者边缘模化的处理方法。另外还可以对耀斑颜色做Color Aberration处理,效果更佳。大家可以根据自己项目的需求来进行完善。





原文出处:侑虎科技
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
程序员 BI
高逼格!程序猿的表白也可以这么浪漫
什么?你说程序猿整天只会敲代码一点也不懂浪漫?那你可能有一个假程序猿男朋友
4953 0
端午还在“修锁”?你是真的卷王!(二)
今天为你带来的是 ReentrantLock 公平锁与非公平锁的源码分析,它是 Java 并发包下的一个 java.util.concurrent.locks 实现类,实现了 Lock 接口和 Serializable 接口。
端午还在“修锁”?你是真的卷王!(二)
端午还在“修锁”?你是真的卷王!(一)
哈喽,大家好,我是指北君。 今天为你带来的是 ReentrantLock 公平锁与非公平锁的源码分析,它是 Java 并发包下的一个 java.util.concurrent.locks 实现类,实现了 Lock 接口和 Serializable 接口。
端午还在“修锁”?你是真的卷王!(一)
阿云漫画 | 一图看懂1G到5G的发展史
编者按: 时逢5G时代加速转型发展,信息的传递方式在不断的更新迭代,通过手机,我们可以聊天、看直播、刷视频。从1G到5G,我们看到了科技给人们生活带来了巨变,但在以前通讯条件没有像今天这么发达的时候,大家都是怎么传递信息的?
253 0
|
程序员 Python
程序员“自制”冰墩墩
基于Python turtle 绘图实现
154 0
程序员“自制”冰墩墩
|
人工智能 算法 容灾
喜迎女神节 高颜值支付宝程序媛的硬核人生
桃之夭夭,灼灼其华,在疫情渐退的三月,我们迎来第110个“女神节”——“三八”国际妇女节。 
616 0
|
程序员 安全
第一夜:万圣节,讲一个关于程序员的故事
  小王加入这家公司刚刚一个星期,这天临时有一个需求,他和同事们加班到了很晚,因为家离得很远而这个时间早已没有公交车了,他索性决定不回家了通宵把BUG 都解决 。同事们陆陆续续都离开了,最后一个走的同事劝他还是不要在公司过夜,如果实在没有地方去,可以到网吧包宿。
1036 0
|
程序员
第二夜:万圣节,讲一个关于程序员的故事
次日中午,小王已经不知睡去了多久,渐渐恢复了知觉。感觉嘴鼻被一团毛绒的东西压着,似乎还带着女人特有的体香。小王潜意识中出现了一个邪恶的画面感,顿时清醒了。睁开眼睛发现自己竟然躺在茶水间的沙发上,身上盖着一件女式的厚毛领风衣,昨天晚上发生的事情他似乎已经断片,他正努力的回忆自己是何时睡在了这里时。
1113 0

热门文章

最新文章