// Copyright Epic Games, Inc. All Rights Reserved. #include "/Engine/Private/Common.ush" #include "/Engine/Public/Platform.ush" Texture2D SourceTexture; Texture2DArray SourceTextureArray; SamplerState SourceSampler; float2 SourceDimensions; int SourceTextureIndex; RWTexture2D OutputTexture; [numthreads(THREADGROUPSIZE_X, THREADGROUPSIZE_Y, THREADGROUPSIZE_Z)] void PCGTextureReadback_CS(uint3 DispatchThreadId : SV_DispatchThreadID, uint GroupIndex : SV_GroupIndex) { float2 ThreadID = DispatchThreadId.xy + 0.5; float2 TexCoord = ThreadID / SourceDimensions; if (SourceTextureIndex == -1) { OutputTexture[ThreadID] = Texture2DSample(SourceTexture, SourceSampler, TexCoord.xy); } else { OutputTexture[ThreadID] = Texture2DArraySample(SourceTextureArray, SourceSampler, float3(TexCoord.xy, SourceTextureIndex)); } }