Unity Shader unity文档学习笔记(十三):怎么用shader修改unity自带的胶囊体 改成一个花瓶的形状

一年前遇到的面试题 怎么用shader修改unity自带的胶囊体 改成一个花瓶的形状
思路:干预顶点
写一个花瓶的曲线模型函数
把Y轴放入函数中 乘以XZ
sin函数类似效果

Shader "Unlit/VertexTest"
{
    SubShader
    {
        Pass
        {
            Tags { "LightMode"="ForwardBase" }
            CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag
            // make fog work

            #include "UnityCG.cginc"
            #include "Lighting.cginc"

            struct v2f
            {
                float4 pos:POSITION;
                fixed4 color:COLOR;
            };

            v2f vert(appdata_base v)
            {
                //边界波纹效果
                v.vertex.x = sin(v.vertex.y) * v.vertex.x;
                v.vertex.z = sin(v.vertex.y) * v.vertex.z;

                v2f o;
                o.pos = UnityObjectToClipPos(v.vertex);
                float3 lDir = normalize(_WorldSpaceLightPos0.xyz); //平行光
				float3 nDir = normalize(mul(v.normal,(float3x3)unity_WorldToObject));//一个点的法线
				fixed3 diffuse = _LightColor0.rgb*saturate(dot(nDir,lDir));//点乘反映着两个向量的“相似度”,两个向量越“相似”,它们的点乘越大
                o.color = fixed4(diffuse,1);
                return o;
            }

            float4 frag(v2f IN):COLOR
            {
                return IN.color;
            }
            ENDCG
        }
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43204246/article/details/117818003
今日推荐