Unity Shader案例01--------物体压缩放大
使用Unity2021
1.基本需要场地Plane+物体Sphere+材质Materal+渲染Shader

2.渲染Shader-------压缩放大渲染设置代码
Shader "CLF/SetZoom"
{
Properties
{
// 通常所有属性名都以下划线字符开头
//Texture 2D == 贴图
_MainTex("Texture", 2D) = "white" {}
//压扁系数
_Value_X("flasher Value-X",Range(0, 1)) = 0
_Value_Y("flasher Value-Y",Range(0, 1)) = 0
_Value_Z("flasher Value-Z",Range(0, 1)) = 0
}
SubShader
{
Tags { "RenderType" = "Opaque" }
LOD 100
Pass
{
CGPROGRAM
// 声明顶点着色器
#pragma vertex vert
// 声明像素着色器
#pragma fragment frag
// 使雾生效
#pragma multi_compile_fog
// 引用CG的核心代码库
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
UNITY_FOG_COORDS(1)
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float _Value_Y;
float _Value_Z;
float _Value_X;
// 定义顶点着色器函数 函数名要与声明顶点着色器名称相同
v2f vert(appdata v)
{
v2f o;
//顶点坐标控制 x、y、z
v.vertex.xyz *= clamp(_Value_X, _Value_Y, _Value_Z);
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag(v2f i) : SV_Target
{
// 采样2D纹理贴图
fixed4 col = tex2D(_MainTex, i.uv);
// 应用雾
UNITY_APPLY_FOG(i.fogCoord, col);
// 返回经过处理后的最终色彩
return col;
}
ENDCG
}
}
}
注意:先将材质上面shader选择为我们刚才新建的shader-----CLF/SetZoom,再将材质添加到物体下


操作界面



浙公网安备 33010602011771号