首页 > 编程语言 > 详细

Unity Shader编程(1)漫反射着色

时间:2015-09-26 07:03:26      阅读:281      评论:0      收藏:0      [点我收藏+]

Unity Shader编程(1)漫反射着色

在Unity中创建如下工程:

技术分享

我们把Shader拖到Material上。Meterial拖到Cube上。这就完成了一个着色器的着色过程。

Shader "Custom/Shader" {
	Properties {
		_MainTex ("Base (RGB)", 2D) = "white" {}
	}
	SubShader {
		Tags { "RenderType"="Opaque" }
		LOD 200
		
		CGPROGRAM
		#pragma surface surf Lambert

		sampler2D _MainTex;

		struct Input {
			float2 uv_MainTex;
		};

		void surf (Input IN, inout SurfaceOutput o) {
			half4 c = tex2D (_MainTex, IN.uv_MainTex);
			o.Albedo = c.rgb;
			o.Alpha = c.a;
		}
		ENDCG
	} 
	FallBack "Diffuse"
}

Shader.shader代码如上。

我们修改第一行代码为:
Shader "husheng/BasicDiffuse"

技术分享
效果图:
技术分享

我们选中Shader.shader。可以看到:
技术分享

我们在代码的Properties定义的一栏。

我们把代码更改如下:

Shader "husheng/BasicDiffuse" 
{
	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 BasicDiffuse

		float4 _EmissiveColor;
		float4 _AmbientColor;
		float _MySliderValue;
		
		inline float4 LightingBasicDiffuse (SurfaceOutput s, fixed3 lightDir, fixed atten)
		{
			float difLight = max(0, dot (s.Normal, lightDir));
			
			float4 col;
			col.rgb = s.Albedo * _LightColor0.rgb * (difLight * atten * 2);
			col.a = s.Alpha;
			return col;
		}

		struct Input 
		{
			float2 uv_MainTex;
		};

		void surf (Input IN, inout SurfaceOutput o) 
		{
			float4 c;
			c =  pow((_EmissiveColor + _AmbientColor), _MySliderValue);
			
			o.Albedo = c.rgb;
			o.Alpha = c.a;
		}
		
		ENDCG
	} 
	
	FallBack "Diffuse"
}

这就创建了一个新属性。创建了任何着色器都需要使用的一个漫反射组件。

Shader好难啊。

==================================================================================
结束。
技术分享

版权声明:本文为博主原创文章,未经博主允许,随便转载。

Unity Shader编程(1)漫反射着色

原文:http://blog.csdn.net/husheng0/article/details/48747029

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!