在这个简短的教程中,我将向大家介绍 Blender 5.2 中为 Cycles 引入的 Texture Cache 功能。它能够在渲染过程中提供更好的内存管理,使包含大量纹理的场景也能够顺利完成渲染。


本教程的视频版本目前尚未提供该语言版本。您可以在下方观看带字幕的英文版视频;视频下方提供了翻译成中文的文字稿。


视频文字稿

大家好!在这个简短的教程中,我将向大家介绍 Blender 5.2 中为 Cycles 引入的 Texture Cache 功能。它能够在渲染过程中提供更好的内存管理,使包含大量纹理的场景也能够顺利完成渲染。

为了通过一个实际项目进行演示,我使用了自己制作的完整幼儿园场景,这个场景也曾在其他教程中使用过。在那些视频里,我始终只能保留需要使用的环境部分,例如教室、剧场或游乐场,因为整个项目连同所有纹理目前占用了 4 GB 的磁盘空间。Blender 甚至无法渲染一个简单的镜头,即使是像学校游乐场这样纹理相对较少的区域也不行。它会显示错误信息:“System is out of GPU and shared host memory.” 下面我们来看看如何利用 Texture Cache 解决这个问题。

在继续之前,我想提醒大家,与我的许多其他视频一样,本教程也提供了文字版以及其他补充资源,并且包含多种语言的译文。相关链接就在视频说明区。

Texture Cache 选项位于 Properties Editor 的 Render > Performance 面板中。在我的系统上,它默认就是启用状态。根据官方文档,启用后,Blender 会将图像生成优化后的 TX 格式版本,保存到磁盘,并在渲染时使用这些文件。

这些文件的保存位置可以在 Preferences Editor 的 File Paths 选项卡中,通过 Data Render Texture Cache 设置。如果将这个字段留空,TX 纹理将会保存在原始纹理所在目录中的一个子文件夹内。

目前,由于这些图像都被打包在 Blender 文件内部,并没有作为独立文件保存在磁盘上,因此 Texture Cache 无法找到可转换为 TX 格式的图像。结果,Blender 会显示提示:“No image files found to generate TX files.”

首先,我们需要把纹理从 Blender 文件中提取出来,并分别保存到磁盘。我通过 File > External Data 下的 Unpack Resources 来完成这一步,同时先关闭同一菜单中的 Automatically Pack Resources。这里我选择的是 "Write files to current directory, overwrite existing files" 选项,它会在项目的 Blender 文件旁边创建一个 Textures 文件夹。Blender 同时提示,这个项目包含 745 个文件。原始纹理会被提取并保存到新的文件夹中,不过要让这些修改真正应用到项目,还需要保存 Blender 文件。保存之后,文件大小减少了一半,因为原来约 2 GB 的体积都是打包进去的纹理。

这里我需要说明一点,在我的这个项目中,即使不启用 Texture Cache,Blender 现在也已经能够完成渲染,因为仅仅将纹理提取到磁盘,就足以让场景重新具备可渲染性。这也是本教程标题前半部分的内容,也就是利用 Unpack 解决由纹理导致的内存不足问题。不过,有些项目即使采用了这种方法以及其他优化技巧,仍然会出现内存不足的问题,所以接下来我们看看 Texture Cache 在这些情况下能够提供怎样的帮助。

现在纹理已经保存在磁盘上,我点击 Texture Cache 部分中的 Generate,让 Blender 创建 TX 文件。这些文件生成得很快,并会保存在 Textures 目录中的一个子文件夹内。

现在开始渲染时,Blender 会从 TX 文件夹加载纹理。在我的情况下,渲染速度实际上比之前更快,不过这也可能与其他优化有关,例如 Performance 面板中的 Persistent Data。Texture Cache 的主要作用是降低内存占用。它对渲染时间的影响会因场景、硬件以及其他渲染设置而有很大差异。

这时候,你可能会认为,我们前面还是花了几秒钟来生成项目的 TX 纹理,所以这部分时间也应该计入总渲染时间。这种说法完全合理。不过,除了有些情况下不使用 Texture Cache 根本无法开始渲染之外,还有一点同样重要,那就是 TX 纹理只需要生成一次。之后,它们会一直保存在磁盘上,并在今后的渲染中重复使用,包括渲染项目中的其他区域。现在屏幕上我切换到了场景的另一部分,开始渲染,并在 51 秒内完成。对我来说,这是一个非常明显的提升。

这种工作流程的缺点在于 TX 纹理会占用更多磁盘空间。在这个示例中,它们占用了 3.21 GB,而原始纹理不到 2 GB,并且这两套文件都需要保留。这正是开发者设计时所做出的取舍,也就是用更多的磁盘空间来换取渲染时更低的内存占用。就我个人而言,只要能够稳定地渲染整个场景,并且明显缩短渲染时间,我完全可以接受这样的取舍。

本期教程就到这里!如果觉得对你有帮助,请点赞并订阅频道。我们下次再见!

本网站仅用于展示我的部分作品,不具有任何推广或商业目的。请注意,目前我不接受,也不会回复任何定制项目、咨询服务或其他形式的合作请求。


高级隐私策略信息和cookie文件的使用