什么是GameWorks
它整合了NVIDIA的PhysX、TXAA、曲面细分、HBAO+以及FlameWorks、FaaceWorks等工具,可以帮助开发者使用NVIDIA的各种3D技术,简化开发流程。
这本来是一件好事,但是GameWorks带给开发者的并不完全是方便,因为Gameworks采取了“黑盒”操作,别说给AMD及Intel GPU机会了,就连开发者也看不到自己的代码。看来跟了NVIDIA别说“出轨”了,看别人一眼的机会都没有。注意GameWorks 只是个效果中间件而已并非什么底层API。
业内多个大腕级游戏开发者当时在推特上展开了这样一个讨论。简单介绍一下其中几个人物:John Kloetzli是Firaxis公司的图形程序员,Bart Wronski、Michal Drobot是育碧公司蒙特利尔工作室的图形程序员(育碧发布的一些游戏还都是跟NVIDIA合作的,包括看门狗),Timothy Lottes是前NVIDIA公司员工、TXAA技术的作者,现在转投EPIC公司,Johan Adersson是DICE创始人、核心,是图形界的大牛之一。虽然DICE现在只听微软的,不过Johan一直是NVIDIA的座上宾,去年NVIDIA的蒙特利尔会议上他还跟卡马克、EPIC创始人Tim Sweeney一同与会。
这些程序员中不乏连NVIDIA的亲密合作伙伴,不过他们现在都在声讨GameWorks苛刻的封闭政策。配套文档不公布不说,黑盒操作更让开发者失去了主动权,只要用了GameWorks的运行库文件,在NVIDIA之外的平台上,代码就被隐藏了,开发者自己不能修改这些代码,而且AMD和Intel也不能通过自己驱动提供优化。
也就是说,只要你用了NVIDIA的GameWorks,开发出的游戏只能在NVIDIA设备上展示最好的效果,其他平台就不是NVIDIA关心的事了。
从NVIDIA的角度来说,这很正常,他们肯定不会为竞争对手考虑,但是开发商不一样.特别是引擎开发商,CryEngine和寒霜两大引擎的效果只比GameWorks 的要强,而且效率非常高,未使用显卡厂商的任何库(AMD的东西早年就开源了,而且微软D3D的很多例子也是AMD写的)。加之DX12更加底层更注重硬件效率,驱动程序的作用大大弱化。在大趋势和DX12本身的压力下,加之CryEngine5的忽然开源,开发人员可以获得更加惊艳高效的游戏效果解决方案,GameWorks终于开源了。
那么为什么GameWorks开源之后又流传出其他显卡想用没戏的言论呢?
真相是:
GameWorks是开源了可是很多里面的东西基于NVAPI做的,这款和NV驱动层衔接的库是不开源的(这个没有义务开源,后面说到的AMD AGS库)
所以我们必须将AMD对应的库加入进去,而且要添加很多代码(大部分是数学库相关,虽然难度不高但是是纯体力活,所以我从4月2号改到现在。。。。。。。。)
至于为什么还要把DXUT加入进去,是因为想偷个懒用DXUT的UI控件显示些信息什么的,结果加入进去之后,发现很不好用。
数学库的改法我就不介绍了,纯体力活,只需要在
if (m_apiGlobal->gpuInfo.architectureVersion == AGSGPUInfo::ArchitectureVersion_GCN)
这个条件成立的时候,用AMD的LIB和SDK就可以了,如果没有,AMD的LiB和SDK也是开源的自己仿写对应函数就可以了
关键点:
AMD AGS库必须引入,用来处理对应的Buffer,曲面镶嵌和交火
以上就是代码重要更改的地方,其实AMD显卡曲面镶嵌并没有传说中的那么差劲,只是这GameWorks没开源之前。。。。大家都懂的
改完编译之后别忘了把AMD相关的DLL拷贝到运行目录
未改前的运行
改之后的运行
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|