Unity3D Shader性能排行

整体上,性能由高到低:

  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

时间: 2024-08-05 21:14:20

Unity3D Shader性能排行的相关文章

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

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] 本篇文章中,我们学习了Unity Shader的基本写法框架,以及学习了Shader中Properties(属性)的详细写法,光照.材质与颜色的具体写法.写了6个Shader作为本文S

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

刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D Shader编程望而却步.该系列教程的第一篇文章(译者注:即本文,后续还有5篇文章)详细介绍了Unity3D中的表面着色器(Surface Shader)的,为学习更复杂的Shader编程打下基础. 动机 如果你是刚刚接触Shader编程的新手,你可能不知道从何开始踏出Shader编程的第一步.本教程将带你一步步完成一个表面着色器(Surface Shader)和片段着色器(Fra

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

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/41175585 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] 本文介绍了Unity中子着色器.通道和标签相关的详细概念与写法,以及纹理的设置方法,基本的纹理混合写法,写了5个Shader作为本文Shader讲解的实战内容,最后创建了一个梦幻的光之

Unity3D shader简介

Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易.毫无疑问,shader(着色器)编码,仍有很长的路要走.shader是一个专门运行在GPU的程序,经常被神秘包围,它最终绘制3D模型的三角形.如果你想给游戏一个特殊的显示,学习如何编写shader是必要的.Unity3D使用shader做后期处理,对2D游戏也是必不可少的.这个系列的文章将逐步介绍shader编程,并面向几乎没有任何shader知识的开发者. 简介 下图大致表示了在Unity3D渲染流程中发

【浅墨Unity3D Shader编程】之四 热带雨林篇: 剔除、深度测试、Alpha测试以及基本雾效合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处.   文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1222/163.html 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] QQ交流群:330595914 更多文章尽在:http://www.hpw123.net 本文介绍了Unity中Shader书写中会用到的剔除.深度测试.Alpha测试以及基

Unity3D Shader入门指南(转)

猫都能学会的Unity3D Shader入门指南(一) Unity Shader教程 动机 自己使用Unity3D也有一段时间了,但是很多时候是流于表面,更多地是把这个引擎简单地用作脚本控制,而对更深入一些的层次几乎没有了解.虽然说Unity引擎设计的初衷就是创建简单的不需要开发者操心的谁都能用的3D引擎,但是只是肤浅的使用,可能是无法达到随心所欲的境地的,因此,这种状况必须改变!从哪里开始呢,貌似有句话叫做会写Shader的都是高手,于是,想大概看看从Shader开始能不能使自己到达的层次能再

Unity3D - 图形性能优化:优化着色器加载时间

Unity官方文档之"图形性能优化-优化着色器加载时间"的翻译,E文链接. Optimizing Shader Load Time 优化着色器加载时间 Shaders are small programs that execute on the GPU, and loading them can take some time. Each individual GPU program typically does not take much time to load, but shade

【浅墨Unity3D Shader编程】之七 静谧之秋篇: 表面着色器的写法(二)——自定义光照模式

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://hpw123.net/plus/view.php?aid=183 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] QQ交流群:330595914 更多文章尽在:http://www.hpw123.net 本文主要讲解了Unity中SurfaceShader的自定义光照模式的写法. 上篇文章中我们已经说到,表面着色器将分为两次讲解,上

unity3d shader 学习

[浅墨Unity3D Shader编程] 着色器参考 [Unity Shaders]