You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在非RTX显卡上实现光线追踪?WARP使用异常排查

在非RTX显卡上启用DirectX光线追踪的解决方案

核心问题分析

你遇到的Raytracing not supported on device错误,本质是当前使用的WARP设备版本不支持光线追踪特性。WARP对光线追踪的支持并非无条件,它依赖特定的系统环境和配置。

关键前提条件

WARP支持DirectX光线追踪的必要条件:

  • 系统必须是Windows 10 2004(版本19041)及以上,或Windows 11。旧版Windows的WARP驱动未集成光线追踪功能。
  • 必须使用DirectX 12 Ultimate对应的API,创建设备时需至少请求D3D_FEATURE_LEVEL_12_1的特性级别。

排查与修复步骤

  • 确认系统版本:按下Win+R输入winver,检查版本号是否≥19041。若低于此版本,需升级Windows到最新兼容版本。
  • 正确枚举WARP适配器:不要仅依赖代码中的m_useWarpDevice标志,手动枚举系统适配器并明确选择WARP设备:
    IDXGIFactory6* pFactory = nullptr;
    CreateDXGIFactory1(IID_PPV_ARGS(&pFactory));
    IDXGIAdapter* pWarpAdapter = nullptr;
    for (UINT i = 0; pFactory->EnumAdapterByGpuPreference(i, DXGI_GPU_PREFERENCE_MINIMUM_POWER, IID_PPV_ARGS(&pWarpAdapter)) != DXGI_ERROR_NOT_FOUND; i++) {
        DXGI_ADAPTER_DESC desc;
        pWarpAdapter->GetDesc(&desc);
        if (wcsstr(desc.Description, L"WARP") != nullptr) {
            break;
        }
        pWarpAdapter->Release();
        pWarpAdapter = nullptr;
    }
    // 使用pWarpAdapter创建设备
    HRESULT hr = D3D12CreateDevice(pWarpAdapter, D3D_FEATURE_LEVEL_12_1, IID_PPV_ARGS(&pDevice));
    
  • 验证光线追踪特性支持:创建设备后,主动查询D3D12_FEATURE_D3D12_OPTIONS5:
    D3D12_FEATURE_DATA_D3D12_OPTIONS5 options5 = {};
    if (SUCCEEDED(pDevice->CheckFeatureSupport(D3D12_FEATURE_D3D12_OPTIONS5, &options5, sizeof(options5)))) {
        if (options5.RaytracingTier >= D3D12_RAYTRACING_TIER_1_0) {
            // 光线追踪可用
        }
    }
    
  • 修正dxcpl.exe配置:打开dxcpl.exe后,在“Edit List”中添加你的应用程序路径,勾选“Force WARP”选项,确保“Feature Level Limit”设置为12_1或更高,保存后重启应用。

替代方案

若WARP仍无法启用光线追踪,可考虑:

  • 使用Intel Embree库实现CPU端的光线追踪(无需GPU支持)。
  • 自行编写CPU光线追踪逻辑,适合简单场景的演示需求。

内容的提问来源于stack exchange,提问作者mandaxyz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 19:09:33