// Copyright Epic Games, Inc. All Rights Reserved. #pragma once /////////////////////////////////////////////////////////////////////////////// // Material buffer writing #ifndef SUBSTRATE_VRS_WRITE #define SUBSTRATE_VRS_WRITE 0 #endif void WriteDataToBuffer(RWTexture2DArray OutBuffer, uint InData, uint3 InCoord, uint InQuadPixelWriteMask) { if (InQuadPixelWriteMask > 0u) { #if SUBSTRATE_VRS_WRITE BRANCH if (InQuadPixelWriteMask & 1u) #endif { OutBuffer[InCoord] = InData; } #if SUBSTRATE_VRS_WRITE BRANCH if (InQuadPixelWriteMask & 2u) // Copy H { OutBuffer[uint3(InCoord.xy + uint2(1, 0), InCoord.z)] = InData; } BRANCH if (InQuadPixelWriteMask & 4u) // Copy V { OutBuffer[uint3(InCoord.xy + uint2(0, 1), InCoord.z)] = InData; } BRANCH if (InQuadPixelWriteMask & 8u) // Copy D { OutBuffer[uint3(InCoord.xy + uint2(1, 1), InCoord.z)] = InData; } #endif } } void WriteDataToBuffer(RWTexture2D OutBuffer, float3 InData, uint2 InCoord, uint InQuadPixelWriteMask) { if (InQuadPixelWriteMask > 0u) { #if SUBSTRATE_VRS_WRITE BRANCH if (InQuadPixelWriteMask & 1u) #endif { OutBuffer[InCoord] = InData; } #if SUBSTRATE_VRS_WRITE BRANCH if (InQuadPixelWriteMask & 2u) /* Copy H */ { OutBuffer[InCoord + uint2(1, 0)] = InData; } BRANCH if (InQuadPixelWriteMask & 4u) /* Copy V */ { OutBuffer[InCoord + uint2(0, 1)] = InData; } BRANCH if (InQuadPixelWriteMask & 8u) /* Copy D */ { OutBuffer[InCoord + uint2(1, 1)] = InData; } #endif } }