Shader

Shader分类

Shader按管线分类一般分为固定渲染管线与可编程渲染管线
1. 固定渲染管线 这是标准的几何&光照(Transforming&Lighting)管线,功能是固定的,它控制着世界,视,投影变换及固定关照和纹理混合.T&L管线可以被渲染状态控制,矩阵,光照和采制参数.功能比较有限,基本所有的显卡都能正常运行.
2. 可编程渲染管线 对渲染管线中的顶点运算和像素运算分别进行编程处理,而无须像固定渲染管线那样套用一些固定函数,取代设置参数来控制管线.

Unity3D三种Shader对比

三种Shader共同点:
  1. 都必须从唯一一个跟Shader开始
  2. Properties参数部分,作用及用法完全相同
  3. 具体功能都在SubShader里(SubShader子shader,Shader会自上而下运行第一个硬件能支持的SubShader,主要作用是对不同硬件的支持.
  4. 都可以打标签,例如Tags{“RenderType”=”Opaque”} LOD 200 以及Lighting On等
  5. 都可以Fallback
  6. 都可以处理基本的功能,例如光照反射(Dissfuse)以及镜面反射(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|Vertex and Fragment Shader|Surface Shader|
    |Material{} 以及SetTexutre[MainTex]{}|
    的核心是
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
ENDCG
Fixed function shaderVertex and Fragment ShaderSurface Shader
Material{} SetTexutre[MainTex]{}CGPROGRAM #pragma vertex vert #pragma fragment frag #include "UnityCG.cginc" ENDCG 采用unity自带光照模型Lambert,只需要一个表面处理函数surf即可CGPROGRAM #pragma surface surf Lambert ENDCG
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值