Hi everyone, I’m trying to convert my UE4 Project to an UE5 Project. Unfortunetly sth. with the Lidar component changed or i might have overseen something. There is an error when i want to retrieve the pixel colours for my pointcloud. I got the following crash report:
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffffffffff
UnrealEditor_D3D12RHI!FD3D12DynamicRHI::ReadSurfaceDataNoMSAARaw() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12RenderTarget.cpp:702]
UnrealEditor_D3D12RHI!FD3D12DynamicRHI::RHIReadSurfaceData() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12RenderTarget.cpp:1195]
UnrealEditor_RHI!FRHICommandListImmediate::ReadSurfaceData() [D:\build\++UE5\Sync\Engine\Source\Runtime\RHI\Public\RHICommandList.h:4578]
UnrealEditor_Engine!TEnqueueUniqueRenderCommandType<`FTextureRenderTargetCubeResource::ReadPixels'::`2'::ReadSurfaceCommandName,<lambda_8cf822a1924661640e46248ac71b872c> >::DoTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Public\RenderingThread.h:193]
UnrealEditor_Engine!TGraphTask<TEnqueueUniqueRenderCommandType<`FTextureRenderTargetCubeResource::ReadPixels'::`2'::ReadSurfaceCommandName,<lambda_8cf822a1924661640e46248ac71b872c> > >::ExecuteTask() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:975]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksNamedThread() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:753]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:642]
UnrealEditor_Core!FTaskGraphCompatibilityImplementation::ProcessThreadUntilRequestReturn() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:2115]
UnrealEditor_RenderCore!RenderingThreadMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:380]
UnrealEditor_RenderCore!FRenderingThread::Run() [D:\build\++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:527]
UnrealEditor_Core!FRunnableThreadWin::Run() [D:\build\++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:146]
I figured out that the problem is caused by the following cpp method
void ULidarComponent::UpdateColorBuffers()
{
ColorBufferPosX.Reset();
ColorBufferNegX.Reset();
ColorBufferPosY.Reset();
ColorBufferNegY.Reset();
ColorBufferPosZ.Reset();
ColorBufferNegZ.Reset();
CaptureSceneDeferred();
if (TextureTarget != NULL)
{
CubeResource = (FTextureRenderTargetCubeResource*)TextureTarget->GameThread_GetRenderTargetResource();
if (CubeResource->IsInitialized() && CubeResource != NULL)
{
if (!CubeResource->ReadPixels(ColorBufferPosX, FReadSurfaceDataFlags(RCM_UNorm, CubeFace_PosX))) UE_LOG(LogTemp, Warning, TEXT("LiDAR: PosX failed"));
if (!CubeResource->ReadPixels(ColorBufferNegX, FReadSurfaceDataFlags(RCM_UNorm, CubeFace_NegX))) UE_LOG(LogTemp, Warning, TEXT("LiDAR: NegX failed"));
if (!CubeResource->ReadPixels(ColorBufferPosY, FReadSurfaceDataFlags(RCM_UNorm, CubeFace_PosY))) UE_LOG(LogTemp, Warning, TEXT("LiDAR: PosY failed"));
if (!CubeResource->ReadPixels(ColorBufferNegY, FReadSurfaceDataFlags(RCM_UNorm, CubeFace_NegY))) UE_LOG(LogTemp, Warning, TEXT("LiDAR: NegY failed"));
if (!CubeResource->ReadPixels(ColorBufferPosZ, FReadSurfaceDataFlags(RCM_UNorm, CubeFace_PosZ))) UE_LOG(LogTemp, Warning, TEXT("LiDAR: PosZ failed"));
if (!CubeResource->ReadPixels(ColorBufferNegZ, FReadSurfaceDataFlags(RCM_UNorm, CubeFace_NegZ))) UE_LOG(LogTemp, Warning, TEXT("LiDAR: NegZ failed"));
}
}
}
If I comment out this method everything works fine, but for me it is essential to also capture colour information for the pointclouds.
Any ideas or suggestions?