Unity3D Shader性能排行
整体上,性能由高到低:
- Unlit,仅为纹理,光线不产生效果
- VertexLit
- Diffuse 漫反射
- Normal Mapped 法线贴图
- Specular 高光
- Normal Mapped Specular
- Parallax Normal Mapped
- 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性能排行的更多相关文章
- 【译】Unity3D Shader 新手教程(1/6)
本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 刚开始接触Unity3D Shader编程时,你会发现有关shader的文档相当散,这也造成初学者对Unity3D ...
- Unity3D shader简介
Unity3D shader简介 可以肯定的说Unity3D使得很多开发者开发游戏更容易.毫无疑问,shader(着色器)编码,仍有很长的路要走.shader是一个专门运行在GPU的程序,经常被神秘包 ...
- 【浅墨Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法&颜色、光照与材质
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨) ...
- 【淡墨Unity3D Shader计划】四 热带雨林的文章: 排除、深度测试、Alpha测试和基本雾编译
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1222/163.html 作者:毛星云 ...
- 移动平台Unity3D 应用性能优化
WeTest 导读 做了大概半年多VR应用了,VR由于双眼double渲染的原因,对性能的优化要求比较高,在项目的进展过程中,总结了一些关于移动平台上Unity3D的性能优化经验,供分享. 一.移动平 ...
- 【浅墨Unity3D Shader编程】之三 光之城堡篇:子着色器、通道与标签的写法 & 纹理混合
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://hpw123.net/a/C__/kongzhitaichengxu/2014/1117/120.html 作者:毛星云 ...
- Unity3D - 图形性能优化:优化着色器载入时间
Unity官方文档之"图形性能优化-优化着色器载入时间"的翻译,E文链接. Optimizing Shader Load Time 优化着色器载入时间 Shaders are sm ...
- 【浅墨Unity3D Shader编程】之一 夏威夷篇:游戏场景的创建 & 第一个Shader的书写
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40723789 作者:毛星云(浅墨) ...
- 转 猫都能学会的Unity3D Shader入门指南(二)
猫都能学会的Unity3D Shader入门指南(二) 关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己 ...
随机推荐
- 让开发更简单 —— Coding Enterprise 发布
今天,我们很高兴地宣布 Coding Enterprise 发布了 —— Coding Enterprise 是 CODING 专为企业打造的软件开发协作平台,提供了针对中小型企业的公有云版本和针对大 ...
- N72烧写
1.打开MFGTOOL.exe烧写工具:上电之前,先短接左下脚,当查看到MFGTOOL工具扫描到工具之后,点击开始,过2分钟左右烧写完成:完成之后电源要拔插以下!! 2.利用---生产工具V1.3 2 ...
- hdu1069
#include <iostream> #include <algorithm> #include <cstring> using namespace std; c ...
- redis系列:通过日志案例学习string命令
前言 该文章将通过一个小demo将讲述Redis中的string类型命令.demo将以springboot为后台框架快速开发,iview前端框架进行简单的页面设计,为了方便就不使用DB存储数据了,直接 ...
- vue-cli目录结构及说明
使用vue-cli有时会出现一些莫名的问题,清楚项目的结构文件及其意义方便更好的开发和解决问题,介绍如下: build/ // 项目构建(webpack)相关代码 build.js // 生产环境构建 ...
- 飘逸的python - @staticmethod和@classmethod的作用与区别
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...
- C#之数据类型转换
前言 在C#中学习中,像在VB学习的时候一样,我们会接触到很多种数据类型,但是VB中在用数据类型的时候,我们会考虑这个数据要求多大的内存,或者说有时候为了满足很少的大内存事件,而狠心分配给它较大 ...
- 唯快不破:Web 应用的 13 个优化步骤
时过境迁,Web 应用比以往任何时候都更具交互性.搞定性能可以帮助你极大地改善终端用户的体验.阅读以下的技巧并学以致用,看看哪些可以用来改善延迟,渲染时间以及整体性能吧! 更快的 Web 应用 优化 ...
- 需要命名空间管理器或 XsltContext。此查询具有前缀、变量或用户定义的函数 及 多属性节点查询
第一个问题, 1. 首先需要引入命名空间, 2. 其次,在用xpath查找结点时,在selectNodes等方法中再次带入命名空间 如 XmlDocument doc = new XmlDocumen ...
- spring data之JDBCTemplate学习笔记
一.spring 数据访问哲学 1.为避免持久化的逻辑分散在程序的各个组件中,数据访问的功能应到放到一个或多个专注于此的组件中,一般称之为数据访问对象(data access object,DAO). ...