首页 > 其他分享 >Camera画面边缘羽化

Camera画面边缘羽化

时间:2023-01-31 00:24:15浏览次数:51  
标签:羽化 1.0 vertex texcoord 画面 Camera half2 EdgeFade v2f

用到的shader

Shader "My/EdgeFade"
{
    Properties
    {
        _EdgeFade("EdgeFade", Range(0, 1)) = 0.8
    }
    SubShader
    {
        Tags
        {
            "Queue" = "Overlay" 
            "IgnoreProjector" = "True" 
            "RenderType" = "Transparent" 
        }

        Pass
        {
            Blend Zero One, One Zero
            Cull Off
            ZWrite Off
            ZTest Off

            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma target 2.0

            #include "UnityCG.cginc"

            struct appdata_t
            {
                float4 vertex : POSITION;
                float2 texcoord : TEXCOORD0;
            };

            struct v2f
            {
                float4 vertex : SV_POSITION;
                half2 texcoord : TEXCOORD0;
            };

            half _EdgeFade;

            v2f vert(appdata_t v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.vertex.xyzw = o.vertex.xyzw / o.vertex.w;
                o.vertex.xy = v.texcoord.xy * 2.0 - 1.0; //[0, 1]范围变成[-1, 1]
                o.texcoord = v.texcoord;
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
                half2 uv = abs(i.texcoord.xy * 2.0 - 1.0);
                half2 dis = clamp(uv - _EdgeFade, half2(0, 0), half2(1.0, 1.0)); //uv值<_EdgeFade时dis总是为0; uv值越靠近1, dis值越大

                half factor = 1.001 / (1.001 - _EdgeFade);
                half2 a = clamp(half2(1.0, 1.0) - dis * factor, half2(0, 0), half2(1.0, 1.0)); //uv值越靠近1, 透明度越接近0; 越靠近0, 越接近1; 透明度线性变化, t值越大斜率越大;
                fixed4 col = fixed4(0, 0, 0, a.x * a.y); //x固定时, 是线性方程; y固定时, 也是线性方程;
                return col;
            }
            ENDCG
        }
    }
}

 

 

假设_EdgeFade=0.8, dis的方程图像,x<=0.8时dis总是为0

factor的方程图像,EdgeFade对最终alpha的影响是非线性的

 

不考虑factor时alpha的方程图像

 

 

参考

Desmos | 图形计算器

标签:羽化,1.0,vertex,texcoord,画面,Camera,half2,EdgeFade,v2f
From: https://www.cnblogs.com/sailJs/p/16551301.html

相关文章

  • python简单实现对桌面进行实时捕捉画面
    介绍最近在研究目标检测方面的小东西,需要到对桌面进行实时捕捉画面,获取画面后再检测,达到实时桌面目标检测的目的,所以写了一段小代码来实现该功能,实测速度很快,符合我的需求......
  • ORB-SLAM2: an Open-Source SLAM system for Monocular,Stereo and RGB-D Camera
    摘要本文提出ORB-SLAM2一个完整的SLAM系统,用于单目,双目以及RGB-D相机,包括地图重用,回环检测以及重定位能力。本系统工作在实时的标准CPU,在更宽泛的环境中,来自于手持的室内场......
  • 合宙ESP32S3 CameraWebServe 测试demo
    合宙ESP32S3CameraWebServe合宙ESP32S3CameraWebServe测试,我们需要一个OV2640的摄像头模组用来采集图像传输给ESP32的,这里使用的OV2640是之前安信可十周年的白嫖的。现......
  • Camera | 2.MIPI、CSI基础
    瑞芯微专栏上一篇我们讲解了camera的一些基础概念和知识。我们说了,现在的手机由于高分辨率的要求,现在基本上都是基于MIPI、CSI协议来实现的,本篇讲解MIPI、CSI的一些基础......
  • Android开发学习之路--Camera之初体验
      顾名思义Camera就是拍照和录像的功能,像微信里面,我们想拍照传一下照片,就可以通过camera来拍照,然后存储照片,发送给好友。那么微信的app里面是不会直接通过cameraapi来......
  • Ubuntu - 关闭谷歌浏览器时系统画面卡死
    解决方案注意现在时间是20230115:12:27,目前我不确定我这个是不是这个原因,如果后面我没有再修改这个随笔,就说明是这个原因导致的ubuntu界面卡死方案详情卡死的原......
  • ORB-SLAM2: an Open-Source SLAM system for Monocular,Stereo and RGB-D Camera
    摘要本文提出ORB-SLAM2一个完整的SLAM系统,用于单目,双目以及RGB-D相机,包括地图重用,回环检测以及重定位能力。本系统工作在实时的标准CPU,在更宽泛的环境中,来自于手持的室内......
  • Demo演示:ARM+FPGA主流嵌入式架构板卡-HDMI显示摄像画面
    ​各位工程师小伙伴们,大家好,ARM+FPGA作为一种主流的嵌入式系统的处理架构。相对于单纯的的ARM开发或单纯的FPGA开发,ARM加FPGA能够带来功耗、性能、成本等组合优势。米尔新......
  • [未解决] Office2016 长时间停留在“正在启动…”画面,且打开后操作卡顿
    环境及问题描述软件:Office2016家庭版Word、PPT、Excel系统:Windows10主机:ThinkPadE480(2018年开始使用)原本几年来都运行正常,一两个月前突然有一天开始打开非常慢,长时......
  • Camera | 1.Camera基础知识
    一口君最近在玩瑞芯微的板子,之前写了几篇基于瑞芯微的文章,大家可以学习一下。《瑞芯微rk356x板子快速上手》《Linux驱动|rtc-hym8563移植笔记》《Linux驱动|Linux内核......