1. D3D12_RAY_FLAG_NONE: 无特殊标志。
2. D3D12_RAY_FLAG_FORCE_OPAQUE: 强制所有物体都被视为不透明。
3. D3D12_RAY_FLAG_FORCE_NON_OPAQUE: 强制所有物体都被视为透明。
4. D3D12_RAY_FLAG_ACCEPT_FIRST_HIT_AND_END_SEARCH: 命中第一个物体后立即结束搜索。
5. D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER: 跳过最近的命中着色器。
6. D3D12_RAY_FLAG_CULL_BACK_FACING_TRIANGLES: 剔除背对面的三角形。
7. D3D12_RAY_FLAG_CULL_FRONT_FACING_TRIANGLES: 剔除正对面的三角形。
8. D3D12_RAY_FLAG_CULL_OPAQUE: 剔除不透明物体。
9. D3D12_RAY_FLAG_CULL_NON_OPAQUE: 剔除透明物体。
这些标志用于配置光线追踪命中操作的行为,例如在搜索过程中跳过某些着色器或剔除特定类型的物体。
以下是一个示例代码片段,演示了如何使用 D3D12_RAY_FLAGS 枚举:
#include <d3d12.h>
// 其他代码...
// 配置光线追踪命中操作的标志
D3D12_RAY_FLAGS rayFlags = D3D12_RAY_FLAG_NONE;
rayFlags |= D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER; // 例如,跳过最近的命中着色器
// 在调用光线追踪函数时使用 rayFlags
// 例如:D3D12BuildRaytracingAccelerationStructure
在这个例子中,通过将 rayFlags 设置为 D3D12_RAY_FLAG_SKIP_CLOSEST_HIT_SHADER,表示在光线追踪搜索过程中跳过最近的命中着色器。你可以根据需要组合或更改不同的标志。请注意,具体的标志及其用途可能会随着 Direct3D 版本的更新而有所改变,因此建议查阅最新的官方文档或 SDK 版本。
转载请注明出处:http://www.pingtaimeng.com/article/detail/26075/Win32 API/D3d12.h/D3D12_RAY_FLAGS