2014-7-29 18:38| 发布者: tianzc| 查看: 293| 评论: 0
1 创意产品2D/3D端游显卡兼容性测试神器---虚拟显卡,通过模拟指定显卡型号的特性,从而在一台物理配置机上模拟其他型号的显卡,通过虚拟显卡的方式,极大的方便测试,问题定位及修复。 3 创意点的产品功能/使用场景介绍 背景:3D端游兼容性的一直都是游戏或引擎厂商的难点,而显卡的兼容性占到很大的比重(据统计目前85+%的兼容性问题为显卡兼容性)。因为众多的显卡型号(目前外网上报有1100+),而不同的显卡往往支持的功能特性(DX Caps)有所不同,就需要针对不同的特性提供相应的实现方案。但往往特性复杂且众多(DX Caps组合情况下达到150000+),如下所示:
所以在实现某个3D特效或功能时,难以在前期做到全面覆盖显卡Caps特性。而在内部测试时,难以覆盖大量的显卡型号,导致外网玩家由于兼容性问题,会遇到功能显示异常、黑屏、花屏甚至崩溃,严重影响游戏体验,同时也减少了用户量。但因为玩家的环境不易构造(显卡较老、或者非主流显卡),导致部分问题往往长期无法定位及修复。 应用场景: 1,游戏3D相关功能新增或变更时,需要对兼容性进行测试,而又缺乏大量的硬件环境,或者需要快速进行验证时,即可用虚拟显卡模拟相应的显卡,很方便地进行测试,且有利于敏捷开发流程。 2,外网出现兼容性问题,但又难以找到玩家相应配置的显卡时,即可使用虚拟显卡快速进行验证,并且会给出相应的问题原因。 操作简便,只需选择相应的显卡,无需其他环境配置,正常启动游戏,即可模拟在该显卡上进行测试,如下图所示:
以轩辕传奇为例,轩辕传奇在真实的物理显卡Radeon X1300/1500上阴影渲染异常,如下图所示:
如上图所示,阴影渲染为块状,而正常的阴影如下图所示:
在可以正常渲染的显卡上,利用虚拟显卡模拟Radeon X1300/1500显卡,此时阴影的渲染如同在真实的Radeon X1300/1500显卡上,如下图所示:
而且还可以给出具体的兼容性原因,如下图所示,原因为Radeon X1300/1500不支持格式为D3DFMT_R16F时的D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING,导致在Blending时失败,最终阴影渲染异常。
虚拟显卡不仅可以快速方便(几乎为零成本)的构造相应的显卡环境,便于进行快速的测试或验证,而且还能准确地提供问题的原因。 4 创新点的创新之处的具体描述4.1创新点1)从Caps层面实现虚拟显卡 从显卡兼容性的主要原因出发(从目前公司所有3D端游显卡兼容性问题原因统计,85+%是由于DX Cap使用不当导致),通过模拟指定显卡的Caps(150000+)信息,以及控制游戏对所有DX API(250+个API)的使用,从而达到在虚拟显卡上游戏的渲染效果。 2)自动分析问题原因 一般在定位兼容性问题原因,先要分析渲染中使用了那些较高级的Caps或者不常用的Caps,结合问题显卡的Caps,再逐步分析渲染流程,这一过程往往耗时较久,而通过虚拟显卡可以自动对比分析,而得出问题原因,极大的方便了开发同事修复。 4.2同行业对比据了解目前行业内没有同类的方式,在DX Caps层实现虚拟显卡,从而方便测试以及问题原因定位。在显卡兼容性测试领域,已申请了两项国家技术专利,属行业首创。 5 创意来源5.1创新点主要来源1)兼容性测试之痛---硬件环境搭建困难重重,部分显卡(显卡较老、或者非主流显卡)难以找寻,且大量的硬件导致成本较高。 2)测试周期较长,数GB大小的客户端拷贝、拔插显卡及重装驱动、网络环境的配置,都需要较长的时间,也不适宜敏捷流程,而且需要一定的人力成本。 3)一般兼容性测试反馈的信息,往往只有现象描述(截图、测试环境等),且开发也不便于构造测试环境,造成对问题定位困难,最终导致一些兼容性问题长期无法解决。 5.2创新的实现目标1)方便快速搭建测试环境,在一台物理配置上快速、方便地模拟其他型号的显卡。 2)尽量准备准确定位兼容性问题的根本原因,在DX API及Caps级别定位,方便开发同事能够快速修复。 6 怎么实现的虚拟显卡的核心原理:接管游戏对所有Direct API的调用,根据显卡数据库中Caps,控制游戏对Direct API的使用,从而达到模拟在特定显卡的渲染实现。并根据游戏对Direct API的使用信息,以及特定显卡的Caps信息,反馈具体是哪些Caps以及API使用不当导致渲染有误。总体架构图,如下图所示:
6.1关键点实现游戏正常的实现流程为:游戏引擎调用Direct3D提供的API,DX API再通过硬件抽象层(HAL,Hardware Abstraction Layer)来实现显卡硬件所能提供的特性,进而由驱动程序向显卡发送命令,并实现最终的绘制。而采用虚拟显卡时的实现流程如下图所示:
虚拟显卡网络图如下:
基本原理:通过接管3D引擎对所有DirectAPI的使用,从中提取出有关Caps的使用,并根据特定显卡的Caps信息重塑3D引擎对DirectAPI的使用,从而模拟3D引擎在特定显卡上的表现。以及在出现问题时,输出详细的DirectAPI以及Caps使用不当信息。
7 产品意义及未来展望7.1产品意义1,节约大量测试时间,提供便捷的测试环境,缩减项目的开发周期,且为敏捷流程提供保障。并节约了大量的硬件及人力成本。 2,提供显卡兼容性自动化测试的技术支撑,便于3D引擎实现自动化测试显卡兼容性。 3,提供准确的兼容性问题原因(DX_API及Caps使用不当),便于开发快速修复。 7.2 对未来展望目前已推广到互娱品管中心、工作室、引擎技术中心。也有对第三方游戏公司提供合作支持。后续会推向业界,帮助游戏行业解决显卡兼容性测试、定位及修复难题。 与公共组件合作,收集外网玩家的显卡Caps信息,将会是目前业界最全面的显卡Caps信息库,且实现对玩家显卡模拟的全量覆盖。后续会移植到Android、IOS平台,解决移动端的兼容性测试、定位及修复难题。 |