diff --git a/Source/AsyncReadRT/Private/AsyncReadRTAction.cpp b/Source/AsyncReadRT/Private/AsyncReadRTAction.cpp index f6f63da..2aa4bfa 100644 --- a/Source/AsyncReadRT/Private/AsyncReadRTAction.cpp +++ b/Source/AsyncReadRT/Private/AsyncReadRTAction.cpp @@ -77,9 +77,6 @@ void UAsyncReadRTAction::Activate() check(TextureResource); check(TextureResource->GetRenderTargetTexture()); - X = FMath::Clamp(X, 0, RT->SizeX - 1); - Y = FMath::Clamp(Y, 0, RT->SizeY - 1); - StartFrame = GFrameCounter; ENQUEUE_RENDER_COMMAND(FCopyRTAsync)([bFlushRHI = bFlushRHI, X = X, Y = Y, AsyncReadPtr = TWeakObjectPtr(this), TextureRHI = TextureResource->GetRenderTargetTexture(), ReadData = ReadRTData](FRHICommandListImmediate& RHICmdList) @@ -113,11 +110,14 @@ void UAsyncReadRTAction::Activate() IORHITextureCPU = RHICreateTexture2D(1, 1, TextureRHI->GetFormat(), 1, 1, TexCreate_CPUReadback, ERHIAccess::CopyDest, CreateInfo); #endif + const int32 SrcX = FMath::Clamp(X, 0, static_cast(TextureRHI->GetSizeX()) - 1); + const int32 SrcY = FMath::Clamp(Y, 0, static_cast(TextureRHI->GetSizeY()) - 1); + FRHICopyTextureInfo CopyTextureInfo; CopyTextureInfo.Size = FIntVector(1, 1, 1); CopyTextureInfo.SourceMipIndex = 0; CopyTextureInfo.DestMipIndex = 0; - CopyTextureInfo.SourcePosition = FIntVector(X, Y, 0); + CopyTextureInfo.SourcePosition = FIntVector(SrcX, SrcY, 0); CopyTextureInfo.DestPosition = FIntVector(0, 0, 0); RHICmdList.Transition(FRHITransitionInfo(TextureRHI, ERHIAccess::Unknown, ERHIAccess::CopySrc));