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

D3D12 DXR光线追踪示例全屏失效及ProceduralGeometry渲染异常

DXR ProceduralGeometry示例迁移后程序化几何体半透明、帧提交异常问题排查

环境说明

  • 开发环境:VS2022
  • 硬件设备:搭载i9处理器、Intel Iris Xe核显、RTX3070独显的笔记本电脑,原生屏幕刷新率165Hz,分辨率2560x1440
  • 系统版本:Windows 11
  • 研究内容:DirectX 12 Ultimate DXR API实时光线追踪基础技术,基于官方GitHub仓库的D3D12光线追踪示例开展调试

前置适配情况

官方D3D12光线追踪示例原生面向Windows 10开发,在混合显卡架构的Windows 11设备上存在兼容性问题。我在创建设备阶段向D3D12_INFO_QUEUE_FILTER中添加D3D12_MESSAGE_ID_RESOURCE_BARRIER_MISMATCHING_COMMAND_LIST_TYPE过滤项后,Debug构建版本可正常启动运行,但存在原生功能缺陷:所有示例均不支持Alt+Enter触发全屏(无边框窗口)切换,始终保持窗口化运行。

此前我通过将光线追踪代码迁移至基于Windows桌面版DirectX Tool Kit开发的自定义模板(该模板已正确实现全屏切换逻辑)解决全屏问题,已成功在窗口化、全屏两种模式下正常运行HelloWorld、SimpleLighting两个基础示例。

故障表现

迁移引入交集着色器的ProceduralGeometry示例时出现渲染异常:

  1. 原生示例在带边框窗口模式下可正常渲染全场景
  2. 代码迁移至支持全屏的模板后,三角形地平面可正常渲染,但分形金字塔外围显示半透明包围盒,其余所有程序化几何体均呈现半透明效果;元球(metaballs)包围盒每隔数秒短暂闪现后消失
  3. 该异常在窗口化、全屏模式下均存在,全屏模式下故障程度更严重,会额外出现窗口化模式下不存在的随机画面损坏现象

通过冻结场景逐帧排查,已确认半透明效果的直接成因:显示端按顺序提交了未完成渲染的中间帧,帧序列如下:

  • 仅包含三角形地平面四边形的帧
  • 包含地平面几何体、不透明分形金字塔包围盒的帧
  • 包含地平面、分形金字塔包围盒、不透明元球包围盒的帧
  • 包含所有不透明几何体、无包围盒的完整渲染帧
    在165Hz原生刷新率下,未完成渲染的中间帧全部被提交到显示端,导致程序化几何体和包围盒始终可见,叠加后呈现半透明“透视”效果。

已做修改与排查进展

我对官方示例仅做了两处修改:

  • 添加前述Windows 11兼容性消息过滤项
  • 将渲染逻辑接入已验证可正常实现全屏渲染的自定义模板(官方原生示例未实现、也未考虑全屏渲染逻辑)

目前已排查多日未定位根因,寻求有相关DXR开发经验的技术人员提供排查思路与解决方案。


内容的提问来源于stack exchange,提问作者Maico De Blasio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 08:45:35