You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/Gems/ImageProcessing/Code/Source/BuilderSettings/ImageProcessingDefines.h

109 lines
4.1 KiB
C++

/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
#pragma once
#include <AzCore/std/containers/map.h>
#include <AzCore/std/containers/vector.h>
#include <AzCore/std/containers/list.h>
#include <AzCore/std/string/string.h>
#include <AzCore/Outcome/Outcome.h>
#include <AzCore/base.h>
/**
* Shorthand for checking a condition, and failing if false.
* Works with any function that returns AZ::Outcome<..., AZStd::string>.
* Unlike assert, it is not removed in release builds.
* Ensure all strings are passed with c_str(), as they are passed to AZStd::string::format().
*/
#define AZ_ENSURE_STRING_OUTCOME_CONDITION(cond, ...) if (!(cond)) { return AZ::Failure(AZStd::string::format(__VA_ARGS__)); }
// Similar to above macro, but ensures on an AZ::Outcome. Not removed in release builds.
#define AZ_ENSURE_STRING_OUTCOME(outcome) if (!(outcome.IsSuccess())) { return AZ::Failure(outcome.GetError()); }
namespace ImageProcessing
{
//! Common return type for operations that can fail.
// Empty success string == Success.
// Populated success string == Warning.
// Populated error string == Failure.
using StringOutcome = AZ::Outcome<AZStd::string, AZStd::string>;
#define STRING_OUTCOME_SUCCESS AZ::Success(AZStd::string())
#define STRING_OUTCOME_WARNING(warning) AZ::Success(AZStd::string(warning))
#define STRING_OUTCOME_ERROR(error) AZ::Failure(AZStd::string(error))
// Common typedefs (with dependent forward-declarations)
typedef AZStd::string PlatformName, PresetName, FileMask;
typedef AZStd::vector<PlatformName> PlatformNameVector;
typedef AZStd::list<PlatformName> PlatformNameList;
//! min and max reduce level
static const unsigned int s_MinReduceLevel = 0;
static const unsigned int s_MaxReduceLevel = 5;
static const int s_TotalSupportedImageExtensions = 8;
static const char* s_SupportedImageExtensions[s_TotalSupportedImageExtensions] = {
"*.tif",
"*.tiff",
"*.png",
"*.bmp",
"*.jpg",
"*.jpeg",
"*.tga",
"*.gif"
};
enum class RGBWeight : AZ::u32
{
uniform, // uniform weights (1.0, 1.0, 1.0) (default)
luminance, // luminance-based weights (0.3086, 0.6094, 0.0820)
ciexyz // ciexyz-based weights (0.2126, 0.7152, 0.0722)
};
enum class ColorSpace : AZ::u32
{
linear,
sRGB,
autoSelect,
};
enum class MipGenType : AZ::u32
{
point, //Also called nearest neighbor
box, //Also called 'average'. When shrinking images it will average, and merge the pixels together.
triangle, //Also called linear or Bartlett window
quadratic, //Also called bilinear or Welch window
gaussian, //It remove high frequency noise in a highly controllable way.
blackmanHarris,
kaiserSinc //Good for foliage and tree assets exported from Speedtree.
};
enum class MipGenEvalType : AZ::u32
{
sum,
max,
min
};
//cubemap angular filter type. Only two filter types were used in rc.ini
enum class CubemapFilterType : AZ::u32
{
disc = 0, // same as CP_FILTER_TYPE_DISC in CubemapGen
cone = 1, // same as CP_FILTER_TYPE_CONE
cosine = 2, // same as CP_FILTER_TYPE_COSINE. only used for [EnvironmentProbeHDR_Irradiance]
gaussian = 3, // same as CP_FILTER_TYPE_ANGULAR_GAUSSIAN
cosine_power = 4, // same as CP_FILTER_TYPE_COSINE_POWER
ggx = 5 // same as CP_FILTER_TYPE_GGX. only used for [EnvironmentProbeHDR]
};
} // namespace ImageProcessing