Files
FlaxEngine/Source/Engine/Renderer/Lightmaps.h
Wojciech Figat a7e428a21c Merge branch 'master' into 1.5
# Conflicts:
#	Content/Shaders/GI/DDGI.flax
#	Content/Shaders/GI/GlobalSurfaceAtlas.flax
#	Content/Shaders/TAA.flax
#	Content/Shaders/VolumetricFog.flax
#	Source/Editor/CustomEditors/Editors/ActorTagEditor.cs
#	Source/Engine/Core/Config/GraphicsSettings.cpp
#	Source/Engine/Engine/PostProcessEffect.cs
#	Source/Engine/Graphics/GPUResourcesCollection.cpp
#	Source/Engine/Graphics/GPUResourcesCollection.h
#	Source/Engine/Graphics/PostProcessBase.h
#	Source/FlaxEngine.Gen.cs
2023-01-10 15:37:55 +01:00

164 lines
3.8 KiB
C++

// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
#pragma once
#include "Engine/Core/Types/Guid.h"
#include "Engine/Core/Math/Rectangle.h"
#include "Engine/Core/ISerializable.h"
#if USE_EDITOR
// Additional options used in editor for lightmaps baking
extern bool IsRunningRadiancePass;
extern bool IsBakingLightmaps;
extern bool EnableLightmapsUsage;
#endif
/// <summary>
/// Single lightmap info data
/// </summary>
struct SavedLightmapInfo
{
/// <summary>
/// Lightmap 0 texture ID
/// </summary>
Guid Lightmap0;
/// <summary>
/// Lightmap 1 texture ID
/// </summary>
Guid Lightmap1;
/// <summary>
/// Lightmap 2 texture ID
/// </summary>
Guid Lightmap2;
};
/// <summary>
/// Describes object reference to the lightmap
/// </summary>
struct LightmapEntry
{
/// <summary>
/// Index of the lightmap
/// </summary>
int32 TextureIndex;
/// <summary>
/// Lightmap UVs area that entry occupies
/// </summary>
Rectangle UVsArea;
/// <summary>
/// Init
/// </summary>
LightmapEntry()
: TextureIndex(INVALID_INDEX)
, UVsArea(Rectangle::Empty)
{
}
};
/// <summary>
/// Describes lightmap generation options
/// </summary>
API_STRUCT() struct LightmapSettings : ISerializable
{
DECLARE_SCRIPTING_TYPE_MINIMAL(LightmapSettings);
/// <summary>
/// Lightmap atlas sizes (in pixels).
/// </summary>
API_ENUM() enum class AtlasSizes
{
/// <summary>
/// 64x64
/// </summary>
_64 = 64,
/// <summary>
/// 128x128
/// </summary>
_128 = 128,
/// <summary>
/// 256x256
/// </summary>
_256 = 256,
/// <summary>
/// 512x512
/// </summary>
_512 = 512,
/// <summary>
/// 1024x1024
/// </summary>
_1024 = 1024,
/// <summary>
/// 2048x2048
/// </summary>
_2048 = 2048,
/// <summary>
/// 4096x4096
/// </summary>
_4096 = 4096,
};
/// <summary>
/// Controls how much all lights will contribute indirect lighting.
/// </summary>
API_FIELD(Attributes="EditorOrder(0), Limit(0, 100.0f, 0.1f)")
float IndirectLightingIntensity = 1.0f;
/// <summary>
/// Global scale for objects in lightmap to increase quality
/// </summary>
API_FIELD(Attributes="EditorOrder(10), Limit(0, 100.0f, 0.1f)")
float GlobalObjectsScale = 1.0f;
/// <summary>
/// Amount of pixels space between charts in lightmap atlas
/// </summary>
API_FIELD(Attributes="EditorOrder(20), Limit(0, 16, 0.1f)")
int32 ChartsPadding = 3;
/// <summary>
/// Single lightmap atlas size (width and height in pixels)
/// </summary>
API_FIELD(Attributes="EditorOrder(30)")
AtlasSizes AtlasSize = AtlasSizes::_1024;
/// <summary>
/// Amount of indirect light GI bounce passes
/// </summary>
API_FIELD(Attributes="EditorOrder(40), Limit(1, 16, 0.1f)")
int32 BounceCount = 1;
/// <summary>
/// Enable/disable compressing lightmap textures (3 textures per lightmap with RGBA data in HDR)
/// </summary>
API_FIELD(Attributes="EditorOrder(45)")
bool CompressLightmaps = true;
/// <summary>
/// Enable/disable rendering static light for geometry with missing or empty material slots
/// </summary>
API_FIELD(Attributes="EditorOrder(50)")
bool UseGeometryWithNoMaterials = true;
/// <summary>
/// GI quality (range [0;100])
/// </summary>
API_FIELD(Attributes="EditorOrder(60), Limit(0, 100, 0.1f)")
int32 Quality = 10;
public:
// [ISerializable]
void Serialize(SerializeStream& stream, const void* otherObj) override;
void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override;
};