MobilePBRLighting优化思路2
在最近的研究工作中,进一步对移动端PBRLighting进行了优化,以下是一些优化截图,由于后续整理文章使用:
PBRLighting(未开启伽马矫正):
MobilePBRLighting(高质量版本,未开启伽马矫正):
MobilePBRLighting开启伽马矫正:
可以看到,MobilePBRLighting在大部分渲染上表现得跟标准PBRLighting非常接近,但是这是一种快速方案,意味着有一些需要我们调整的参数,对于这个场景,使用PATTENR5模式,并使用关闭SpecularModel1或SpecularModel2。
对于其他情况,如下图:
左边是MobilePBRLighting,右边是PBRLighiting。从上往下,第一个和最后一个使用PATTERN1模式,并且使用SPECULARMODE1模式,表现和PBRLighting很接近。第二个和第三个需要环境反射,所以使用PATTERN5,并且使用SPECULARMODE1模式,同时设置RoughnessLod为8和16,表现非常接近PBRLighting。红色的球,使用PATTERN5模式,开启SPECULARMODE1模式,跟标准PBRLigiting表现差距比较大,我们关闭SPECULARMODE1,选择开启SPECULARMODE2模式或使用默认Specular模式,如下:
使用PATTERN5+SPECULARMODE2模式。
对于PATTERN1和PATTERN5的区别,PATTERN1性能最好,但是适合那些类似上面第一个和最后一个不需要镜面反射的粗糙物体。对于PATTERN5,根据金属度,RoughnessLod和SpecularMode来调整效果,其中默认的SpecularMode模式最快(即同时不勾选SpecularMode1和SpecularMode2)。
对于某些情况下,开启SpecularMode1或SpecularMode2才是正确的接近PBRLighting的效果,至于为何有这种区别,原因在于使用了近似BRDF和IBL算法。不能顾全所有情况,所以需要根据不同情况调整参数。但需要调整的也仅仅只是这几个开关参数。不需要动材质的其他参数。
还有一个低质量模式,勾选LowQuality即可,如下:
如果你追求性能的话,可以开启这个模式。
MobilePBRLighting优化思路2的更多相关文章
- mysql优化思路
/* mysql优化思路 1.数据库设计 2.sql语句优化 3.数据库参数设置 4.恰当的硬件资源和操作系统 数据库设计 数据的3NF( ...
- redis在实践中的一些常见问题以及优化思路
1.fork耗时导致高并发请求延时 RDB和AOF的时候,其实会有生成RDB快照,AOF rewrite,耗费磁盘IO的过程,主进程fork子进程 fork的时候,子进程是需要拷贝父进程的空间内存页表 ...
- 谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现(更新优化思路)
注:本文仅用于在博客园学习分享,还在随着项目不断更新和完善中,多有不足,暂谢绝各平台或个人的转载和推广,感谢支持. 一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是 ...
- Spring配置表友好性优化思路
Spring配置表需要尽量保证对程序员的友好性,一下提供一种优化思路. 中途未保存,心态炸了,只贴图了,fuuuuuuuuuuuuuck 第一种(最烂,最不友好):以Json的格式保存在配置表中,程序 ...
- PHP优化思路
想起来记录一下自己对PHP的优化思路 针对Nginx和 PHP-FPM进行优化 首先应该分为代码层面.配置层面.架构层面 代码层面 参见了https://segmentfault.com/a/1190 ...
- 转:使用RNN解决NLP中序列标注问题的通用优化思路
http://blog.csdn.net/malefactor/article/details/50725480 /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author ...
- 【58沈剑架构系列】mysql并行复制优化思路
一.缘起 mysql主从复制,读写分离是互联网用的非常多的mysql架构,主从复制最令人诟病的地方就是,在数据量较大并发量较大的场景下,主从延时会比较严重. 为什么mysql主从延时这么大? 回答:从 ...
- MySQL order by的一个优化思路
最近遇到一条SQL线上执行超过5s,这显然无法忍受了,必须要优化了. 首先看眼库表结构和SQL语句. CREATE TABLE `xxxxx` ( `id` ) NOT NULL AUTO_INCRE ...
- spark(二)优化思路
优化思路 内存优化 内存优化大概分为三个方向 1.所有对象的总内存(包括数据和java对象) 2.访问这些对象的开销 3.垃圾回收的开销 其中Java的原生对象往往都能被很快的访问,但是会多占据2-5 ...
- Nginx优化思路
对于高性能网站 ,请求量大,如何支撑? 1方面,要减少请求 对于开发人员----合并css, 背景图片, 减少mysql查询等. 2: 对于运维 nginx的expires ,利用浏览器缓存等,减少查 ...
随机推荐
- 一类(One-Class)分类器
本文摘自博客和论文,参考文献请看文末. 一类分类技术概念 与传统的分类技术不同,一类分类技术仅采用隶属于一个类别的样本来训练分类器,其通常被用于某种极端场景,即训练样本仅包含正常样本,而异常样本不可得 ...
- mysql中的列类型
创建数据表的时候,指定的列可以存储的数据类型: CREATE TABLE book ( bid 列类型); ① 数值类型--可以不加引号 TINYINT 微整型,占一个字节 范围-128~127 ...
- 异步async await 相关知识点总结以及代码练习
<script> const setTimeoutToPromise = duration => new Promise(resolve => { setTimeout(res ...
- 迁移学习(DIFEX)《Domain-invariant Feature Exploration for Domain Generalization》
论文信息 论文标题:Domain-invariant Feature Exploration for Domain Generalization论文作者:Wang Lu, Jindong Wang, ...
- 异常的产生过程解析-throw关键字
异常的产生过程解析 先运行下面的程序,程序会产生一个数组索引越界异常ArrayIndexOfBoundException.我们通过图解来解析下异常产生的过程. 工具类 throw关键字 在编写程序时, ...
- 三种循环的区别-break语句
三种循环的区别 循环语句的区别 for 和 while 的小区别: 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继 续使用,如果你想继续使用,就用w ...
- Unity模块嵌入到Android中
嗨,大家好,小黑在沉寂了6个月之后,终于要继续写一篇博客了. 先吐槽一波上家公司PHD&&OMS,不吐不快.上家公司的小黑,每天不是在弄UIWidgets,就是再弄UIWidgets, ...
- 腾讯出品小程序自动化测试框架【Minium】系列(五)API详解(中)
写在前面 又有好久没更新小程序自动化测试框架Minium系列文章了,主要真的太忙,尽量做到每周一更吧,还请大家能够理解! 上篇文章为大家分享关于Minium中Minium.App模块的API 使用,接 ...
- 一个通用的 java 项目的模板
#!groovy def oper_checkout(SCM_TYPE,SCM_URL,SCM_AUTH_PASS,SCM_BRANCH=' ',SCM_AUTH_USER=' '){ if (SCM ...
- oasys系统_JAVA代码审计
oasys系统_JAVA代码审计 一.前言 oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目.可以看到该项目的资源文件中是mappers且pom. ...