Unity3D-----瞭解Shader

一、ShaderLab基本結構

Unity中的shader都是要通過ShaderLab的基本語法進行編寫,unity就是想通過Shaderlab的方案進行Shader的編寫。將三種定義的Shader通過一種格式進行編寫,避免不同Shader使用不同的語法
屬性中參數的命名規範:_Color,下劃線開頭字母大寫
格式如下:

Shader "name"
{
	Properties //屬性,在可視化面板提供美工可使用的屬性
	{}
	SubShaders //shader算法,shaderlab中最少有一個subshader也可以多個
	{
	pass{}//只有表面通道的shader不需要寫通道
}
	FallBack "Diffuse"//後退,一般會填寫所有硬件都支持的渲染方式
}

運行方式:當硬件不支持subshaders當中的代碼時,程序就會執行FallBack

二、基本功能的設置(固定功能管線)

1、顏色設置

Properties{
	_Color("name",Color)=(1,0,0,1)//RGBA
}

2、漫反射、環境光、高光、滑動條設置

漫反射的作用是:當燈光關閉時,物體也應當是看不見的,而不會顯示當前顏色,即必須依靠光照,將光打在物體表面反射光,我們才能看到物體。漫反射的設置需要使用到Material屬性和lighting on(啓用光照),且啓用光照的命令必須與diffuse命令配合使用。
高光:能夠使物體看起來更加的立體,高光的設置也需要啓用高光纔能有效。
環境光:影響被光面的顏色。

pass{
	Material{
		diffuse[_Color]//_Color參數值是在Properties當中設置的
		ambient[_Ambient]//環境光
		specular[_Specular]//高光反射係數
		shininess[_Shininess]//滑動條,放在誰的下方就是控制誰的
		//滾動條參數設置
		//_Shininess("Shininess",range(x,y))=n
		//自發光
		emission[_Emission]
}
	lighting on//啓用光照
	separateSpecular on//啓動高光
}

光照

3、設置紋理

Properties{
	_MainTexture("MainTexture",2d)=""{}
}
SubShaders{
	pass
	{
		setTexture[_MainTexture]
		{
	//將材質賦予物體
			combine Texture*primary double
		}
	}
}

在Unity的官方文檔中也有介紹如何編寫各種shader
官方shader編寫介紹(有案例)

三、材質凹凸效果設置

凹凸效果的設置和法線貼圖(Bumpmap)相關
法線貼圖
從圖中,我們可以看到,需要放置一個法線貼圖才能夠生效,那麼我們就將一個圖片設置爲發現貼圖放置即可,設置步驟如下
1、選中圖片,修改Texture Type類型爲Normal map類型
設置法線貼圖
2、勾選Create from Grayscale選項,並調整Bumpiness的值,該值的大小意義爲設置凹凸程度,最後點擊Apply在這裏插入圖片描述
將法線貼圖給予材質球上,那麼就可以看到效果了。
在這裏插入圖片描述在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章