整体上,性能由高到低:

  1. Unlit,仅为纹理,光线不产生效果
  2. VertexLit
  3. Diffuse  漫反射
  4. Normal Mapped 法线贴图
  5. Specular 高光
  6. Normal Mapped Specular
  7. Parallax Normal Mapped
  8. Parallax Normal Mapped Specular

另外,unity3d还内置有一些简化的用作移动平台的shader/着色器。

推荐文章内置shader详解(带图)

Shader性能影响因素:

着色器性能影响因素较多,最主要有二:

  • shader本身
  • Rendering Paths  (渲染路径?)

性能最优的两款 内置着色器:

  • Deffered shader
  • Vertex Lit

仅做绘制一次,性能只取决于纹理数。

在Forward rendering path:

性能仅取决于shader本身和场景中光源。

  • Pixel Lit   性能更差,效果更好,多次绘制,故能实现(阴影,法线,高光等)
  • Vertex Lit 性能更佳,所有灯光影响仅绘制一次

对内置Shader的通俗理解(转):

1.Vertex-Lit:
基于:  基于顶点计算的光照模型
正方体: 【直接照射到的地方不会非常亮】【光照照射不到的平面无效果】
圆形: 
 【直接照射到的地方非常亮】【光照照射不到的地方有高光效果】
支持:  设备自动选择【可编程管线】和【固定管线】
参数:  【主色color】【SpecColor光照颜色】【EmissiveColor自发光颜色】【Shininess光照强度】

渲染代价: 比较小

2.Diffuse:
基于:  基于简单的光照模型 lambertian
正方体: 【直接照射到的地方会非常亮】【光照照摄不到的平面无效果】
圆形: 
 【直接照射到的地方非常亮】【光照照射不到的地方无效果】
支持:  设备需要支持【可编程管线】如果不支持将自动使用【Vertex-Lit】

参数:  【主色color】
渲染代价: 比较小

3.Specular
基于:  和Diffuse相同的光照模型,多了一个观察角度相关的反射高光(#pragma
surface surf BlinnPhong)
正方形: 【直接照射到的地方会非常亮】【光照照摄不到的平面无效果】【观察角度和光入射角度会产生反射光】

圆形:  【直接照射到的地方非常亮】【光照照射不到的地方无效果】【观察角度和光入射角度会产生反射光】

支持:  设备需要支持【可编程管线】如果不支持将自动使用【Vertex-Lit】

参数:  【主色color】【SpecularColor反射光照颜色】【Shininess反射光照强度】

渲染代价: 比较大

4.Bumped Diffuse
基于:  和Diffuse相同的光照模型,同时使用了法线贴图normal
mapping技术(UnpackNormal)【灰度图,白色表示凹起,黑色表示凹进】
正方形: 和【Diffuse】一样,【多了凹凸感】
圆形:  和【Diffuse】一样,【多了凹凸感】
支持:  如果设备不支持,将自动使用【Diffuse】
参数:  【主色color】【多了法线贴图】
渲染代价: 比较大

5.Bumped Specular 凹凸反射
【Bumped Diffuse】与【Specular】的合并
支持:  如果设备不支持,将使用【Specular】

6.Parallax Diffuse
基于:  和Bumped
Diffuse一样的光照模型lambertian,也使用normal
mapping技术(UnpackNormal),同时使用HeightMap(ParallaxOffset)实

现更加逼真的凹凸感【高度图在法线贴图的alpha通道保存,全黑表示么有高度,白色表示高低】
支持:  设备无法使用,会自动使用【Bumped
Diffuse】
参数:  【主色color】【多了法线贴图】【多了高度贴图】【height设置高度参数】

渲染代价: 比【Bumped Diffuse】更大

7.Parallax Specular
基于:  使用【Bumped
Specular】+【高度图】
支持:  设备无法使用,会自动使用【Bumped
Specular】

8.Decal  【贴花】
基于:  与Diffuse一样基于Lambert,增加第二张贴图,然后融合色彩(lerp)覆盖在主纹理之上【注:DiffusDetail的融合是rgb*rgb】

支持:  设备需要支持【可编程管线】如果不支持将自动使用【Vertex-Lit】

参数:  【主色color】【两张贴图】

9.Diffuse Detail 【细节贴图】
基于:  与Diffuse一样基于Lambert,多了一张贴图与之融合(rgb*rgb),一般用于地形,摄像机拉近时额外的细节会出现。

说明:       
 Detail 纹理是覆盖在主纹理上面的。Detail
纹理中深色的部分将会使得主纹理变深,而淡色的部分将会使主纹理变亮, Detail 纹

理通常是浅灰色。(与Decal 里面 Decal 纹理不同的是,Decal 纹理是
RGBA,通过 alpha 控制 DecalTexture 与 Main Texture 的融合,而
Detail

的纹理是 RGB,直接是两张纹理的rgb 通道分别相乘再*2,就是说,Detail
纹理中颜色数值 = 0.5 不会改变主纹理颜色,>0.5 会变亮,<0.5 加深)

参考

参考文章 shader实例(五)如何在unity中更好的运用shader

参考文档 Usage and Performance of Built-in Shaders

Unity3D Shader性能排行的更多相关文章

  1. 【译】Unity3D Shader 新手教程(1/6)

    本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D ...

  2. Unity3D shader简介

    Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易.毫无疑问,shader(着色器)编码,仍有很长的路要走.shader是一个专门运行在GPU的程序,经常被神秘包 ...

  3. 【浅墨Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法&amp;颜色、光照与材质

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨)  ...

  4. 【淡墨Unity3D Shader计划】四 热带雨林的文章: 排除、深度测试、Alpha测试和基本雾编译

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1222/163.html 作者:毛星云 ...

  5. 移动平台Unity3D 应用性能优化

    WeTest 导读 做了大概半年多VR应用了,VR由于双眼double渲染的原因,对性能的优化要求比较高,在项目的进展过程中,总结了一些关于移动平台上Unity3D的性能优化经验,供分享. 一.移动平 ...

  6. 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 &amp; 纹理混合

    本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1117/120.html 作者:毛星云 ...

  7. Unity3D - 图形性能优化:优化着色器载入时间

    Unity官方文档之"图形性能优化-优化着色器载入时间"的翻译,E文链接. Optimizing Shader Load Time 优化着色器载入时间 Shaders are sm ...

  8. 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 & 第一个Shader的书写

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨)  ...

  9. 转 猫都能学会的Unity3D Shader入门指南(二)

    猫都能学会的Unity3D Shader入门指南(二) 关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己 ...

随机推荐

  1. 【转】Subversion快速入门教程-动画演示

    如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问题,与CVS相比,Subversion有更多的选择,也更加的容易,几个命令就可以建立一套服务器环境,可以使用起来,这里配 ...

  2. js中将字符串转为JSON的三种方式

    1.eval方式解析,恐怕这是最早的解析方式了.如下: function strToJson(str){ var json = eval('(' + str + ')'); return json; ...

  3. hdu 2897 邂逅明下 (简单巴什博弈)

    题目链接 邂逅明下 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  4. HierarchyId通过父节点创建一个新的子节点

    --HierarchyId通过父节点创建一个新的子节点 CREATE TABLE #temp( node HierarchyID ); insert into #temp select '/' uni ...

  5. kolla base目录下Dockerfile.j2分析

    这几天在研究kolla制作镜像的流程,记录下对kolla项目中base目录Dockerfile.j2阅读过程.本质上base目录下的Dockerfile.j2文件,对是yum 源的一些配置,从而使制作 ...

  6. 【WIP】客户端JavaScript 事件处理

    创建: 2017/10/15 完成: 2017/10/15   更新: 2017/11/04 加粗事件的参数 更新: 2017/12/12 增加事件处理时获取事件对象的方法 更新: 2019/05/2 ...

  7. 51nod1119(除法取模/费马小定理求组合数)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1119 题意:中文题诶- 思路:这题数据比较大直接暴力肯定是不 ...

  8. SKlearn中分类决策树的重要参数详解

    学习机器学习童鞋们应该都知道决策树是一个非常好用的算法,因为它的运算速度快,准确性高,方便理解,可以处理连续或种类的字段,并且适合高维的数据而被人们喜爱,而Sklearn也是学习Python实现机器学 ...

  9. HDFS(Hadoop Distributed File System )hadoop分布式文件系统。

    HDFS(Hadoop Distributed File System )hadoop分布式文件系统.HDFS有如下特点:保存多个副本,且提供容错机制,副本丢失或宕机自动恢复.默认存3份.运行在廉价的 ...

  10. AIDE,sudo,TCP_Wrappers,PAM认证等系统安全访问机制

    AIDE 高级入侵检测环境:是一个入侵检测工具,主要用途是检查文件的完整性,审计计算机上的那些文件被更改过了. AIDE能够构造一个指定文件的数据库,它使用aide.conf作为其配置文件.AIDE数 ...