木匣子

Web/Game/Programming/Life etc.

在 macOS 上使用 eGPU 的体验

前阵子在处理动森二维码的服装预览模型的时候,玩了一下 Blender。于是又勾起了我小时候玩 3D Max 的回忆。于是好想给手上这台 Macbook Pro 2016 配个显卡,深入学习一下 3D 建模。

于是在网络上搜索了好一阵,发现可以使用 eGPU(外置显卡坞)将独立显卡接到 Macbook 上使用。苹果的官网有一篇文章介绍了目前各个版本的系统支持的 eGPU 以及显卡的情况。

仔细看了一圈下来,发现由于历史原因近几年新出的 Macbook 并不支持 nvidia 显卡。看来是没法享受最近要发布的 RTX 3080 系列,只能选择 AMD 显卡。经过简单的预算,最终选择了 Razer Core XAMD RX 5700 XT 来体验一番。

经过一个多星期的等待,收齐了两个包裹,兴奋地开箱安装。Razer Core X 比想像中的笨重,体积堪比一个小型机箱。但是非常简单易用,全程无需镙丝刀就把显卡装上。内置 650W 的电源,可以给大号显卡和笔记本同时供电。使用也很方便,只需要将 USB-C 线接到 Macbook Pro 的雷电接口就行了。后悔没有加点钱买带 4 个 USB 的 Razer Core X Chroma,这样还可以省去使用另外的 USB Hub。苹果对 AMD 显卡的支持也是即插即用,不需要再安装额外的驱动,相当省心。

但是,后面的体验但没有那么愉快。下载安装了最新的 Blender 2.90,然后一路摸索到 Edit > Preferences… > System > Cycles Render Devices 才发现 OpenCL 面板竟然找不到显卡,原因是 macOS 为了推广自家的 Metal 标准,在 10.14 移除了对 OpenCL 的支持。这样的话,这 eGPU 对 blender for macOS 岂不是毫无用武之地了,T_T 哭。

经过一翻研究,发现 AMD 官方有个叫 Radeon ProRender 的产品。它提供了 Blender 插件并实现了 Metal 接口的渲染加速。看起来挺不错的,于是下载来试了试,说不定能曲线救图。

安装完插件后,需要在 Blender 中切换到 ProRender 渲染引擎。于是我尝试渲染了一些 Demo,结果 Blender 闪退到让人弃坑。不过我还是坚持做完了一个 tutorial。第二天想想,这闪退应该有什么解决方案。于是终于在 AMD 的论坛让我找到了解决方案:将 Noise Threshold 优化关闭即可(设置为 0)。

得以使用 ProRender 继续学习 Blender。不过在使用的过程中发现 ProRender 并不支持全部 Blender 的渲染结点,也不能访问一些模型数据。导致渲染出来的效果往往跟教程中有些许差异。还好我不是很在意这些,多数渲染问题都可以在技术上变通。好再 eGPU 是工作起来了。

游戏引擎的渲染引擎是否会有类似的渲染的差异,回头再研究。另外我试了一些支持 macOS 的游戏,例如 Tomb Rider、StarCraft II,特效全开问题不大。但是有些游戏几乎跑不起来,例如 Fortnite,直接卡死在大厅(应该是 CPU 没跟上的问题)[1]。大部分大作只支持 Windows,macOS 上几乎没啥可玩。

我还试在了 Windows 机器上使用这个 eGPU。Blender 依然无法在 Windows 使用 OpenCL 加速,论坛上很多使用 AMD 显卡的人都有这个问题。看来要搞 3D Modeling 还是老老实实使用 Windows + Nvidia 显卡比较省心。最近有两个新闻:1)Nvidia 打算收购 ARM[2]。2)Apple 未来将使用 ARM[3] 作为新机器的内核。不知道未来 Apple 和 Nvidia 是否会重归于好,重新支持上 Nvidia 的显卡呢?让我们拟目以待。

updated 2021-12-11:

苹果投资了 Blender 基金会 12 万欧元,并向 Cycles 渲染引擎提交了 Metal 接口的本地支持。Blender 3.1 版本将会原生支持苹果的渲染接口。可以坐等 2022 年的更新了。


  1. 后来又试了几次,测试结果是每次退出游戏并重新进行游戏后都会有大概10多分钟的 MetalCompileService 编译时间,之后重复游戏加载比较快。 ↩︎

  2. 后来放弃了 ↩︎

  3. Apple 最终推出了 ARM-based 的 M1 芯片。 ↩︎