一、介绍
fixed function shader(固定渲染管线shader),是相对于可编程的shader而言的。
所谓固定管线,是说芯片上一组电路已经固定实现了特定的运算功能,程序能做的只是提供场景数据以及微调运算功能的参数。
它适用于所有的显卡,常用于高级Shader在老显卡无法显示时的Fallback。
Unity中的固定管线shader使用ShaderLab语言。
固定渲染的整个渲染过程就好像是在流水线上的每一道工序上面都有几个可选的开关,想实现不同的效果,花式扳开关就好了。
它的灯光公式、贴图方式等是固定的,不能自定义的修改,我们只能控制功能的开和关
二、结构
unity shader通用结构
//shader的名字会显示在unity的inspector中选择shader的菜单里面
Shader "Shader的路径和名称"{
//属性
[Properties]
//可能存在多个subshader。Unity会在所有的subshader列表中选中第一个硬件可以支持的subshader
SubShader{
//SubShader的标签
//[Tags]
//给该SubShader中所有pass公用的设置
//[Common State]
[Common Tags]
//可能存在多个pass,每个pass都会引起一次渲染
Pass{
//该Pass的标签
[Tags]
//渲染设置,如颜色混合
[Render Setup]
//纹理设置,只有在fixed function shader中才可用
[Texture Setup]
}
//可以有其他的Pass
[其他的Pass]
}
//可以有多个SubShader
[其他的SubShader]
//当所有的subshader失败时,使用Fallback指定的shader
[Fallback]
//当有自定义shader的设置UI时候用
[CustomEditor]
}
一个Pass表示一个渲染管线,当存在多个Pass时,即在前一Pass结束后,依据得到的缓存数据和状态开始下一个Pass管线,直到所有Pass管线渲染结束