当前位置:网站首页>unity 扫描圈 圆扩展方法
unity 扫描圈 圆扩展方法
2022-06-30 05:17:00 【小生云木】
unity 扫描圈 圆扩展方法
完整shader代码
Shader "SongShaderDemo/RadiationCircle"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {
}
_CentorPoint("CentrePoint",Vector)= (0, 0, 0, 0)
_Dis("Float", Float) = 30//最大距离
_Range("Range", Range(0, 1.0)) = 0.01//移动范围
_LineWide("LineWide", Range(0, 1)) = 0.001//线宽
_Color("color",Color) = (1,1,1,1) //颜色,一般用fixed4
_TransColor("TransColor",Color) = (1,1,1,0) //颜色,一般用fixed4
_FillTex("FillTexture", 2D) = "white" {
}
_FillColor("FillColor",Color) = (1,1,1,1) //颜色,一般用fixed4
}
SubShader
{
Tags {
"RenderType" = "Transparent" "IgnoreProjector" = "True" "Queue" = "Transparent" }
LOD 100
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv0 : TEXCOORD0;
float2 uv : TEXCOORD2;
float4 vertex : SV_POSITION;
float3 worldPos : TEXCOORD3;
};
CBUFFER_START(UnityPerMaterial)
sampler2D _MainTex;
float4 _MainTex_ST;
sampler2D _FillTex;
fixed4 _FillColor;
float4 _FillTex_ST;
float4 _CentorPoint;
float _Dis;
float _Range;
float _LineWide;
fixed4 _Color;
fixed4 _TransColor;
CBUFFER_END
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _FillTex);
o.uv0 = TRANSFORM_TEX(v.uv, _MainTex);
o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
fixed4 col = tex2D(_MainTex, i.uv0);
float dis = distance(i.worldPos, _CentorPoint.xyz);
float rangeMax = _Dis * _Range ;
float rangeMin = (_Dis)*_Range - _LineWide;
fixed4 Circle= _TransColor;
fixed4 FillCol = _TransColor;
if (dis> rangeMin&&dis< rangeMax)
{
Circle= fixed4(_Color.xyz, ((dis - rangeMin) / _LineWide)*(1 - _Range));
}
if (dis < rangeMin)
{
fixed4 FillTex = tex2D(_FillTex, i.uv);
if (FillTex.w!=0)
{
FillCol = fixed4(FillTex.xyz, (1 - _Range)) + _FillColor;
}
else
{
FillCol = FillTex + _FillColor;
}
}
fixed4 all = Circle + FillCol;
return all*all.w+ col*(1- all.w);
}
ENDCG
}
}
}
边栏推荐
- VFPBS在IIS下调用EXCEL遇到的Access is denied
- Unity ugui text value suspended enlarged display add text background
- Nestjs中控制器和路由的配置使用
- Intellj idea generates jar packages for projects containing external lib to other projects. The method refers to the jar package written by itself
- OpenGL draws model on QT platform to solve the problem of initializing VAO and VBO
- Unity project hosting platform plasticscm (learn to use 1)
- How does unity use mapbox to implement real maps in games?
- 中文版PyCharm改为英文版PyCharm
- How to install win7 on AMD Ruilong CPU A320 series motherboard
- Unity + hololens publishing settings
猜你喜欢

The minecraft server address cannot be refreshed.

Pytorch的安装以及入门使用

Database base (Study & review for self use)

ParticleSystem in the official Manual of unity_ Collision module

VFPBS上传EXCEL并保存MSSQL到数据库中

【VCS+Verdi联合仿真】~ 以计数器为例

Unity project hosting platform plasticscm (learn to use 2)

Ripple effect of mouse click (unity & shader)

Unity packaging and publishing webgl error reason exception: failed building webgl player

Unity/ue reads OPC UA and OPC Da data (UE4)
随机推荐
中文版PyCharm改为英文版PyCharm
Important knowledge points in unity3d
The difference between SVG and canvas
Revit二次開發---未打開項目使用面板功能
虚析构和纯虚析构
Initial environment configuration of the list of OpenGL super classic (version 7) vs2019
Pytorch的安装以及入门使用
Operation file file class method
GoLand No Tests Were Run : 不能使用 fmt.Printf() &lt;BUG&gt;
很紧张,第一天做软件测试,需要做什么?
Unity mobile end sliding screen rotation
Sourcetree usage
Log writing specification
How does unity use mapbox to implement real maps in games?
Unit asynchronous jump progress
Exploration of unity webgl
Configuration and use of controllers and routes in nestjs
Unity3d- use animator and code to control task walking
Responsive layout
Unity3d realizes Google Digital Earth
