Files
UnrealEngineUWP/Engine/Shaders/Private/RayTracing/MipTreeCommon.ush
Marc Audy 360d078ca3 Second batch of remaining Engine copyright updates.
#rnx
#rb none

[CL 10871248 by Marc Audy in Main branch]
2019-12-27 09:26:59 -05:00

34 lines
1.0 KiB
Plaintext

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================================
MipTreeCommon.ush: Common utilities for MipTree-based sampling
===============================================================================================*/
#include "../MortonCode.ush"
#define USE_MORTON_CODE 1
uint2 DimensionsAtLevel(uint2 Dimensions, uint Level)
{
return uint2(Dimensions.x >> Level, Dimensions.y >> Level);
}
uint BufferOffsetAtPixel(uint2 Pixel, uint Level, uint2 Dimensions)
{
uint Offset = 0;
for (uint LevelIndex = 0; LevelIndex < Level; ++LevelIndex)
{
uint2 MipLevelDimensions = DimensionsAtLevel(Dimensions, LevelIndex);
Offset += MipLevelDimensions.x * MipLevelDimensions.y;
}
uint2 MipLevelDimensions = DimensionsAtLevel(Dimensions, Level);
#if USE_MORTON_CODE
// NOTE: Morton encoding requires power-of-two dimensionality..
Offset += MortonEncode(Pixel);
#else
Offset += Pixel.y * MipLevelDimensions.x + Pixel.x;
#endif
return Offset;
}