PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

修改NV GameWorks的HairWork让其在A卡上完美运行

[复制链接]
跳转到指定楼层
1#
点击数:10169|回复数:20
什么是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
2#
SCE-PhyreEngine  楼主| 发表于 2016-4-17 00:30 | 只看该作者
说明:由于NV开源出来的HairWorks代码暂时无DX12版本,所以这次的代码和运行时都是DX11的
测试环境:i7 6700+R9 380 2G(蓝宝石ITX版本),4K分辨率。未改前即使是短头发,头发数量较少的情况下也是50帧以下
3#
SCE-PhyreEngine  楼主| 发表于 2016-4-17 00:31 | 只看该作者
由于发帖时使用的就是i7 6700+R9 380 2G(蓝宝石ITX版本)这台机器,明天我就用我那台双FuryX的高端机,再发一下,高端A卡的运行情况,顺便测下交火
4#
SCE-PhyreEngine  楼主| 发表于 2016-4-17 00:35 | 只看该作者
由于本人能力和时间所限,只改出了GCN显卡可以运行的版本,而且这套修改方案未必是最佳的,有兴趣的朋友们可以关注国外相关技术网站的信息。国外有大牛已经改出了更好的修改版,而且有的人已经把相关算法部分提取了出来用到了自己的框架里
5#
SCE-PhyreEngine  楼主| 发表于 2016-4-17 00:36 | 只看该作者
由于NV的开源版本编译出来的库和目前很多游戏用上的库不一样,所以无法替换掉哪些游戏里的库。
6#
fastone 发表于 2016-4-17 02:09 | 只看该作者
问题是这次开发者大会上,NV表示会开源所有的GAMERWORKS,至今也没看到开源地址下载,就只有DX11。。
7#
dongyi945 发表于 2016-4-17 08:12 | 只看该作者
程序猿你好······
8#
mrplplplpl 发表于 2016-4-17 08:37 | 只看该作者
谢谢楼主的技术贴,做个记号
9#
w1cw2cw3cw 发表于 2016-4-17 10:18 | 只看该作者
我只能看懂FPS数字
10#
w1cw2cw3cw 发表于 2016-4-17 10:23 | 只看该作者
那意识是用A卡 就能享受到N卡的特效了
11#
SCE-PhyreEngine  楼主| 发表于 2016-4-17 14:50 | 只看该作者
w1cw2cw3cw 发表于 2016-4-17 10:23
那意识是用A卡 就能享受到N卡的特效了

是的,只要开发商花点时间就可以了
12#
SCE-PhyreEngine  楼主| 发表于 2016-4-17 15:07 | 只看该作者
fastone 发表于 2016-4-17 02:09
问题是这次开发者大会上,NV表示会开源所有的GAMERWORKS,至今也没看到开源地址下载,就只有DX11。。 ...

首先,要注册个NV开发者账号,才能访问NV的GitHub.在有,只有HairWorks目前没有DX12版本的代码。
最关键的问题是,CryEngine5开源了,CE5里面的效果算法无论拼效率还是比惊艳,都比GameWorks的要强。而且CE5里只有极少数炫技算法对于广大开发者没什么实际用途之外,其余的开发者均可以好好研究移植出来。毕竟目前能够看到代码的只有CryEngine5做到了经验效果算法和DX12底层硬件特性完美结合
13#
SCE-PhyreEngine  楼主| 发表于 2016-4-17 16:04 | 只看该作者
建议大家有兴趣的还是去学习CryEngine5
14#
coolerlan 发表于 2016-4-17 16:58 | 只看该作者
SONY索尼大法好!
15#
中华田园犬 发表于 2016-4-17 19:54 | 只看该作者
其实很久以前听到个消息是nv想把physx开放给AMD支持,但AMD直接拒绝了
16#
SCE-PhyreEngine  楼主| 发表于 2016-4-17 20:35 | 只看该作者
中华田园犬 发表于 2016-4-17 19:54
其实很久以前听到个消息是nv想把physx开放给AMD支持,但AMD直接拒绝了

是因为Intel抢先了一步,让AMD支持了Havok.我记得那年正好是主板芯片争端的那年
17#
凌冰 发表于 2016-4-18 23:23 | 只看该作者
SCE-PhyreEngine 发表于 2016-4-17 00:30
说明:由于NV开源出来的HairWorks代码暂时无DX12版本,所以这次的代码和运行时都是DX11的
测试环境:i7 670 ...

为什么改之前和改之后fraps显示的帧数字体大小不一样?PS:lz碉堡了
18#
SCE-PhyreEngine  楼主| 发表于 2016-4-18 23:43 | 只看该作者
凌冰 发表于 2016-4-18 23:23
为什么改之前和改之后fraps显示的帧数字体大小不一样?PS:lz碉堡了

第一个截图是改之前随便跑了一下,没有全屏的图。第二图是改完全屏的图。



NV原工体积实在很大,解压完1.3G,过一阵我将根据开源协议,把修改后的代码上传到GitHub上先

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
19#
SCE-PhyreEngine  楼主| 发表于 2016-4-18 23:50 | 只看该作者
不过到时候有兴趣的朋友,别忘了自己去找一份AMD AGS库,貌似这个库和开源协议有些小冲突。其他的没什么
20#
qqicu 发表于 2016-4-19 10:55 | 只看该作者
这东西厉害,老黄得哭了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部