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

简介:

效果对比

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处理,效果更佳。大家可以根据自己项目的需求来进行完善。





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

目录
相关文章
|
小程序 数据库
喜欢看球,那就手撸一个看球小程序系统
一,系统展示;二,小程序端代码;三,后端代码;四,数据库;五,手把手教你学习
115 0
喜欢看球,那就手撸一个看球小程序系统
|
数据安全/隐私保护
推荐5个神仙软件,个个让你爱不释手
最近陆陆续续收到好多小伙伴的咨询,这边也是抓紧时间整理出几个好用的软件,希望可以帮到大家。
198 0
|
JavaScript Java API
@Value竟然能玩出这么多花样
@Value竟然能玩出这么多花样
@Value竟然能玩出这么多花样
超火 3D 照片墙,你学废了吗?
超火 3D 照片墙,你学废了吗?
152 0
|
安全 定位技术 Android开发
跟《原神》学学怎么让用户上瘾
我刚玩一周,抽卡还不到20次的时候,就抽到了当期up的五星角色“胡桃”,一查发现这个角色很厉害,有人抽了上百次都没抽到,白板号都能卖到5、600元,觉得自己运气很好,赚到了的感觉,更加卖力地玩下去把角色养大。
1465 0
跟《原神》学学怎么让用户上瘾
关于微课的探讨一
微课就像破窗锤那个尖端的部分,而微课程就相当于它的另一面。
441 0
|
机器人 机器学习/深度学习
|
IDE Java Linux
程序猿怎样选择机械键盘
摘要: 机械键盘的轴体选择是见痛苦的事,不知道哪款轴体是最适合自己的,我的第一部机械键盘是 IKBC C87 青轴。青轴使用了一年多,对机械键盘越来越了解,期间跟同事交换使用,体验机械键盘其他轴体茶轴和红轴,最终发现真正适合自己的是红轴。
3961 0