栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 游戏开发 > 其他

unity藤曼特效

其他 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

unity藤曼特效

藤曼生长

预览视图

PBR材质下的效果

显示更好看上ASE

简化版

可以乘以顶点法线向量可以实现物体的缩放,用一个UV图的权重控制不同位置缩放部分,可以形成藤曼的样子

ASE

代码 Properties
_MainTex ("Texture", 2D) = "white" {}
_Grow("Grow",Range(-1.0,1.0)) = 0.0
_Expend("Expend",Float) = 0.0
_Scale("Scale",Float) = 0.0
_GrowMin("GrowMin", Range(0,1.0)) = 0.6
_GrowMax("GrowMax", Range(0,1.5)) = 1.0
_EndMin("EndMin", Range(0,1.0)) = 0.6
_EndMax("EndMax", Range(0,1.5)) = 1.0 
appdata
struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
                float3 normal:NORMAL;
            };
vert
v2f vert (appdata v)
{
    v2f o;
    half weight = max(smoothstep( _GrowMin, _GrowMax, v.uv.y - _Grow), smoothstep(_EndMin, _EndMax,v.uv.y ));
    half3 weight_combine = weight * _Expend * 0.01f*v.normal;
    half3 scale_combine = _Scale * 0.01f * v.normal;
    half3 normal_combine = weight_combine + scale_combine;
    v.vertex.xyz = v.vertex.xyz+ normal_combine;
    o.vertex = UnityObjectToClipPos(v.vertex);
    o.uv = TRANSFORM_TEX(v.uv, _MainTex);
    return o;
}
frag
fixed4 frag(v2f i) : SV_Target
{
    clip(1 - (i.uv.y - _Grow));
    // sample the texture
    fixed4 col = tex2D(_MainTex, i.uv);
    return col;
}
总代码
Shader "Unlit/Vice1_Code"
{
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
        _Grow("Grow",Range(-1.0,1.0)) = 0.0
        _Expend("Expend",Float) = 0.0
        _Scale("Scale",Float) = 0.0
        _GrowMin("GrowMin", Range(0,1.0)) = 0.6
        _GrowMax("GrowMax", Range(0,1.5)) = 1.0
        _EndMin("EndMin", Range(0,1.0)) = 0.6
        _EndMax("EndMax", Range(0,1.5)) = 1.0 
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

        Pass
        {
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work
           

            #include "UnityCG.cginc"

            struct appdata
            {
                float4 vertex : POSITION;
                float2 uv : TEXCOORD0;
                float3 normal:NORMAL;
            };

            struct v2f
            {
                float2 uv : TEXCOORD0; 
                float4 vertex : SV_POSITION;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float _Grow;
            float _Expend;
            float _GrowMin;
            float _GrowMax;
            float _EndMin;
            float _EndMax;
            float _Scale;
            v2f vert (appdata v)
            {
                v2f o;
                half weight = max(smoothstep( _GrowMin, _GrowMax, v.uv.y - _Grow), smoothstep(_EndMin, _EndMax,v.uv.y ));
                half3 weight_combine = weight * _Expend * 0.01f*v.normal;
                half3 scale_combine = _Scale * 0.01f * v.normal;
                half3 normal_combine = weight_combine + scale_combine;
                v.vertex.xyz = v.vertex.xyz+ normal_combine;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                return o;
            }

            fixed4 frag(v2f i) : SV_Target
            {
                clip(1 - (i.uv.y - _Grow));
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                return col;
            }
            ENDCG
        }
    }
}

总结

最近有一点偷懒,更新有点慢,新年快乐,新的一年,冲冲冲;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/902396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号