unity3d 模型从上到下出现(shader)

15 篇文章 1 订阅

unity3d 模型从上到下出现(shader)

原文

unity游侠:https://blog.csdn.net/y90o08u28/article/details/87970754
ThreePointsHeat:https://blog.csdn.net/ThreePointsHeat/article/details/108281515

前言

最近项目中涉及到一个需要模型从上往下一点点出现的仿真,参考了上面两位大佬的,自己也整理记录一下。

效果如图

在这里插入图片描述在这里插入图片描述

Shader代码

注:如图有一圈红色,若是想去掉红色那圈跟白色部分保持一致,则修改下面这一句中的前三个值。前三个值为颜色,白色的RGB值为(255,255,255),转化过来:(255/255,255/255,255/255) => (1,1,1),所以把下面这句前面改为(1,1,1),其他保持不变即可;

改前: col = float4(1, 0, 0, (0.05 - diss)/ 0.05);
改后: col = float4(1, 1, 1, (0.05 - diss)/ 0.05);

eg:RGB颜色值为(70,84,255)
70/255 约等于 0.27,84/255 约等于 0.33,255/255=1;所以为(0.27,0.33,1);
col = float4(0.27, 0.33, 1, (0.05 -diss)/ 0.05);
以此类推

Shader "Unlit/EffectShow"
{
	Properties
    {
        _MainTex("Texture", 2D) = "white" {}
        _Show ("Show", float) = 0
    }
    SubShader
    {
        Tags { "RenderType"="Opaque" }
        LOD 100

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

            #include "UnityCG.cginc"

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

            struct v2f
            {
                float2 uv : TEXCOORD0;
                UNITY_FOG_COORDS(1)
                float4 vertex : SV_POSITION;
                float3 worldPos:TEXCOORD2;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;
            float _Show;

            v2f vert (appdata v)
            {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                o.uv = TRANSFORM_TEX(v.uv, _MainTex);
                o.worldPos = mul(unity_ObjectToWorld, v.vertex);
                UNITY_TRANSFER_FOG(o,o.vertex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target
            {
                // sample the texture
                fixed4 col = tex2D(_MainTex, i.uv);
                // apply fog
                UNITY_APPLY_FOG(i.fogCoord, col);
                
				//这一句是从上到下,若是从下到上,可改为:_show-i.worldPos.y
				//若是进行左右渐隐,则可把i.worldPos.y改为i.worldPos.x,前后则改为i.worldPos.z。
				//每个轴的两个方向,可通过改变diss的正负值来实现。
                float diss =  i.worldPos.y - _Show;
                if (diss >= 0 && diss <= 0.05)
                {
                    col = float4(1, 0, 0, (0.05 - diss)/ 0.05);
                }
                else {
                    clip(diss);
                }
                
                return col;
            }
            ENDCG
        }
    }
}

调节

可以通过手动改变show的值看到效果,两个物体加在一起也可以(如下图),下面附上代码调节show的值。
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class UpDOwnShader : MonoBehaviour {

    private Material mat;
    private float timer = 0;
    float num = 0.5f;
    
    void Start()
    {
        mat = transform.GetComponent<MeshRenderer>().material;
    }
    void Update()
    {
        timer += Time.deltaTime;
        if (timer >= 0.1f)
        {
            num -= 0.01f;
            if (num < -0.5f)
                return;

            mat.SetFloat("_Show", num);
            timer = 0;
        }
    }
    public void InitMat()
    {
        num = 0.5f;
        mat.SetFloat("_Show", num);
    }
}

END

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: Unity3D是一款非常流行的游戏开发引擎,它提供了丰富的功能和工具,使开发人员能够轻松创建各种类型的游戏。其中一个强大的功能就是模型描边shader,它可以增强游戏中的视觉效果。 模型描边shader是一种特殊的着色器程序,用于给游戏中的3D模型添加轮廓线。通过描边shader,我们可以让模型的边缘线条更加清晰、醒目,让物体在场景中更加凸显出来。 使用Unity3D模型描边shader非常方便。首先,我们需要将描边shader应用于相应的材质上。然后,通过调整一些参数,如描边宽度、颜色等,可以实现不同的效果。在游戏运行时,模型的边缘线条就会被自动描绘出来,使得物体在场景中更加鲜明。 这个功能对于游戏开发人员来说非常实用。通过使用模型描边shader,我们可以增强游戏中物体的可视性,使它们在复杂的环境中更容易被玩家注意到。而且,模型描边shader还可以用于创建一些特殊效果,如描边发光等,让游戏更加生动有趣。 总的来说,Unity3D模型描边shader是一个非常方便实用的功能。它提供了丰富的定制选项,使开发人员能够轻松地改善游戏的视觉效果。无论是用于增强物体的可视性,还是为游戏添加特殊效果,模型描边shader都是一个非常有用的工具,可以使游戏更加出色。 ### 回答2: Unity3D模型描边Shader是一种非常方便实用且强大的技术。该Shader能够为模型的边缘添加一个特殊的描边效果,从而使模型在视觉上更加突出和立体。 使用Unity3D模型描边Shader非常方便。开发者只需将该Shader应用于目标模型的材质中,然后调整描边效果的参数即可。这些参数包括描边的颜色、宽度、锐度等。通过简单的参数调整,开发者可以获得不同效果的描边效果。 此外,Unity3D模型描边Shader还具有强大的功能。开发者可以根据需要自定义描边的样式,如添加渐变效果、使用图片纹理等。这样,描边效果不再局限于简单的线条,而是可以根据需求进行更加丰富多样的设计。 使用Unity3D模型描边Shader可以带来许多好处。首先,它能够增强模型的可视性,使其在游戏或应用中更加突出。其次,描边效果能够帮助玩家或用户更好地理解模型的形状和结构。再次,通过调整描边的参数,开发者可以在远近不同的场景中实现不同的效果,提升用户体验。 总之,Unity3D模型描边Shader是一种非常方便实用且强大的技术。它不仅能够为模型增加视觉效果,还能够提升用户体验,使游戏或应用的视觉呈现更加出色和吸引人。 ### 回答3: Unity3D模型描边Shader是一种非常方便实用且强大的功能。这个Shader可以在模型的边缘添加一条描边效果,使得模型在场景中更加突出和鲜明。 使用Unity3D模型描边Shader非常简单。首先,我们需要在Unity中创建一个材质,并将该材质的Shader类型设置为描边Shader。接下来,我们可以调整描边的颜色、宽度和透明度等属性,以满足我们的需求。 当我们将这个材质应用到模型上时,模型的边缘将自动显示出描边效果。不仅如此,Unity还提供了一些额外的功能,如控制描边的深度和三维感以及添加高光效果等。 使用Unity3D模型描边Shader的好处不仅仅是增加模型的视觉效果,它还可以提高游戏的性能。相较于其他方法,使用Shader进行描边可以在不增加更多几何体或复制模型的情况下实现,从而减少显卡的负载。 此外,Unity3D模型描边Shader还可以很容易地与其他特效和Shader进行结合。我们可以通过修改Shader代码来实现更多的效果,如闪烁、动态描边和不同颜色的描边等。这使得我们可以根据具体的游戏需求来定制和优化描边效果。 综上所述,Unity3D模型描边Shader是一项非常方便实用且强大的功能。它可以轻松地为模型添加描边效果,提高游戏的视觉效果和性能。无论是开发者还是玩家,都可以从中受益并创造出更加出色的游戏作品。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值