【UnityShader自学日志】创建自定义着色器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_24994943/article/details/82810986

在“Asset”中,创建一个新的Standard Surface Shader,在mono或者VS中打开,将原有的代码段全部删除

加入以下代码,每行代码具体功能如下所示

Shader "PACKT/Moon" //指定了该着色器在着色器选单中的名称
{
	//着色器的属性区
	Properties 
	{
		_Color ("Color", Color) = (1,1,1,1)//设置着色器的RGBA属性
		_MainTex("Albedo (RGB)",2D) = "white"{}//基础纹理贴图,2D指定该属性是一个二维贴图
	}
	//子着色器
	SubShader 
	{
		CGPROGRAM//标志着Cg代码的开始
		#pragma surface surf Lambert//着色器编译指令,使用了Lambert光照模型

		//定义了Cg代码块的输入数据有哪些内容
		struct Input {
			float2 uv_MainTex;
		};
		
		sampler2D _MainTex;
		float4 _Color;

		//着色器将纹理贴图的颜色值和单色颜色值相乘,并作为反光值输出
		void surf(Input IN, inout SurfaceOutput o)
		{
			o.Albedo = tex2D(_MainTex, IN.uv_MainTex).rgb*_Color.rgb;
		}

		ENDCG//标志着Cg代码的结束
	}
}

新建一个Material,将其shader改为"PACKT/Moon" 

便可以在Inspector面板中修改其color属性,修改其纹理贴图

猜你喜欢

转载自blog.csdn.net/sinat_24994943/article/details/82810986