欢迎光临散文网 会员登陆 & 注册

【知乎】为什么很多游戏在第一次进入时编译着色器?

2023-08-04 07:44 作者:失传技术  | 我要投稿


为什么很多游戏在第一次进入时编译着色器?

为什么使命召唤,最后生还者等游戏需要在第一次进入游戏时编译着色器。而不是直接安装编译好的着色器文件



关注者

7

被浏览

4,131

关注问题写回答

邀请回答

好问题 1

2 条评论

分享

修改问题

收起 

你可以邀请下面用户,快速获得回答

委托刘看山邀请

开启后为你智能邀请潜在的回答者

开启邀请


秘银法王


TA 已帮助 125 人获得解答

邀请回答


黑梅蒂尔的主场


TA 已帮助 228 人获得解答

邀请回答


艾瑞克


曾在「游戏」话题获得 540 次赞同

邀请回答


Gameplay编程匠


腾讯 移动客户端开发工程师

邀请回答

更多推荐结果

3 个回答

默认排序


Italink


X.Y

 关注

了解一下PSO缓存:

  • mike:UE4 PSO缓存


发布于 2023-05-03 00:19

赞同添加评论

分享

收藏喜欢


idovelemon


Programmer,Gamer

 关注

2 人赞同了该回答

简单的说,平时我们写的 shader 只是一种资源文件,需要通过硬件自带的 GPU compiler 编译成对应 GPU 的机器码来执行。不同的机器所需要的机器码不同,所以基本都只能让机器自己去编译,无法提前准备好。
一旦机器编译好了之后,就可以缓存下来,以后打开程序的时候就不用再编译了。

不过 steam 似乎有一个功能,会收集所有玩家对应机型的缓存数据,然后你下载的时候可以将这个收集到的数据直接下载下来,省去第一次的编译,不记得是在哪里看到的报告了。

另外苹果公司的 Metal API 最新版本中,已经准备支持将编译好的机器码直接放在资源里面,后面程序跑的时候,不用在编译了。它能这么做是因为 API 和 芯片都是自己造的,其他公司模仿不来。


发布于 2023-05-06 15:37・IP 属地上海

赞同 2添加评论

分享

收藏喜欢


新生命


 关注

一般是因为这些项目的shader采用了大量的uber(变体)。会动态的根据用户硬件采用不同的shader。


发布于 2023-05-01 10:24


【知乎】为什么很多游戏在第一次进入时编译着色器?的评论 (共 条)

分享到微博请遵守国家法律