Hi there. A crashing error appeared today as I’m trying to get raytracing working in a game that’s on 4.25-Plus, with some modifications pulled from Nvidia’s NVRTX github. Thus it’s probably something specific to my code. So I’m mostly looking for tips on how to investigate, rather than someone just knowing what the issue is. It happens when trying to load some of the D3D12 raytracing shaders.
The default error is E_INVALIDARG.
The -dxdebug error is:
“ID3D12Device::CreateStateObject: Hash check failed for DXILibrary.pShaderBytecode: 0x0000022A07928700. A typical cause of this is unsigned bytecode. To enable signing by the compiler, ensure DXIL.dll is next to DxCompiler.dll.”
The callstack is:
UE4Editor-D3D12RHI.dll!CreateRayTracingStateObject(ID3D12Device5 * RayTracingDevice, const TArrayView<FDXILLibrary const *> & ShaderLibraries, const TArrayView<wchar_t const *> & Exports, unsigned int MaxPayloadSizeInBytes, const TArrayView<D3D12_HIT_GROUP_DESC const> & HitGroups, const ID3D12RootSignature * GlobalRootSignature, const TArrayView<ID3D12RootSignature *> & LocalRootSignatures, const TArrayView<unsigned int> & LocalRootSignatureAssociations, const TArrayView<D3D12_EXISTING_COLLECTION_DESC> & ExistingCollections, D3D12_STATE_OBJECT_TYPE StateObjectType) Line 370 C++ UE4Editor-D3D12RHI.dll!FD3D12RayTracingPipelineCache::FShaderCompileTask::DoTask(ENamedThreads::Type CurrentThread, const TRefCountPtr<FGraphEvent> & MyCompletionGraphEvent) Line 622 C++ UE4Editor-D3D12RHI.dll!TGraphTask<FD3D12RayTracingPipelineCache::FShaderCompileTask>::ExecuteTask(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & NewTasks, ENamedThreads::Type CurrentThread) Line 849 C++ [Inline Frame] UE4Editor-Core.dll!FBaseGraphTask::Execute(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & CurrentThread, ENamedThreads::Type) Line 516 C++ UE4Editor-Core.dll!FTaskThreadAnyThread::ProcessTasks() Line 1039 C++ UE4Editor-Core.dll!FTaskThreadAnyThread::ProcessTasksUntilQuit(int QueueIndex) Line 863 C++ [Inline Frame] UE4Editor-Core.dll!FTaskThreadBase::Run() Line 528 C++
Any tips on how to investigate this? I confirmed that I have DXIL.dll next to each DxCompiler.dll on my machine. I deleted all of my DerivedDataCache folders to trigger a rebuild of all the shaders, to no avail. I had everything running last week, and didn’t change anything significant that I can recall since then. The shader being compiled is MaterialCHS.