Unity3D之Shader:Shader介绍
来源:互联网 发布:sql数据库恢复挂起 编辑:程序博客网 时间:2024/03/29 02:08
啰嗦一下:
好多使用Unity3D做游戏的朋友都不知道Shader是什么,这很正常,大部分人还在使用Unity3D做2D游戏呢,习惯就好。
更多精彩请关注【狗刨学习网】
在Unity3D里,所有的图形绘制都必须通过Shader,中文名字:着色器。一般在使用过程中,我们大部分用到的都是Unity3D本身自带的Shader,就是build-in shader。
那么Shader能干什么?Shader可以增强游戏的画面表现能力。比如:水中的倒影等。
Shader的分类
Shader按照管线分类一般分为固定渲染管线与可编程渲染管线
1.固定渲染管线:这是标准的几何&光照(Transforming&Lighting)管线,功能是固定的,它控制着世界、视、投影变换及固定光照控 制和纹理混合。T&L管线可以被渲染状态控制,矩阵,光照和采制参数。功能比较有限。基本所有的显卡都能正常运行。
2.可编程渲染管线:对渲染管线中的顶点运算和像素运算分别进行编程处理,而无须象固定渲染管线那样套用一些固定函数,取代设置参数来控制管线。
Unity3D的三种Shader
1.Fixed function shader 属于固定渲染管线 Shader, 基本用于高级Shader在老显卡无法显示时的Fallback。使用的是ShaderLab语言。
2.Vertex and Fragment Shader 最强大的Shader类型,属于可编程渲染管线. 使用的是CG/HLSL语法。
3.Surface Shader Unity3d推崇的Shader类型,使用Unity3D预制的光照模型来进行光照运算。使用的也是CG/HLSL语法。
Unity3d三种Shader对比
三种Shader共同点:
1.都必须从唯一一个根Shader开始
2.Properties参数部分,作用及语法完全相同
3.具体功能都在SubShader里(Subshader: 子Shader,Shader会自上而下运行第一个硬件能支持的Subshader,主要作用是对不用硬件的支持。)
4.都可以打标签,例如Tags { "RenderType" = "Opaque" } LOD 200 以及Lighting On等
5.都可以Fallback
6.都可以处理基本的功能,例如光照漫反射(Diffuse)以及镜面反射(Specular)。但是Vertex and Fragment和Surface都能实现Fixed function实现不了的高级功能,例如基于uv计算的效果等等。
三种Shader不同点:
1.Fixed function shader以及Vertex and Fragment Shader在subshader下面还有pass{},但是Surface Shader,由于已经将具体内容打包在光照模型了,不能加pass{},加了会报错。
2.Fixed function shader每句代码之后没有分号';' 但是V&F shader以及Surface shader每句代码之后都必须加分号';'
3.核心结构不同:
Fixed function shader的核心是 Material{} 以及 SetTexture[_MainTex]{}
Vertex and Fragment Shader的核心是
- CGPROGRAM
- #pragma vertex vert
- #pragma fragment frag
- #include "UnityCG.cginc"
- ENDCG
Surface Shader的核心是
1.这套用的是Unity3d自带光照模型Lambert,也不做顶点处理,那么只需要一个表面处理函数surf即可CGPROGRAM
#pragma surface surf LambertENDCG
或者2.这套表示使用的是自己写的光照模型lsyLightModel,并且使用了顶点处理函数vert
CGPROGRAM
// surface 表面处理函数 光照模型函数 顶点处理:函数
#pragma surface surf lsyLightModel vertex:vert
//执行顺序 顶点处理函数 -> 表面处理函数 -> 光照模型函数 ->颜色值
ENDCG
0 0
- Unity3D之Shader:Shader介绍
- 详解Unity3D Shader开发之Shader框架
- 详解Unity3D Shader之Shader Lab框架
- unity3d shader之浮雕效果
- Unity3d Shader
- unity3d shader
- Unity3D shader
- Unity3D Shader
- Unity3D -- Shader
- Unity3D: Shader
- Unity3D Shader
- Unity3D中关于Shader的简单介绍
- Unity3D教程之Shader篇:第一讲Shader总篇
- Shader学习笔录--Unity3D教程宝典之Shader篇 基本知识
- Unity3d shader之SWAP Force Depth-of-Field Shader
- [Unity3D]Shader学习笔记之Shader与DrawCall
- Unity3D Shader之路 VS2015下Graphics Debugger调试Shader
- Unity3D Shader之路 Shader错误、解决方法和重要内容汇总
- Unity3D游戏开发之仿仙剑奇侠传角色控制效果
- 24天学会设计模式------状态模式
- Unity3D角色阴影制作
- 利用apache-tomcat和花生壳在自己电脑上搭建服务器
- linux学习推荐
- Unity3D之Shader:Shader介绍
- 判断app是否运行于前台的两个方法
- Unity3D ShaderLab 静态贴图光照模型
- Unity中使用脚本LineRenderer(现行渲染器)画圆
- unity3d 摄像机跟随角色时被物体遮挡解决方案
- HTML全局属性
- 那些年我们一起追过的缓存写法(二)
- VC使用libcurl模拟登录CSDN并自动评论资源以获取积分
- NGUI之UIGrid