国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Unity UI.Image 六邊形+流光 Shader

這篇具有很好參考價值的文章主要介紹了Unity UI.Image 六邊形+流光 Shader。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

效果圖

Unity UI.Image 六邊形+流光 Shader,Unity,unity,ui,游戲引擎

參考代碼

Shader"Custom/HexFlowImage"
{
    Properties
    {
        [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
        _Color ("Tint", Color) = (1,1,1,1)

        _StencilComp ("Stencil Comparison", Float) = 8
        _Stencil ("Stencil ID", Float) = 0
        _StencilOp ("Stencil Operation", Float) = 0
        _StencilWriteMask ("Stencil Write Mask", Float) = 255
        _StencilReadMask ("Stencil Read Mask", Float) = 255
        _ColorMask ("Color Mask", Float) = 15

         /*六邊形參數(shù)*/
        _HexLineSize("HexLineSize",Range(0.02,0.2)) = 0.05       //線條粗細
        _HexZoom("HexZoom",Range(5,50)) = 10                     //六邊形縮放
 
        /*流光參數(shù)*/
        _Angle("Angle",Range(0,3.1415926))=0                     //坐標系旋轉(zhuǎn)角度
        _LineStrength("LineStrength",Range(0.01,0.99))=0.1       //流光線條粗細
        _LineEdge("LineEdge",Range(0,0.1))=0.01                  //流光邊界過度粗細
        _LineOffset("LineOffset",Range(0,1))=0.5                 //流光坐標偏移
        _LineSpeed("MoveSpeed",float) =1                         //流光移動速度
        _LineColor("Color",Color)=(1,1,1,1)                      //流光顏色

        [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
    }

    SubShader
    {
        Tags
        {
            "Queue"="Transparent"
            "IgnoreProjector"="True"
            "RenderType"="Transparent"
            "PreviewType"="Plane"
            "CanUseSpriteAtlas"="True"
        }

        Stencil
        {
            Ref[_Stencil]
            Comp [_StencilComp]
            Pass [_StencilOp]
            ReadMask[_StencilReadMask]
            WriteMask [_StencilWriteMask]
        }
        Cull Off
        Lighting Off
        ZWrite Off
        ZTest[unity_GUIZTestMode]
        Blend One
        OneMinusSrcAlpha
        ColorMask[_ColorMask]

        Pass
        {
            Name"Default"
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            #pragma target 2.0

            #include "UnityCG.cginc"
            #include "UnityUI.cginc"

            #pragma multi_compile_local _ UNITY_UI_CLIP_RECT
            #pragma multi_compile_local _ UNITY_UI_ALPHACLIP
            #define aspec _ScreenParams.x/_ScreenParams.y                          /*屏幕長款比例*/                                   
            #define rot float2x2(cos(_Angle),sin(_Angle),-sin(_Angle),cos(_Angle)) /*旋轉(zhuǎn)矩陣*/        
            struct appdata_t
            {
                    float4 vertex : POSITION;
                    float4 color : COLOR;
                    float2 texcoord : TEXCOORD0;
                   UNITY_VERTEX_INPUT_INSTANCE_ID
            };

            struct v2f
            {
                   float4 vertex : SV_POSITION;
                   fixed4 color : COLOR;
                   float2 texcoord : TEXCOORD0;
                   float4 worldPosition : TEXCOORD1;
                   float4 mask : TEXCOORD2;
                   float2 viewTexcoord : TEXTCOORD3;   //屏幕坐標
                   UNITY_VERTEX_OUTPUT_STEREO
              };

               sampler2D _MainTex;
               fixed4 _Color;
               fixed4 _TextureSampleAdd;

               float4 _ClipRect;
               float4 _MainTex_ST;
               float _UIMaskSoftnessX;
               float _UIMaskSoftnessY;
               float _HexLineSize;
               float _HexZoom;

               float _Angle;
               float _LineStrength;
               float _LineEdge;
               float _LineOffset;
               float _LineSpeed;
               fixed4 _LineColor;

               float HexDist(fixed2 p)
               {
                   p = abs(p);
                   float c = dot(p, normalize(fixed2(1, 1.73)));
                   c = max(c, p.x);
                   return c;
               }

               fixed4 HexCoords(fixed2 uv)
               {
                   const fixed2 r = fixed2(1, 1.73);
                   const fixed2 h = r * .5;
                   fixed2 a = fmod(uv, r) - h;
                   fixed2 b = fmod(uv - h, r) - h;  
                   fixed2 gv = dot(a, a) < dot(b, b) ? a : b;
                   float x = atan2(gv.x, gv.y);
                   float y = .5 - HexDist(gv);
                   fixed2 id = uv - gv;
                   return fixed4(x, y, id.x, id.y);
               }

               v2f vert(appdata_t v)
               {
                   v2f OUT;
                   UNITY_SETUP_INSTANCE_ID(v);
                   UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
                   float4 vPosition = UnityObjectToClipPos(v.vertex);
                   OUT.worldPosition = v.vertex;
                   OUT.vertex = vPosition;

                   float2 pixelSize = vPosition.w;
                   pixelSize /= float2(1, 1) * abs(mul((float2x2) UNITY_MATRIX_P, _ScreenParams.xy));

                   float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
                   float2 maskUV = (v.vertex.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
                   OUT.texcoord = TRANSFORM_TEX(v.texcoord.xy, _MainTex);
                   OUT.mask = float4(v.vertex.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_UIMaskSoftnessX, _UIMaskSoftnessY) + abs(pixelSize.xy)));

                   OUT.color = v.color;

                   //計算屏幕坐標
                   fixed4 vpos = ComputeScreenPos(OUT.vertex);
                   OUT.viewTexcoord = vpos.xy / vpos.w;
                   OUT.viewTexcoord.x *= aspec;
                   OUT.viewTexcoord += 0.5;
                   return OUT;
               }

               fixed4 frag(v2f IN) : SV_Target
               {
                   const half alphaPrecision = half(0xff);
                   const half invAlphaPrecision = half(1.0 / alphaPrecision);
                   IN.color.a = round(IN.color.a * alphaPrecision) * invAlphaPrecision;

                   //獲取屏幕坐標 計算六邊形像素
                   float2 uv1 = IN.viewTexcoord + float2(0, sin(IN.viewTexcoord.x * 5. + _Time.y) * 0.01);
                   half4 hex = smoothstep(_HexLineSize, .0, HexCoords(uv1 * _HexZoom).y) * IN.color.a;

                   //旋轉(zhuǎn)屏幕坐標計算流光像素
                   float2 uv2 =   mul(rot,IN.viewTexcoord.xy);
                   uv2.x +=  _Time.y * _LineSpeed;
                   uv2.x = frac(uv2.x);
                   float d = smoothstep(_LineOffset,_LineOffset + _LineEdge,uv2.x) * smoothstep(_LineOffset + _LineStrength,_LineOffset + _LineStrength - _LineEdge,uv2.x);

                   //通過lerp函數(shù)進行差值融合 再與原始圖像進行疊加
                   half4 color = lerp( IN.color * hex , hex  * _LineColor,d)+ tex2D(_MainTex, IN.texcoord);

#ifdef UNITY_UI_CLIP_RECT
                   half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);
                   color.a *= m.x * m.y;
#endif

#ifdef UNITY_UI_ALPHACLIP
                   clip (color.a - 0.001);
#endif
                   color.rgb *= color.a;
                   return color;
               }
        ENDCG
        }
    }
}

?文章來源地址http://www.zghlxwxcb.cn/news/detail-675325.html

到了這里,關(guān)于Unity UI.Image 六邊形+流光 Shader的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • DDD架構(gòu)為什么應(yīng)該首選六邊形架構(gòu)?

    分層架構(gòu)的一個重要原則是:每層只能與位于其下方的層發(fā)生耦合。 分層架構(gòu)分兩種:一種是嚴格分層架構(gòu),規(guī)定某層只能與直接位于其下方的層發(fā)生耦合;另一種是松散分層架構(gòu),允許任意上方層與任意下方層發(fā)生耦合。 下圖是一個典型的DDD傳統(tǒng)分層架構(gòu)。 以上分層架構(gòu)

    2024年02月16日
    瀏覽(29)
  • ??創(chuàng)意網(wǎng)頁:如何創(chuàng)建一個漂亮的3D正六邊形

    ??創(chuàng)意網(wǎng)頁:如何創(chuàng)建一個漂亮的3D正六邊形

    ? 博主: 命運之光 ? ?? 專欄: Python星辰秘典 ?? 專欄: web開發(fā)(簡單好用又好看) ?? 專欄: Java經(jīng)典程序設(shè)計 ?? 博主的其他文章: 點擊進入博主的主頁 前言: 歡迎踏入我的Web項目專欄,一段神奇而令人陶醉的數(shù)字世界! ?? 在這里,我將帶您穿越時空,揭開屬于

    2024年02月16日
    瀏覽(24)
  • 數(shù)據(jù)分析系統(tǒng)中的六邊形戰(zhàn)士——奧威BI系統(tǒng)

    數(shù)據(jù)分析系統(tǒng)中的六邊形戰(zhàn)士——奧威BI系統(tǒng)

    數(shù)據(jù)分析軟件可以對收集的數(shù)據(jù)進行分析和報告,幫助企業(yè)獲得更深入的數(shù)據(jù)洞察力,從而推動企業(yè)數(shù)字化運營決策,提高決策效率與質(zhì)量。進入大數(shù)據(jù)時代,企業(yè)對數(shù)據(jù)分析軟件的要求也在水漲船高,傳統(tǒng)的數(shù)據(jù)分析軟件顯然已不能滿足企業(yè)大數(shù)據(jù)智能可視化分析的精細化

    2024年02月16日
    瀏覽(24)
  • 從混亂到優(yōu)雅:基于DDD的六邊形架構(gòu)的代碼翻新指南

    趁著雙十一備戰(zhàn)封板,終于又有一些時間可以梳理一下最近的心得。 最近這半年跟同事討論比較多的是分層架構(gòu),然后就會遇到兩個觸及靈魂的問題,一個是如何做好分層架構(gòu),二是DDD在架構(gòu)層面該如何落地。 為了說好分層,我們需要了解架構(gòu)的意義。 良好的架構(gòu)是為了保

    2024年02月05日
    瀏覽(35)
  • QT使用QImage制作圖片的四種(圓形,六邊形,復(fù)古與負片)效果(測試過效果的代碼)

    負片效果: 復(fù)古效果:? ?裁剪成圓形 ? 裁剪成六邊形: ?

    2024年02月13日
    瀏覽(26)
  • Unity中Shader實現(xiàn)UI流光效果

    Unity中Shader實現(xiàn)UI流光效果

    在很多游戲的 UI 中,都有實現(xiàn) 一道光掃過 UI 的效果 Unity中Shader的時間_Time 注意: 因為,這是UGUI的Shader,記著修改渲染順序為 透明層級 和 混合模式 Tags {“Queue” = “TransParent”} Blend SrcAlpha OneMinusSrcAlpha 代碼: 效果: Unity3D Shader系列之UI流光效果 Unity流光shader,無需圖片

    2024年02月05日
    瀏覽(23)
  • Unity之ASE實現(xiàn)UI流光效果

    Unity之ASE實現(xiàn)UI流光效果

    之前我們做過UV流動的效果,今天我們來做一個用于UI界面的特效–UI流光效果,先看下效果如下: 1.創(chuàng)建一個Legacy/Default UI的Shader,這是專門用于UI的shader模板 2.添加一個Templete Parameter節(jié)點,作為Image的Sprite Texture貼圖 3.然后我們把Sprite Texture輸出給一個Texture Sample節(jié)點 如下所示

    2023年04月21日
    瀏覽(42)
  • Unity3d 圖片Image置灰shader

    置灰公式:? ? value=color.r x 0.299 +color.g x 0.587 + color.b * 0.114 color.rgb = lerp(color.rgb, Luminance(color.rgb), _Factor); 或 color.rgb = dot(color.rgb, fixed3(0.299, 0.587, 0.114));

    2024年02月11日
    瀏覽(27)
  • Unity Shader - UI/Default shader 優(yōu)化示例

    Unity Shader - UI/Default shader 優(yōu)化示例

    Unity : 2020.3.37f1 Pipeline : BRP 做性能優(yōu)化都是慢慢都扣出來的 當然,優(yōu)先處理 top 熱點的 但是一些就算不是 top,但是像素面積有多,overdraw 也多不可小覷 當然,如果你能找到性能熱點,那還是優(yōu)先分析一下哪些 shader 占的 cycles 最高,和 A, L/S, T, 最高 還有 register 的數(shù)量盡可能

    2024年02月07日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包