【知乎】为什么很多游戏在第一次进入时编译着色器?
为什么很多游戏在第一次进入时编译着色器?
为什么使命召唤,最后生还者等游戏需要在第一次进入游戏时编译着色器。而不是直接安装编译好的着色器文件
关注者
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