| 608 | } |
| 609 | |
| 610 | void RenderContext::buildAccelerationStructure( |
| 611 | const RtAccelerationStructure::BuildDesc& desc, |
| 612 | uint32_t postBuildInfoCount, |
| 613 | RtAccelerationStructurePostBuildInfoDesc* pPostBuildInfoDescs |
| 614 | ) |
| 615 | { |
| 616 | GFXAccelerationStructureBuildInputsTranslator translator = {}; |
| 617 | |
| 618 | gfx::IAccelerationStructure::BuildDesc buildDesc = {}; |
| 619 | buildDesc.dest = desc.dest->getGfxAccelerationStructure(); |
| 620 | buildDesc.scratchData = desc.scratchData; |
| 621 | buildDesc.source = desc.source ? desc.source->getGfxAccelerationStructure() : nullptr; |
| 622 | buildDesc.inputs = translator.translate(desc.inputs); |
| 623 | |
| 624 | std::vector<gfx::AccelerationStructureQueryDesc> queryDescs(postBuildInfoCount); |
| 625 | for (uint32_t i = 0; i < postBuildInfoCount; i++) |
| 626 | { |
| 627 | queryDescs[i].firstQueryIndex = pPostBuildInfoDescs[i].index; |
| 628 | queryDescs[i].queryPool = pPostBuildInfoDescs[i].pool->getGFXQueryPool(); |
| 629 | queryDescs[i].queryType = getGFXAccelerationStructurePostBuildQueryType(pPostBuildInfoDescs[i].type); |
| 630 | } |
| 631 | auto rtEncoder = getLowLevelData()->getRayTracingCommandEncoder(); |
| 632 | rtEncoder->buildAccelerationStructure(buildDesc, (int)postBuildInfoCount, queryDescs.data()); |
| 633 | mCommandsPending = true; |
| 634 | } |
| 635 | |
| 636 | void RenderContext::copyAccelerationStructure( |
| 637 | RtAccelerationStructure* dest, |
no test coverage detected