DirectX (DX) is a graphics API used by Unreal Engine (UE) to interface with the GPU. Choosing the right DirectX version affects performance, stability, and feature support, especially in Pixel Streaming or remote GPU streaming environments like Eagle 3D.
|
Feature |
DirectX 11 (DX11) |
DirectX 12 (DX12) |
|---|---|---|
|
Release Year |
2009 |
2015 |
|
API Type |
High-level |
Low-level |
|
CPU Overhead |
Higher |
Lower |
|
Multi-core GPU Usage |
Limited |
Optimized |
|
Stability |
Very stable |
Can be unstable in some builds |
|
Feature Support |
Mature, widely supported |
Advanced (Nanite, Lumen HWRT, SM6 shaders) |
|
Streaming / Remote Use |
Recommended |
Needs careful setup |
|
Hardware Requirements |
Most GPUs |
Modern GPUs only (Feature Level 12_0+) |
DirectX 11 (DX11)
Pros
-
Stable and mature, widely supported across Windows GPUs.
-
Works consistently with Pixel Streaming and remote GPU streaming.
-
Lower chance of unexpected crashes or frame drops in remote environments.
-
Better driver compatibility for older hardware.
Cons
-
Higher CPU overhead due to single-threaded command submission.
-
Doesn’t utilize modern GPU multi-core capabilities fully.
-
May lack support for advanced UE features like Nanite and hardware ray tracing.
Best Use Cases
-
Pixel Streaming / Web-based streaming (e.g., Eagle 3D)
-
Projects that prioritize stability and compatibility
-
Production environments with varying client GPU specs
DirectX 12 (DX12)
Pros
-
Low-level API with lower CPU overhead.
-
Optimized for multi-core CPUs and modern GPUs.
-
Supports advanced UE features: Nanite, Lumen (hardware ray tracing), Shader Model 6.
-
Better GPU scaling for extremely complex scenes.
Cons
-
Sensitive to driver versions and GPU support.
-
Can cause frame pacing issues in Pixel Streaming builds.
-
Streaming servers may require specific configuration.
-
Debugging DX12 issues is harder than DX11.
Best Use Cases
-
High-end local PC gaming.
-
CPU-bound scenarios where DX11 becomes a bottleneck.
-
Unreal Engine projects requiring Nanite, Lumen HWRT, or Shader Model 6.
-
Remote streaming only if server supports DX12 and proper codecs.
DirectX 12 Considerations for Streaming
Codec Selection
When using DX12 for Pixel Streaming or remote streaming, the choice of video codec is critical because DX12 can stress the GPU differently than DX11.
|
Codec |
Recommended Use |
Notes |
|---|---|---|
|
H.264 (AVC) |
Default, compatible with most browsers and streaming clients |
Lower GPU encoding efficiency in DX12; may need tuning |
|
H.265 (HEVC) |
Recommended for DX12 in modern GPUs |
Better compression, lower bitrate, better for high-res/high-fidelity DX12 scenes; requires hardware HEVC encoder |
|
VP8 / VP9 / AV1 |
Only if browser supports natively |
Less common in Windows DX12 + Unreal setup |
Recommendation:
-
Use H.264 for maximum compatibility, especially for web streaming.
-
Use H.265 if the server GPU and clients support it, as it handles DX12’s higher GPU load better.
DX12 Streaming Tips
-
Test locally first: Launch the packaged build with
-d3d12and confirm the GPU renders correctly. -
GPU encoding: Ensure the server GPU supports DX12 + hardware encoding for H.264/H.265.
-
Fallback: If DX12 build fails to stream, use DX11 for Pixel Streaming. DX12 may break streaming pipelines due to driver or RHI issues.
-
Flags for Unreal launch:
YourProject.exe -d3d12 -PixelStreamingEnableH264or for H.265:
YourProject.exe -d3d12 -PixelStreamingEnableHEVC
Recommendations
|
Scenario |
DirectX Version |
Notes |
|---|---|---|
|
Pixel Streaming |
DX11 |
Most stable, fewer dropped frames |
|
Local high-end UE project |
DX12 |
Best performance and advanced UE features |
|
CPU-bound heavy scenes |
DX12 |
Utilizes multiple threads efficiently |
|
Older GPUs or mixed client support |
DX11 |
Ensures all users can run the app |
TL;DR:
-
Use DX11 for streaming stability
-
Use DX12 for advanced features / local performance
-
Choose H.264 for web streaming, H.265 if hardware supports it and bandwidth optimization is critical