UnityShader 1 基础 学习分享笔记

创建Shader

 ShaderLab Text 分析:


//Shader 目录/名称
Shader "Unlit/NewUnlitShader"
{
	//Shader 界面变量
	Properties
	{
		_MainTex ("Texture", 2D) = "white" {}
	}

	//shader 材质球 可以多个 对应不同平台
	SubShader
	{
		//标签 渲染模式 次序
		Tags { "RenderType"="Opaque" }
		
		//双面 //叠加模式
		LOD 100

		//一次渲染
		Pass
		{
			//CG 程序块
			CGPROGRAM

			//定义结构
			//定义顶点片段程序(改模型) 自定义函数名 vert
			#pragma vertex vert

			//定义表面渲染程序段 (改颜色) 自定义 表面函数
			#pragma fragment frag
			
			//环境雾程序集
			#pragma multi_compile_fog
			
			//CG 函数程序合集
			#include "UnityCG.cginc"

			//模型源数据
			struct appdata
			{
				float4 vertex : POSITION;  //顶点坐标
				float2 uv : TEXCOORD0;   //UV 坐标
			};
			
			//定义顶点片段数据结构
			struct v2f
			{
				float2 uv : TEXCOORD0; //输出修改后的UV
				UNITY_FOG_COORDS(1)  //输出环境雾
				float4 vertex : SV_POSITION; //输出修改后的顶点
			};
			
			//变量名定义

			// 获取变量
			sampler2D _MainTex;  //颜色贴图
			float4 _MainTex_ST;  //贴图重复与偏移
			

			//顶点程序块
			v2f vert (appdata v)
			{
				v2f o; //初始化输出变量
				o.vertex = UnityObjectToClipPos(v.vertex); //物体顶点转载切空间
				o.uv = TRANSFORM_TEX(v.uv, _MainTex); //默认UV进行重复与偏移修改
				UNITY_TRANSFER_FOG(o,o.vertex); //输出环境雾颜色
				return o; //输出结果
			}
			
			//表面程序块
			fixed4 frag (v2f i) : SV_Target
			{
				//设置输出颜色=获取贴图,依据修改后的UV 坐标
				fixed4 col = tex2D(_MainTex, i.uv);
				
				// 给颜色添加雾
				UNITY_APPLY_FOG(i.fogCoord, col);
				//输出颜色
				return col;
			}
			ENDCG
		}
	}
	//当以上全部失效时,备用材质球
	FallBack "Diffuse"
}

新建材质球可以看到刚才创建的shader

 

图文说明:

如果把写Shader比作陶艺应该是这样:

猜你喜欢

转载自blog.csdn.net/qq_39741605/article/details/123506200