unity 模型渐变消失_(Unity3D Shader)景深渐变材质球

Shader "CRLuo/DepthRamp"

{

properties

{

_N("景深渐变开始距离",range(0,100)) = 0

_R("景深渐变结束距离",range(0,100)) = 20

}

SubShader

{

Pass

{

CGPROGRAM

#pragma vertex vert

#pragma fragment frag

#include "unitycg.cginc"

#pragma target 3.0

float _N;

float _R;

struct v2f

{

float4 pos:SV_POSITION;

float4 wordPos:TEXCOORD0;

};

v2f vert (appdata_base v)

{

v2f o;

//模型空间转换到裁剪空间

o.pos = UnityObjectToClipPos(v.vertex);

//模型空间转换为世界空间

o.wordPos = mul(unity_ObjectToWorld,v.vertex);

return o;

};

fixed4 frag (v2f IN) : COLOR

{

//摄像机到物体点的距离

float D = length(IN.wordPos.xyz - _WorldSpaceCameraPos.xyz);

//反转距离,约束到小于1

D = (_R - D+_N)/ _R;

//约束到1~0范围内

D = saturate(D);

//输出颜色数据

return float4(D, D, D, 1);

};

ENDCG

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用一个透明度渐变Shader来实现模型渐变消失效果。我们可以使用Shader中的_Alpha属性来控制模型的透明度,然后通过在材质中设置透明度渐变的参数来实现渐变消失效果。 以下是一个简单的透明度渐变Shader代码示例: ```shader Shader "Custom/TransparentFade" { Properties { _MainTex ("Texture", 2D) = "white" {} _Color ("Color", Color) = (1,1,1,1) _FadeStart ("Fade Start", Range(0,1)) = 0.5 _FadeEnd ("Fade End", Range(0,1)) = 1.0 } SubShader { Tags {"Queue"="Transparent" "RenderType"="Opaque"} LOD 100 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _Color; float _FadeStart; float _FadeEnd; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = v.uv; return o; } fixed4 frag (v2f i) : SV_Target { float alpha = 1.0 - saturate((length(i.uv - 0.5) - _FadeStart) / (_FadeEnd - _FadeStart)); fixed4 col = tex2D(_MainTex, i.uv) * _Color; col.a *= alpha; return col; } ENDCG } } } ``` 在这个Shader中,我们添加了两个渐变参数_FadeStart和_FadeEnd,它们分别表示渐变开始和结束的位置(0-1之间的值)。在顶点着色器中,我们使用UnityObjectToClipPos将顶点位置从对象空间转换为裁剪空间,并在片段着色器中计算模型的透明度。我们使用saturate函数将渐变参数限制在0-1的范围内,并将其应用于alpha值。最后,我们将alpha值乘以颜色值的透明度并返回结果。 要将此Shader应用于模型,请创建一个新材质,将该Shader分配给材质,并使用材质属性面板中的_FadeStart和_FadeEnd参数来控制渐变消失的位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值