Karma XPU
Houdini의 빠르고 현대적인 XPU 렌더 엔진.
개요(Overview)
Karma XPU는 Karma 렌더러에서 선택 가능한 엔진 중 하나로, CPU와 GPU 자원을 동시에 활용합니다. 감지 가능한 호환 디바이스를 모두 사용하며, 여러 개의 GPU도 함께 사용할 수 있습니다. 렌더 중 특정 디바이스가 실패(예: GPU 메모리 부족)하더라도, 나머지 디바이스(CPU 포함)가 작업을 이어 받아 프레임 렌더를 완료합니다. 어떤 조합의 디바이스를 사용하든, XPU 엔진은 동일한 결과를 내도록 설계되어 있습니다.
Karma XPU는 내부적으로 OptiX(GPU) 엔진과 Embree(CPU) 엔진으로 나뉩니다. 멀티 GPU 시스템에서는 뷰포트에 GPU 개수에 맞는 OptiX 디바이스들이 표시됩니다. 중요: 각 GPU는 개별 디바이스로 취급되며, GPU 메모리는 풀링(공유)되지 않습니다.
팁: OptiX GPU만 사용하고 싶다면 환경 변수 KARMA_XPU_DEVICES=optix 를 설정하세요(자세한 내용은 “디바이스 활성/비활성” 참고).
Karma에서 **샘플링(sampling)**은 렌더 시간과 품질에 큰 영향을 주는 핵심 개념입니다(샘플링 상세는 Karma User Guide 참고).
GPU 가속을 쓰기 때문에 XPU는 CPU 전용 엔진에 비해 매우 빠를 수 있지만, 기능 제약이 있거나 CPU 전용 엔진과 출력이 일부 다를 수 있습니다. 즉, XPU는 CPU 엔진의 완전한 대체가 아니라 제한된 기능을 가진 고성능 대안입니다.
지원 하드웨어(Supported Hardware)
•
현재 Karma XPU는 CPU + NVIDIA GPU만 지원합니다(다른 GPU 하드웨어 지원은 향후 예정).
•
NVIDIA 사용자는 드라이버 570 이상이 필요합니다.
◦
Windows: 575+ 강력 권장
◦
Maxwell/Pascal/Volta(Windows/Linux): 580+ 강력 권장
◦
GPU는 Compute Capability 5.0(Maxwell) 이상이 필요합니다.
•
NVIDIA GPU가 없는 머신(예: Apple Silicon)은 Embree CPU 디바이스만 사용합니다.
셰이딩 개요(Shading Overview)
Karma XPU용 머티리얼 제작은 Karma Material Builder 사용을 권장합니다. 이 방식이 XPU와 호환되는 Karma/MaterialX 노드 접근을 가장 잘 보장합니다. MaterialX만 엄격히 쓰려면 USD MaterialX Builder를 사용하세요.
주의: XPU는 기본적으로
•
USD Preview Surface, MaterialX,
•
그리고 Karma 전용 VOP(예: Karma Hair Shader)
만 지원합니다. 그 외(예: Principled Shader)는 동작하지 않거나 근사치 수준일 수 있습니다.
또한 XPU는 시작 시 셰이더를 디바이스별 포맷으로 컴파일해야 합니다. 새 씬 로드/새 기능 활성화 시 일시적으로 멈칫(stutter) 할 수 있으며, 컴파일 결과는 캐시되므로 같은 씬은 두 번째부터 훨씬 빨라집니다. 최초 사용/새 설치/드라이버 변경 상황에서는 초기 컴파일이 1~2분 걸릴 수 있습니다. 컴파일 중 정보는 뷰포트 우상단에 표시됩니다.
팁: “Karma XPU pre-compiling” 기능을 사용하면 초기 컴파일 대기 시간을 줄여 시작 속도와 사용 중 끊김을 완화할 수 있습니다.
사용 방법(How To)
Solaris 뷰어에서 Karma XPU로 렌더링
1.
뷰포트의 Viewport Options 메뉴에서 Karma XPU 선택
2.
디스플레이 툴바의 Display Options(또는 뷰어에서 D) 열기
3.
Render 탭에서 Rendering Engine = XPU Engine 설정
4.
창 닫기
※ 이 렌더 설정은 현재 .hip 파일에 저장됩니다.
뷰포트에서 디바이스/렌더 통계 보기
1.
Display Options(또는 D)
2.
Guides 탭에서 Render Stats 활성화
3.
창 닫기
Karma XPU로 “풀 렌더” 수행
•
Karma Render Settings LOP에서 Engine Settings = XPU Parameters로 설정
렌더 커널(커널/커널 캐시) 사전 컴파일
•
Houdini 메인 메뉴 → Render 드롭다운 → Pre-compile Karma XPU Render Kernels
뷰포트(Viewport)
뷰포트 우상단(렌더 진행 표시 아래)에 활성 디바이스가 표시됩니다. 디바이스는 OptiX 또는 EmbreeCPU로 나뉘며, 대괄호 안 상태 값은 다음 중 하나입니다.
•
idle: 작업 중 아님
•
init: 초기화 중
•
disabled: 비활성화됨
•
fail: 실패
•
퍼센트 값: 현재 이미지에 해당 디바이스가 기여한 비율(일반적으로 GPU OptiX가 CPU보다 훨씬 큰 비중을 차지)
OptiX 컴파일 중에도 우상단에 관련 통계가 표시되며, Compiled Render Kernel Cache out of Date가 보이면 사전 컴파일 기능을 사용해 추가 컴파일 오버헤드를 줄일 수 있다는 뜻입니다.
지원 기능 및 제한(Supported features and limitations)
지원되는 렌더 설정(Render settings)
Karma XPU는 아래 렌더 설정들을 지원합니다(“render settings” 항목).
•
Enable Denoising
•
Disable Motion Blur
•
Disable Depth of Field
•
Cancel Render on No Working GPU Devices
•
Path Traced Samples
•
Russian Roulette Cutoff Depth
•
Light Sampling Mode / Quality
•
Image Blur
•
Ray Bias / Automatic Ray Bias
•
Constrain by Maximum Roughness
•
Color Limit / Shared Color Limit / Indirect Color Limit
•
Automatic Headlight Creation
•
Background Holdouts Occlude Shadows
•
Override Lighting / Disable Lighting
•
Dicing Camera / Offscreen Quality / Dicing Quality Scale
•
Pixel Filter Size
•
Pixel Oracle(Variance Oracle 및 관련 컨트롤)
•
DCM Use Hit Distance
•
IPR Downsample Factor(프리뷰 해상도)
•
IPR Reserve Threads(XPU 반응성 향상을 위해 2~3 권장)
•
IPR Continuous Dicing
•
Random Seed
지원되는 렌더 지오메트리 설정(Render geometry settings)
아래 “render geometry settings”를 지원합니다(일부 발췌).
•
Motion Blur 관련: Enable Motion Blur, Motion Samples from Stage, Geometry/Transform Time Samples, Motion Blur Style, Instance Motion Samples
•
볼륨/샘플링: Volume Velocity Blur Scale, Volume Step Rate, Volume Shadow Step Rate, Volume Sampling Field 등
•
레이 제한: Diffuse/Reflection/Refraction/SSS/Volume Limit 범위 설정
•
Holdout/Shadow 관련: Holdout Mode, Fix Shadow Terminator, Bump Shadow Terminator 등
•
굴절/SSS/카우스틱: Enable Internal Reflection, Thinwall at Refract Limit, SSS Traceset(씬당 최대 4), Enable Caustics, Fake Caustics 관련 옵션 등
•
포인트/커브/디싱: Render Points As, Width Scale, Cull Backface(일부 프림만), Dicing Quality, Dicing Min/Max Depth, Dicing Predisplace
•
True Displacements: 특정 MaterialX 서피스 노드에서 float/scalar displacement만 지원
인터랙티브 뷰어 기능
•
선택/하이라이트/USD purposes 지원
모션 블러/카메라
•
라이트/카메라/트랜스폼/디포메이션/볼륨 모션블러 등 전반 지원(볼륨은 Lookup Offset 모드만)
•
Physical Lens Shader 포함 카메라 설정 지원
지원 프림/지오메트리
•
USD Mesh/Polygon 프림 지원
•
USD BasisCurves 프림: 타입/렌더 방식/메모리 최적화 옵션 등 제약 존재(예: rounded-tubes만, backface culling 비활성 불가 등)
•
USD Points 프림: disk/sphere/oriented point 지원(Render Points As 속성 이용)
•
USD Volumes: XPU Pyro Preview VOP / Karma Volume VOP / Karma Whitewater VOP만 동작, 일부 필터/파라미터 미지원, VDB 포인트/ISO 서피스 직접 렌더 등
•
Uniform Volumes: 특정 조건에서만 지원
•
Gaussian Splats(alpha): Bake GSplat SOP로 임포트, 그림자 가능, 리라이팅/LPE 미지원 등(알파 기능)
•
Nested Instancing, Cryptomatte, Deep Output, UsdShadeCoordSysAPI 기반 좌표계, Karma Sky Atmosphere LOP 지원
머티리얼/셰이딩(Materials/shading)
권장: Karma Material Builder 및 그에 딸린 셰이더 사용을 강력 권장합니다. Principled Surface 같은 다른 셰이더 타입은 지원이 없거나 부분 지원이며, 많은 경우 내부적으로 **USDPreviewSurface(제한된 기능)**로 변환되면서 예상치 못한 결과가 나올 수 있습니다. 텍스처 섹션도 함께 참고하세요.
요약(Summary) — 터미널 노드 지원
•
Polymesh/Curves/Points: MtlX Standard Surface / MtlX OpenPBR Surface / MtlX Surface Unlit / USD Preview Surface를 터미널 노드로 지원
•
Curves: Karma Hair VOP / Karma Fur VOP 터미널 노드 지원
•
Volumes: XPU Pyro Preview VOP / Karma Volume VOP / Karma Whitewater VOP 터미널 노드 지원
•
USD 표준 셰이딩 노드(예: USD Preview Surface VOP, PrimVar Reader, Transform 2D, UV Texture 등) 지원
•
MaterialX 대부분 지원
◦
표준 라이브러리 및 컴파운드/보조 노드 지원
◦
MtlX USD Preview Surface / Standard Surface / OpenPBR Surface 지원
◦
MtlX Mix VOPs로 최대 16개까지 블렌딩 지원(단, 일부 속성 혼합 제한은 Details 참고)
레이 임포트(Ray Import) 지원
Karma Ray Import VOP에서 일부 ray:* 값(월드 스페이스)이 지원됩니다(예: ray:P, ray:D, ray:time, ray:near/far, ray:hitP*, ray:hitN*, ray:objectid, ray:level 등).
상세(Details) — 주의/미구현/무시되는 항목 예시
•
일부 MaterialX 노드의 Index 파라미터가 현재 무시됨
•
UV 스트림 이름: uv 또는 st(우선순위 순으로 선택)
•
미구현 MaterialX 표준 라이브러리 노드(예: Array Append, Curve Adjust 등)
•
USD Preview Surface: Occlusion 파라미터 무시
•
MtlX Standard/OpenPBR: Transmission Scatter/Anisotropy 무시, Thin Walled 처리 차이, SSS 지원 프림 제한 등
•
MtlX Mix 블렌딩: SSS 또는 transmission-depth/absorption 속성 혼합 미지원
•
Karma Fog Box LOP: Volume Samples 파라미터 무시
텍스처(Textures)
•
셰이더 텍스처는 디스크에서 **타일 단위(예: 128×128)**로 온디맨드 로드되며, GPU 메모리에도 타일 단위로 적재됩니다. 렌더 도중 GPU 메모리가 꽉 차면 XPU는 비필수 메모리를 퇴거(eviction) 시키며 렌더를 계속합니다. 이 “eviction 상태”에서는 GPU가 눈에 띄게 느려질 수 있습니다. 렌더 통계에서 GPU 메모리 사용량 및 eviction 발생 여부를 모니터링할 수 있습니다.
•
GPU 타일/스파스 텍스처는 환경 변수 KARMA_XPU_OPTIX_SPARSE_TEXTURES로 비활성화 가능
•
지오메트리 primvar 데이터도 온디맨드 로드
•
조명(라이트)에서 쓰는 텍스처는 타일 로딩/eviction(out-of-core) 시스템을 사용하지 않음
•
텍스처에 mipmap이 없으면 자동 mipmapping이 적용되며, 결과가 원본 옆에 RAT 포맷 캐시로 저장될 수 있음(HOUDINI_TEXTURE_DISK_CACHE 참고)
•
mipmap 비활성화: KARMA_XPU_DISABLE_MIPMAPS
•
셰이더 텍스처 최대 해상도 제한: KARMA_XPU_MAX_SHADER_TEXTURE_RES (0=무제한, 예: 128이면 최대 128×128)
•
라이트 텍스처 최대 해상도 제한: KARMA_XPU_MAX_LIGHTING_TEXTURE_RES (기본 8192)
•
UDIM: 최대 10×10 범위( KARMA_XPU_MAX_UDIM_U, KARMA_XPU_MAX_UDIM_V로 조절)
•
OptiX는 GPU 하드웨어 선형 필터링을 사용하며, 특히 노멀맵에서 아티팩트가 생길 수 있습니다. 노멀맵은 MtlxImage에서 cubic filtering을 권장. 또는 KARMA_XPU_OPTIX_HQ_LINEAR_FILTERING로 고품질 선형 필터링을 강제할 수 있으나 성능 손실이 있습니다.
라이팅(Lighting)
•
지원 라이트 타입: Point, Rectangle, Sphere, Disk, Cylinder, Distant, Dome, Karma Physical Sky
•
Point/Curve/PolyMesh/Volume 지오메트리 라이트 지원
•
셰이핑 기능(스포트, 바른도어, 포커스, IES 프로파일 등) 지원
•
LightLinking 지원
•
ShadowLinking 지원(씬당 최대 4개 규칙/그룹)
•
Portal Lights 지원(포털 지오메트리는 폴리곤이 서로 겹치지 않게 권장)
•
Light Filters 지원(Karma Light Filter Gel/Gobo/Barndoor/Attenuation 등)
•
라이트 프로퍼티는 “base properties” 탭 전부 및 shadow/karma 탭 일부 항목을 지원(샘플링/텍스처/포털 관련 설정 등)
•
Dome 라이트는 현재 lat-long 환경맵 텍스처만 지원(육면체/큐브맵 계열은 미지원)
AOVs
•
LPEs 지원(그림자/홀드아웃 포함)
•
UPEs(utility path expressions) 지원
•
Background Plate LOP 지원
•
AOV가 많으면 XPU 성능이 느려질 수 있으며, 이 경우 KARMA_XPU_NUM_PER_DEVICE_BLENDING_THREADS(기본 1)를 2~4 등으로 올리면 도움이 될 수 있음
•
셰이더는 Karma AOV VOP로 AOV 출력 가능
•
커스텀 user primvars 지원
•
AOV 픽셀 필터 지원: accumulate, ubox, minmax:min/max/zmin/zmax 등
•
하드코딩 AOV 예: Cf, Af, vex:export_basecolor(albedo)
•
하드코딩 ray AOV(월드 스페이스): ray:P, ray:D, ray:time, ray:near/far, ray:contrib, ray:hit*, ray:objectid 등 다수
•
하드코딩 stat AOV: stat:indirectraycount, stat:cputime
•
하드코딩 primvar AOV(로컬 스페이스): primvar:P, primvar:N, primvar:uv, primvar:st 등
디바이스 활성/비활성(Enabling/Disabling devices)
아래 환경 변수들은 OS 환경, json package, 또는 houdini.env에 설정할 수 있습니다.
•
KARMA_XPU_DISABLE_OPTIX_DEVICE
◦
설정 시 OptiX GPU 디바이스를 생성하지 않음
•
KARMA_XPU_DISABLE_EMBREE_DEVICE
◦
설정 시 Embree CPU 디바이스를 생성하지 않음
•
KARMA_XPU_DEVICES
◦
활성화할 디바이스 ID를 쉼표로 나열(자세한 내용은 해당 env var 문서 참고)
설정해줄것!



