热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Unity技术之对集成显卡进行优化

多边形数量问题对于现今的大部分图形卡来说,多边形数量并不是大问题。我们一般认为对象数量和填充率更为重要。不幸的是,大部分老的集成芯片(Intel945GMA950和类似型号


 

多边形数量问题

对于现今的大部分图形卡来说,多边形数量并不是大问题。我们一般认为对象数量和填充率更为重要。不幸的是,大部分老的集成芯片(Intel 945 / GMA 950 和类似型号)并非如此。其重要性要看顶点着色器或灯光的复杂度以及 CPU 的速度(不错,大部分集成显卡转换并照亮 CPU 的顶点)。

Big Bang Brain Games 游戏从不在使用 1-2 逐顶点灯和无像素灯(特别是顶点光照 (VertexLit) 渲染路径)的场景中使用超过 2.5 万个三角面。帧速率下降时采用质量设置 (Quality Settings) 自动提高性能。因此,在高端机器中,启用像素灯时质量设置也较高。

造成速度下降的原因是多次绘制物体,使用复杂的顶点着色器和许多多边形。这意味着:

  • 可行时使用 顶点光照 (VertexLit) 渲染路径。这使得无论场景中有多少灯,每个对象都只会绘制一次。
  • 尽量不用所有灯光,包括顶点灯。几何图形或灯光移动时灯才起作用。否则使用光照贴图 (Lightmapper) 烘烤照明,这会运行得更快,外观也更漂亮。
  • 优化几何体(见下一部分)。
  • 使用 渲染统计资料 (Rendering Statistics) 窗口和分析器 (Profiler)!

优化模型几何体

优化模型几何体时,有两条基本原则:

  • 如果并非必须,不要使用过多的面。
  • 使 UV 贴图接缝和硬边尽可能少。

请注意,图形硬件处理的实际顶点数通常与三维应用程序中显示的不同。建模应用程序通常显示几何顶点数,如构成模型的顶点数。

但对显卡而言,一些顶点必须分割成单独的点。如果顶点有多条法线(在“硬边”上)、多个 UV 坐标或多种顶点颜色,就必须分割。所以在 Unity 中看到的顶点数通常与三维应用程序中显示的不同。

烘培灯光。

烘培灯光至光照贴图或顶点颜色中。Unity 内置有出色的光照贴图 (Lightmapper),也可在许多三维建模包中烘培光照贴图。

生成光照贴图环境的过程只比在 Unity 的场景中放入灯光的时间长一点点,但是:

  • 它的运行速度更快,特别是有多盏灯的情况。
  • 因为可以烘培全局照明,所以外观好看许多。

下代游戏仍然很依赖光照贴图。一般来说,它们使用光照贴图环境,并只用一两盏实时动态灯。



推荐阅读
  • Summarize function is doing alignment without timezone ?
    Hi.Imtryingtogetsummarizefrom00:00otfirstdayofthismonthametric, ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了基于c语言的mcs51单片机定时器计数器的应用教程,包括定时器的设置和计数方法,以及中断函数的使用。同时介绍了定时器应用的举例,包括定时器中断函数的编写和频率值的计算方法。主函数中设置了T0模式和T1计数的初值,并开启了T0和T1的中断,最后启动了CPU中断。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 记录一次es集群load过高问题(待更新)
    toptop-H-ppid按shiftp以cpu来排序按shiftm以memory来排序将10进制线程pid转为16进制printf%x\npidjstackjstackP ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文讨论了在iOS平台中的Metal框架中,对于if语句中的判断条件的限制和处理方式。作者提到了在Metal shader中,判断条件不能写得太长太复杂,否则可能导致程序停留或没有响应。作者还分享了自己的经验,建议在CPU端进行处理,以避免出现问题。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 本文详细介绍了使用C#实现Word模版打印的方案。包括添加COM引用、新建Word操作类、开启Word进程、加载模版文件等步骤。通过该方案可以实现C#对Word文档的打印功能。 ... [详细]
  • 1.修改CommonSettings.props文件下compute_xx,sm_xx,其中 ... [详细]
author-avatar
谭宏景
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有