在表面着色器中使用属性

作者:追风剑情 发布于:2015-6-26 21:45 分类:Shader

//一个漫反射Shader

Shader "Custom/BasicDiffuse1" {
	Properties {
		_EmissiveColor ("Emissive Color", Color) = (1, 1, 1, 1)
		_AmbientColor ("Ambient Color", Color) = (1, 1, 1, 1)
		_MySliderValue ("this is a Slider", Range(0, 10)) = 2.5
		
	}
	SubShader {
		Tags { "RenderType"="Opaque" }
		LOD 200
		
		CGPROGRAM
		#pragma surface surf Lambert
		
		//在这里创建与属性同名的变量,Unity会自动将二者关联起来,它们拥有同样的数据。
		//当你在SubShader里创建好变量后,就可以在surf()函数里使用它们了。
		float4 _EmissiveColor;
		float4 _AmbientColor;
		float _MySliderValue;

		struct Input {
			float2 uv_MainTex;
		};

		void surf (Input IN, inout SurfaceOutput o) {
			float4 c;
			//pow()函数参阅官方在线文档
			//http://http.developer.nvidia.com/CgTutorial/cg_tutorial_appendix_e.html
			c = pow((_EmissiveColor + _AmbientColor), _MySliderValue);
			o.Albedo = c.rgb;
			o.Alpha = c.a;
		}
		ENDCG
	} 
	FallBack "Diffuse"
}


1.png

2.png

标签: Shader

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号