When adding a Uniform Buffer Struct that has one 4x4 matrix to a mesh pass, validation will fail, due to a Uniform Buffer Struct mismatch.
This can be reproduced by adding a mesh pass in project-side code. However, it is easier to reproduce by adding the buffer to the Base Pass parameters.
This does not reproduce with "-onethread"
1. Unshelve CL: 39714201, or make the following engine changes:
(Note that this is reproducible by adding a mesh pass with similar structure instead of engine changes)
// BEGIN_CHANGE
BEGIN_UNIFORM_BUFFER_STRUCT(FTestParams, )
SHADER_PARAMETER(FMatrix44f, TestMatrix)
END_UNIFORM_BUFFER_STRUCT()IMPLEMENT_STATIC_UNIFORM_BUFFER_STRUCT(FTestParams, "TestParams", SceneTextures);
// END_CHANGE
BEGIN_SHADER_PARAMETER_STRUCT(FOpaqueBasePassParameters, )
SHADER_PARAMETER_STRUCT_INCLUDE(FViewShaderParameters, View)
// BEGIN_CHANGE
SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FTestParams, PassUBO)
// END_CHANGE
SHADER_PARAMETER_STRUCT_REF(FReflectionCaptureShaderData, ReflectionCapture)
…
END_SHADER_PARAMETER_STRUCT()
…
PassParameters->RenderTargets.ShadingRateTexture = GVRSImageManager.GetVariableRateShadingImage(GraphBuilder, View, FVariableRateShadingImageManager::EVRSPassType::BasePass);
// BEGIN_CHANGE
FTestParams* TestParameters = GraphBuilder.AllocParameters<FTestParams>();
TestParameters->TestMatrix = FMatrix44f::Identity;
PassParameters->PassUBO = GraphBuilder.CreateUniformBuffer(TestParameters);
// END_CHANGE
const bool bShouldRenderView = View.ShouldRenderView();…
SkyPassPassParameters->ReflectionCapture = View.ReflectionCaptureUniformBuffer;
// BEGIN_CHANGE
SkyPassPassParameters->PassUBO = GraphBuilder.CreateUniformBuffer(TestParameters);
// END_CHANGE
// Remove all but the SceneColor
```
2. Compile and launch any project, with the debugger attached.
3. Observe the failed check:
"Uniform Buffer FOpaqueBasePassUniformParameters was added multiple times to the binding array but with different values."
> UnrealEditor-RHI.dll!FUniformBufferStaticBindings::AddUniformBuffer(FRHIUniformBuffer * UniformBuffer) Line 76 C++
[Inline Frame] UnrealEditor-RenderCore.dll!FRDGParameterStruct::GetStaticUniformBuffers::__l2::<lambda_1>::operator()(FRDGUniformBufferBinding) Line 28 C++
UnrealEditor-RenderCore.dll!FRDGParameterStruct::EnumerateUniformBuffers<`FRDGParameterStruct::GetStaticUniformBuffers'::`2'::<lambda_1>>(FRDGParameterStruct::GetStaticUniformBuffers::__l2::<lambda_1> Function) Line 50 C++
UnrealEditor-RenderCore.dll!FRDGParameterStruct::GetStaticUniformBuffers() Line 32 C++
[Inline Frame] UnrealEditor-RenderCore.dll!FRDGDispatchPassBuilder::
(FRDGDispatchPass *) Line 745 C++
UnrealEditor-RenderCore.dll!FRDGBuilder::SetupDispatchPassExecute() Line 2953 C++
[Inline Frame] UnrealEditor-RenderCore.dll!FRDGBuilder::Execute::__l59::<lambda_15>::operator()() Line 2020 C++
[Inline Frame] UnrealEditor-RenderCore.dll!Invoke(FRDGBuilder::Execute::__l59::<lambda_15> &) Line 47 C++
UnrealEditor-RenderCore.dll!UE::Tasks::Private::TExecutableTaskBase<`FRDGBuilder::Execute'::`59'::<lambda_15>,void,void>::ExecuteTask() Line 873 C++
UnrealEditor-RenderCore.dll!UE::Tasks::Private::FTaskBase::TryExecuteTask() Line 504 C++
[Inline Frame] UnrealEditor-RenderCore.dll!UE::Tasks::Private::FTaskBase::Init::__l2::<lambda_1>::operator()() Line 185 C++
[Inline Frame] UnrealEditor-RenderCore.dll!LowLevelTasks::FTask::Init::__l13::<lambda_1>::operator()(const bool) Line 499 C++
[Inline Frame] UnrealEditor-RenderCore.dll!Invoke(LowLevelTasks::FTask::Init::__l13::<lambda_1> &) Line 47 C++
[Inline Frame] UnrealEditor-RenderCore.dll!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`UE::Tasks::Private::FTaskBase::Init'::`2'::<lambda_1>>'::`13'::<lambda_1>,0>::Call(void *) Line 162 C++
UnrealEditor-RenderCore.dll!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::TTaskDelegateImpl<`LowLevelTasks::FTask::Init<`UE::Tasks::Private::FTaskBase::Init'::`2'::<lambda_1>>'::`13'::<lambda_1>,0>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> & Destination, void * InlineData, unsigned int DestInlineSize, bool <Params_0>) Line 171 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48>::CallAndMove(LowLevelTasks::TTaskDelegate<LowLevelTasks::FTask * __cdecl(bool),48> &) Line 308 C++
UnrealEditor-Core.dll!LowLevelTasks::FTask::ExecuteTask() Line 627 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::ExecuteTask(LowLevelTasks::FTask * InTask) Line 245 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::FScheduler::TryExecuteTaskFrom(LowLevelTasks::Private::FWaitEvent *) Line 457 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::WorkerLoop(LowLevelTasks::Private::FWaitEvent * WorkerEvent, LowLevelTasks::Private::TLocalQueueRegistry<1024,1024>::TLocalQueue * WorkerLocalQueue, unsigned int WaitCycles, bool bPermitBackgroundWork) Line 514 C++
[Inline Frame] UnrealEditor-Core.dll!LowLevelTasks::FScheduler::WorkerMain(LowLevelTasks::Private::FWaitEvent * WorkerEvent, LowLevelTasks::Private::TLocalQueueRegistry<1024,1024>::TLocalQueue * WorkerLocalQueue, unsigned int WaitCycles, bool bPermitBackgroundWork) Line 571 C++
UnrealEditor-Core.dll!LowLevelTasks::FScheduler::CreateWorker::__l2::<lambda>() Line 75 C++
[Inline Frame] UnrealEditor-Core.dll!UE::Core::Private::Function::TFunctionRefBase<UE::Core::Private::Function::TFunctionStorage<1>,void __cdecl(void)>::operator()() Line 470 C++
UnrealEditor-Core.dll!FThreadImpl::Run() Line 69 C++
UnrealEditor-Core.dll!FRunnableThreadWin::Run() Line 159 C++
UnrealEditor-Core.dll!FRunnableThreadWin::GuardedRun() Line 71 C++
[External Code]
How does TextureRenderTarget2D get TArray<uint8> type data?
Why does the REMOVE method of map container remove elements have memory leaks?
How do I set a material as a post-processing material?
What is the cause of the packaging error falling back to 'GameUserSettings' in ue5?
How to delete some elements correctly when deleting an array loop?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-247704 in the post.
0 |
Component | UE - Rendering Architecture - RHI |
---|---|
Affects Versions | 5.5 |
Created | Feb 12, 2025 |
---|---|
Resolved | Feb 14, 2025 |
Updated | Feb 18, 2025 |