【知乎】为什么很多游戏在第一次进入时编译着色器? | 您所在的位置:网站首页 › 很多游戏 › 【知乎】为什么很多游戏在第一次进入时编译着色器? |
为什么很多游戏在第一次进入时编译着色器? 为什么使命召唤,最后生还者等游戏需要在第一次进入游戏时编译着色器。而不是直接安装编译好的着色器文件 关注者 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 |
CopyRight 2018-2019 实验室设备网 版权所有 |