三种着色器
shader 基本结构
大家先来看一个简陋的shader
Shader "Oscar/1"
{
Properties
{
_Color("颜色",color)=(1,0,0,0)//自定义属性名称-自定义名称-属性类型
}
//一个shader中必须有一个以上subshader,显卡会依次读取,能执行时便执行
SubShader
{
pass{
// color[_Color] //可自定义
// color(1,0,0,1) //固定
}
}
FallBack "Diffuse"//如果所有subshader均不能被执行,则回滚到系统内建的shader
}
可以看出shader 由三大基本结构组成
Properties
用于将shader的各种参数提供到外部进行调试
SubShader
此为shader的基本作用单位,用于实现功能
CallBack
系统内建shader种类
Unlit:不发光,只是纹理
VertexLit:顶点光照
Diffuse:漫反射
Normal mapped:法线贴图,比漫反射昂贵
Specular:高光
Normal Mapped Specular:高光法线贴图,比高光昂贵
Parallax Normal mapped:视差法线贴图
Parallax Normal Mapped Specular:视差高光法线贴图
此为当显卡不支持过高的shader渲染会采用的shader,有点像c#里的try catch
surface shader
1.被unity推荐和鼓励的shader,被unity引擎封装过一次,如下代码
Shader "Oscar/3"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
_MainTex ("Albedo (RGB)", 2D) = "white" {
}
_Glossiness ("Smoothness", Range(0,1)) =