Karma XPU는 VEX 셰이더를 실행하지 않습니다
Karma XPU는 VEX 기반 셰이더를 지원하지 않으며, SideFX 문서에 따르면 앞으로도 지원할 계획이 없습니다. Karma CPU는 Mantra에서 계승된 셰이딩 언어인 VEX를 기반으로 발전해 온 반면, XPU는 OptiX와 Embree를 기반으로 구축된 별도의 엔진으로서 GPU라는 더 제한적인 환경에서 실행되어야 하기 때문입니다. 대신 XPU는 MaterialX와 USD Preview Surface를 지원합니다. 따라서 다음과 같은 세 가지 선택지가 있습니다. Karma CPU를 계속 사용하며 기존 VEX 셰이더를 유지하거나, MaterialX로 라이브러리를 재구축하여 XPU를 사용할 수 있게 하거나, 혹은 기존 작업에는 VEX를 사용하고 신규 프로젝트에는 MaterialX를 사용하는 방식으로 두 가지를 병행하는 것입니다.
SideFX는 Karma XPU가 VEX 기반 셰이더를 전혀 지원하지 않을 것이라고 명시했습니다. 자세히 알아보겠습니다!
왜 해답은 건축적인가

Karma CPU와 Karma XPU는 두 개의 서로 다른 실행 경로를 가진 동일한 렌더링 대리자이지만 서로 다른 기반을 기반으로 구축되었습니다.
Karma CPU는 Mantra에서 물려받은 Houdini 아티스트의 셰이딩 언어인 VEX를 기반으로 구축되었습니다. 수년간의 스튜디오 셰이더 라이브러리가 여기에 작성되었으며 Karma CPU는 여전히 이를 실행하지만 SideFX는 Karma CPU조차도 대부분의 VEX 셰이딩 기능을 지원하지 않는다고 지적합니다.
Karma XPU는 OptiX 및 Embree를 기반으로 구축된 최신 엔진이며 GPU에서 사용할 수 있는 보다 제한된 환경 내에서 실행됩니다. 이러한 환경으로 인해 XPU는 Karma CPU보다 훨씬 더 많은 레거시 기능에 대한 지원을 중단합니다. 지원하는 셰이딩 시스템인 MaterialX 및 USD Preview Surface는 엔진 자체 내부에서 C++로 구현됩니다.
각 셰이딩 유형이 실행되는 위치
| 셰이딩 유형 | 카르마 중앙 처리 장치 | 카르마 하이브리드 |
| 벡스 (만트라에서 계승됨) | 지원함 | 지원하지 않으며 앞으로도 지원하지 않음 |
| 머티리얼엑스 | 지원함 | 지원함 |
| 범용 장면 기술 프리뷰 서페이스 | 지원함 | 지원함 |
| 원리 기반 셰이더 (벡스 기반) | 지원함 | 완전히 지원하지 않음. 최선의 경우 근사치만 제공됨 |
Principled Shader는 XPU 환경에서도 작동하는 것으로 보이며, 따라서 렌더링된 장면은 대체로 그럴듯하게 보입니다. 다만 CPU 버전과 비교했을 때만 불일치가 확인됩니다. SideFX는 USD Preview Surface, MaterialX, 그리고 Karma 전용 VOP 노드 이외의 모든 요소에 대해서는 작동하지 않거나 기껏해야 근사치로만 표현될 것이라고 설명하고 있습니다.
세 가지 선택지
Karma CPU를 계속 사용하세요. VEX 셰이더 라이브러리가 방대하고 안정적이거나, 씬(scene)의 규모가 커서 어차피 GPU의 VRAM 용량이 병목 현상을 일으킬 상황이라면 합리적인 선택입니다.
MaterialX로 전환하세요. 이를 통해 XPU를 사용할 수 있게 되며, 이는 SideFX가 Karma를 발전시키는 방향과도 일치합니다. 다만, 기존 라이브러리를 다시 구축해야 하는 수고가 따릅니다.
두 방식을 병행하세요. 이미 제작 중인 프로젝트에는 VEX를 유지하고, 신규 프로젝트에는 MaterialX를 사용하는 것입니다. 이때는 철저한 관리가 필요합니다. 단일 샷(shot) 내에서 두 방식을 혼용했다가 나중에 델리게이트(delegate)가 그중 절반을 렌더링하지 못한다는 사실을 뒤늦게 알게 되는 상황은 반드시 피해야 하기 때문입니다.
MaterialX가 아직 수행하지 못하는 것

SideFX 문서에는 Karma의 MaterialX 지원에 대한 몇 가지 현재 제한 사항이 나열되어 있으며, 이러한 제한 사항 중 일부는 이동 가능 여부를 결정할 수 있습니다.
Karma는 MaterialX 라이트 셰이더를 지원하지 않습니다. 볼륨 재질은 VDB와 같은 볼륨 프리미티브에서만 지원되며, Karma는 현재 동일한 프리미티브에 표면 및 볼륨 재질을 동시에 지원하지 않습니다. MaterialX 노드는 색 공간 매개변수를 전달하지만, 이는 USD의 Hydra 인터페이스가 현재 렌더 델리게이트에 전달하지 않는 메타데이터입니다. Karma는 합성 노드를 지원하지 않으며, 재질의 공개 인터페이스에서 매개변수 입력을 연결하는 경우에도 문자열 입력은 허용되지 않습니다.
서비스 중단 없이 마이그레이션하기
- 먼저 셰이더 라이브러리를 정리하세요. 진짜 커스텀 VEX 셰이더와 MaterialX로 재현 가능한 Principled Shader를 구분하세요. 후자는 예상보다 훨씬 많으며, 작업 비용이 적게 드는 부분입니다.
- 다른 작업을 시작하기 전에 대표적인 셰이더 몇 개를 다시 만들어 보세요. 금속, 피부, 유리 셰이더를 통해 필요한 대부분의 정보를 얻을 수 있습니다. 동일한 조명 조건에서 원본 VEX 셰이더와 비교하여 렌더링해 보세요.
- 제작 도중에 변경하지 마세요. 프로젝트별로 위임자를 고정하고 진행 중인 프로젝트는 그대로 두세요.
클라우드 머신 옵션
셰이딩 방식을 결정하고 나면 자연스럽게 하드웨어 사양을 고려하게 됩니다. Karma CPU를 계속 사용한다면 코어 수와 시스템 RAM이 중요합니다. 반면 MaterialX로 전환하여 XPU를 사용한다면 GPU VRAM과 이를 뒷받침할 고성능 CPU가 필요합니다. XPU는 GPU와 CPU를 동시에 활용해 렌더링을 수행하기 때문입니다. iRender와 같은 서비스는 이러한 두 가지 구성 옵션을 모두 제공하며, 사용한 시간(분 단위)만큼 비용을 지불하는 방식을 취하고 있습니다.
iRender를 포함한 그 어떤 하드웨어 구성으로도 Karma XPU에서 VEX 셰이더를 렌더링할 수는 없습니다. 하드웨어 대여는 셰이딩 방식을 결정한 이후에 도움이 되는 것이지, 그 결정을 대신해 주는 것은 아닙니다.
FAQ
- Karma XPU가 VEX 셰이더를 지원하나요?
아니요. SideFX 문서에 따르면 Karma XPU는 VEX 기반 셰이더를 전혀 지원하지 않을 예정입니다. XPU는 OptiX와 Embree를 기반으로 구축된 별도의 엔진으로, GPU의 제한적인 환경에서 작동하기 때문에 Karma CPU보다 더 많은 레거시(구형) 기능에 대한 지원을 제외했습니다. 대신 엔진 내부에서 C++로 구현된 MaterialX와 USD Preview Surface를 지원합니다. - Karma XPU는 어떤 셰이딩 언어를 지원하나요?
MaterialX와 USD Preview Surface, 그리고 Karma Hair Shader와 같은 Karma 전용 VOP 노드를 지원합니다. - VEX 셰이더를 MaterialX로 전환해야 할까요?
이는 작업의 향후 방향성에 달려 있습니다. MaterialX는 SideFX가 Karma를 발전시키고자 하는 방향입니다. 방대하고 안정적인 VEX 라이브러리를 보유하고 있으며 XPU를 당장 사용할 필요가 없는 스튜디오라면, 현재로서는 굳이 전환하지 않고 Karma CPU를 계속 사용해도 무방합니다.