unity中实现流光效果——世界空间下
创始人
2024-11-16 03:33:50
0
Properties     {         _MainTex ("Texture", 2D) = "white" {}         _FlowColor ("Flow Color", Color) = (1, 1, 1, 1) // 流光颜色         _FlowFrequency ("Flow Frequency", Float) = 1.0 // 流光频率         _FlowSpeed ("Flow Speed", Float) = 1.0 // 流光速度         _FlowAmplitude ("Flow Amplitude", Float) = 0.5 // 流光振幅         _FlowWidth ("Flow Width", Float) = 0.1 // 流光宽度         _FlowRotationAngle ("Flow Rotation Angle", Float) = 90.0 // 流光旋转角度,以度为单位         _FlowPhase ("Flow Phase", Float) = 0.0 // 流光相位     }     SubShader     {         Tags {             "RenderType" = "Opaque"             "Queue" = "Geometry+10"         }         LOD 100         Pass         {             CGPROGRAM             #pragma vertex vert             #pragma fragment frag             #include "UnityCG.cginc"              #pragma shader_feature _ ENABLE_FLOWLIGHT              struct appdata             {                 float4 vertex : POSITION;                 float2 texcoord : TEXCOORD0;                 float3 normal : NORMAL;             };              struct v2f             {                 float4 pos : SV_POSITION;                 float2 uv : TEXCOORD0;                 float3 pos_world : TEXCOORD1;                 float3 pivot_world : TEXCOORD2;             };              sampler2D _MainTex;             float4 _MainTex_ST;              float4 _FlowColor;             float _FlowFrequency;             float _FlowSpeed;             float _FlowAmplitude;             float _FlowWidth;             float _FlowRotationAngle;             float _FlowPhase;              v2f vert (appdata v)             {                 v2f o;                 o.pos = UnityObjectToClipPos(v.vertex);                 float3 pos_world = mul(unity_ObjectToWorld, v.vertex).xyz;                  o.pos_world = pos_world;                 o.pivot_world = mul(unity_ObjectToWorld, float4(0.0, 0.0, 0.0, 1.0)).xyz;                 o.uv = v.texcoord;                 return o;             }              fixed4 frag (v2f i) : SV_Target             {                 half3 baseColor = tex2D(_MainTex, i.uv).rgb;                  #ifdef ENABLE_FLOWLIGHT                     // 计算相对位置                     half2 uv_flow = (i.pos_world.xy - i.pivot_world.xy);                      // 将度数转换为弧度                     float rad = radians(_FlowRotationAngle);                      // 计算旋转矩阵                     float cosTheta = cos(rad);                     float sinTheta = sin(rad);                     float2x2 rotationMatrix = float2x2(cosTheta, -sinTheta, sinTheta, cosTheta);                      // 应用旋转矩阵到UV坐标                     uv_flow = mul(rotationMatrix, uv_flow);                      // 计算时间因子,包括相位调整                                          float timeFactor = _Time.y * _FlowSpeed +_FlowPhase;                                     // 计算流光效果                     float wave = sin(_FlowFrequency * uv_flow.x + timeFactor) * _FlowAmplitude;                      // 构建流光Mask                     float flowMask = smoothstep(0.5 - _FlowWidth, 0.5, 0.5 + wave) - smoothstep(0.5, 0.5 + _FlowWidth, 0.5 + wave);                      // 叠加流光颜色                     float3 final_col = baseColor + flowMask * _FlowColor.rgb;                 #else                     float3 final_col = baseColor;                 #endif                  return float4(final_col, 1.0);             }             ENDCG         }     }

UV这样算,可以保证3D模型,流光可以沿着一个方向流动

相关内容

热门资讯

玩家科普!湖南赣湘互娱辅助,新... 玩家科普!湖南赣湘互娱辅助,新道游辅助软件,机巧教程(有挂规律)1、打开软件启动之后找到中间准星的标...
总算清楚!哈糖大菠萝怎么挂,科... 总算清楚!哈糖大菠萝怎么挂,科乐天天踢有没有挂作必弊,窍要教程(有挂秘诀)科乐天天踢有没有挂作必弊是...
窍门辅助!hhpoker软件安... 窍门辅助!hhpoker软件安装包,wepoker辅助器安装包,普及教程(有挂秘诀)1、wepoke...
最新技巧!蜀山四川智能辅助插件... 最新技巧!蜀山四川智能辅助插件,哥哥打大a有辅助吗,学习教程(有挂方式)1、下载好蜀山四川智能辅助插...
妙招辅助!pokernow辅助... 妙招辅助!pokernow辅助工具,wepoker科技辅助器,开挂教程(有挂攻略)妙招辅助!poke...
发现玩家!wepoker专用辅... 发现玩家!wepoker专用辅助程序,闲逸辅助脚本,窍门教程(有挂实锤)所有人都在同一条线上,像星星...
于此同时!aa poker透视... 于此同时!aa poker透视软件,欢乐情怀开挂,妙招教程(有挂攻略)暗藏猫腻,小编详细说明欢乐情怀...
积累辅助!hhpoker有没有... 积累辅助!hhpoker有没有外挂,大菠萝辅助器,解迷教程(有挂秘籍)1、全新机制【hhpoker有...
一分钟带你了解!赣湘互娱怎么下... 一分钟带你了解!赣湘互娱怎么下载辅助,潮汕激k脚本,积累教程(真是有挂)1、赣湘互娱怎么下载辅助公共...
三分钟了解!佛手十三道辅助,来... 三分钟了解!佛手十三道辅助,来物局怎么开挂,窍门教程(果真有挂)来物局怎么开挂辅助器是一种具有地方特...