You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
164 lines
5.4 KiB
C++
164 lines
5.4 KiB
C++
// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#define TEXTURE_COMPRESSOR_MODULENAME "TextureCompressor"
|
|
|
|
/**
|
|
* Compressed image data.
|
|
*/
|
|
struct FCompressedImage2D
|
|
{
|
|
TArray<uint8> RawData;
|
|
int32 SizeX;
|
|
int32 SizeY;
|
|
uint8 PixelFormat; // EPixelFormat, opaque to avoid dependencies on Engine headers.
|
|
};
|
|
|
|
/**
|
|
* Color adjustment parameters.
|
|
*/
|
|
struct FColorAdjustmentParameters
|
|
{
|
|
/** Brightness adjustment (scales HSV value) */
|
|
float AdjustBrightness;
|
|
|
|
/** Curve adjustment (raises HSV value to the specified power) */
|
|
float AdjustBrightnessCurve;
|
|
|
|
/** Saturation adjustment (scales HSV saturation) */
|
|
float AdjustSaturation;
|
|
|
|
/** "Vibrance" adjustment (HSV saturation algorithm adjustment) */
|
|
float AdjustVibrance;
|
|
|
|
/** RGB curve adjustment (raises linear-space RGB color to the specified power) */
|
|
float AdjustRGBCurve;
|
|
|
|
/** Hue adjustment (offsets HSV hue by value in degrees) */
|
|
float AdjustHue;
|
|
|
|
/** Remaps the alpha to the specified min/max range (Non-destructive; Requires texture source art to be available.) */
|
|
float AdjustMinAlpha;
|
|
|
|
/** Remaps the alpha to the specified min/max range (Non-destructive; Requires texture source art to be available.) */
|
|
float AdjustMaxAlpha;
|
|
|
|
/** Constructor */
|
|
FColorAdjustmentParameters()
|
|
: AdjustBrightness( 1.0f ),
|
|
AdjustBrightnessCurve( 1.0f ),
|
|
AdjustSaturation( 1.0f ),
|
|
AdjustVibrance( 0.0f ),
|
|
AdjustRGBCurve( 1.0f ),
|
|
AdjustHue( 0.0f ),
|
|
AdjustMinAlpha( 0.0f ),
|
|
AdjustMaxAlpha( 1.0f )
|
|
{
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Texture build settings.
|
|
*/
|
|
struct FTextureBuildSettings
|
|
{
|
|
/** Color adjustment parameters. */
|
|
FColorAdjustmentParameters ColorAdjustment;
|
|
/** The desired amount of mip sharpening. */
|
|
float MipSharpening;
|
|
/** For angular filtered cubemaps, the mip level which contains convolution with the diffuse cosine lobe. */
|
|
uint32 DiffuseConvolveMipLevel;
|
|
/** The size of the kernel with which mips should be sharpened. 2 for 2x2, 4 for 4x4, 6 for 6x6, 8 for 8x8 */
|
|
uint32 SharpenMipKernelSize;
|
|
/** Format of the compressed texture, used to choose a compression DLL. */
|
|
FName TextureFormatName;
|
|
/** Mipmap generation settings. */
|
|
uint8 MipGenSettings; // TextureMipGenSettings, opaque to avoid dependencies on engine headers.
|
|
/** Whether the texture being built is a cubemap. */
|
|
uint32 bCubemap : 1;
|
|
/** Whether the texture contains color data in the sRGB colorspace. */
|
|
uint32 bSRGB : 1;
|
|
/** Whether the border of the image should be maintained during mipmap generation. */
|
|
uint32 bPreserveBorder : 1;
|
|
/** Whether the alpha channel should contain a dithered alpha value. */
|
|
uint32 bDitherMipMapAlpha : 1;
|
|
/** Whether bokeh alpha values should be computed for the texture. */
|
|
uint32 bComputeBokehAlpha : 1;
|
|
/** Whether the contents of the red channel should be replicated to all channels. */
|
|
uint32 bReplicateRed : 1;
|
|
/** Whether the contents of the alpha channel should be replicated to all channels. */
|
|
uint32 bReplicateAlpha : 1;
|
|
/** Whether each mip should use the downsampled-with-average result instead of the sharpened result. */
|
|
uint32 bDownsampleWithAverage : 1;
|
|
/** Whether sharpening should prevent color shifts. */
|
|
uint32 bSharpenWithoutColorShift : 1;
|
|
/** Whether the border color should be black. */
|
|
uint32 bBorderColorBlack : 1;
|
|
/** Whether the green channel should be flipped. Typically only done on normal maps. */
|
|
uint32 bFlipGreenChannel : 1;
|
|
/** 1:apply mip sharpening/blurring kernel to top mip as well (at half the kernel size), 0:don't */
|
|
uint32 bApplyKernelToTopMip : 1;
|
|
/** 1: renormalizes the top mip (only useful for normal maps, prevents artists errors and adds quality) 0:don't */
|
|
uint32 bRenormalizeTopMip : 1;
|
|
/** e.g. CTM_RoughnessFromNormalAlpha */
|
|
uint8 CompositeTextureMode; // ECompositeTextureMode, opaque to avoid dependencies on engine headers.
|
|
/* default 1, high values result in a stronger effect */
|
|
float CompositePower;
|
|
/** The source texture's final LOD bias (i.e. includes LODGroup based biases) */
|
|
uint32 LODBias;
|
|
/** The texture's size, mutable as this is filled in once the mips has been built */
|
|
mutable FIntPoint OriginalTextureSize;
|
|
/** Can the texture be streamed */
|
|
uint32 bStreamable : 1;
|
|
|
|
/** Default settings. */
|
|
FTextureBuildSettings()
|
|
: MipSharpening( 0.0f )
|
|
, DiffuseConvolveMipLevel( 0 )
|
|
, SharpenMipKernelSize( 2 )
|
|
, MipGenSettings( 1 /*TMGS_SimpleAverage*/ )
|
|
, bCubemap( false )
|
|
, bSRGB( false )
|
|
, bPreserveBorder( false )
|
|
, bDitherMipMapAlpha( false )
|
|
, bComputeBokehAlpha( false )
|
|
, bReplicateRed( false )
|
|
, bReplicateAlpha( false )
|
|
, bDownsampleWithAverage( false )
|
|
, bSharpenWithoutColorShift( false )
|
|
, bBorderColorBlack( false )
|
|
, bFlipGreenChannel( false )
|
|
, bApplyKernelToTopMip( false )
|
|
, bRenormalizeTopMip( false )
|
|
, CompositeTextureMode( 0 /*CTM_Disabled*/ )
|
|
, CompositePower( 1.0f )
|
|
, LODBias(0)
|
|
, OriginalTextureSize(0, 0)
|
|
, bStreamable(false)
|
|
{
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Texture compression module interface.
|
|
*/
|
|
class ITextureCompressorModule : public IModuleInterface
|
|
{
|
|
public:
|
|
|
|
/**
|
|
* Builds a texture from source images.
|
|
* @param SourceMips - The input mips.
|
|
* @param BuildSettings - Build settings.
|
|
* @param OutCompressedMips - The compressed mips built by the compressor.
|
|
* @returns true on success
|
|
*/
|
|
virtual bool BuildTexture(
|
|
const TArray<struct FImage>& SourceMips,
|
|
const TArray<struct FImage>& AssociatedNormalSourceMips,
|
|
const FTextureBuildSettings& BuildSettings,
|
|
TArray<FCompressedImage2D>& OutTextureMips
|
|
) = 0;
|
|
};
|