mirror of
https://github.com/barkeser2002/flower.git
synced 2026-09-25 15:36:14 +03:00
326 lines
7.2 KiB
C++
326 lines
7.2 KiB
C++
#include "../asset/asset_common.h"
|
|
#include "../asset/asset_texture.h"
|
|
#include "../scene/scene.h"
|
|
#include "../scene/scene_node.h"
|
|
#include "../scene/component.h"
|
|
#include "../scene/component/transform.h"
|
|
#include "../asset/asset_material.h"
|
|
#include "../asset/asset_staticmesh.h"
|
|
#include "../scene/component/staticmesh_component.h"
|
|
#include "../scene/component/sky_component.h"
|
|
#include "../scene/component/postprocess_component.h"
|
|
#include "../scene/component/reflection_probe_component.h"
|
|
#include "../scene/component/landscape_component.h"
|
|
|
|
registerPODClassMember(AssetSaveInfo)
|
|
{
|
|
archive(m_name, m_storeFolder, m_storePath);
|
|
}
|
|
|
|
registerClassMember(AssetInterface)
|
|
{
|
|
archive(m_saveInfo);
|
|
archive(m_rawAssetPath);
|
|
}
|
|
|
|
registerPODClassMember(StaticMeshRenderBounds)
|
|
{
|
|
archive(origin, extents, radius);
|
|
}
|
|
registerPODClassMember(TimeOfDay)
|
|
{
|
|
archive(year, month, day, hour, minute, second);
|
|
}
|
|
|
|
registerPODClassMember(CloudParametersInputs)
|
|
{
|
|
archive(
|
|
cloudAreaStartHeight,
|
|
cloudAreaThickness,
|
|
cloudGodRayScale,
|
|
cloudShadowExtent,
|
|
cloudWeatherUVScale,
|
|
cloudCoverage,
|
|
cloudDensity,
|
|
cloudShadingSunLightScale,
|
|
cloudFogFade,
|
|
cloudMaxTraceingDistance,
|
|
cloudTracingStartMaxDistance,
|
|
cloudDirection,
|
|
cloudSpeed,
|
|
cloudMultiScatterExtinction,
|
|
cloudMultiScatterScatter,
|
|
cloudBasicNoiseScale,
|
|
cloudDetailNoiseScale,
|
|
cloudAlbedo,
|
|
cloudPhaseForward,
|
|
cloudPhaseBackward,
|
|
cloudPhaseMixFactor,
|
|
cloudPowderScale,
|
|
cloudPowderPow,
|
|
cloudLightStepMul,
|
|
cloudLightBasicStep,
|
|
cloudLightStepNum,
|
|
cloudEnableGroundContribution,
|
|
cloudMarchingStepNum,
|
|
cloudSunLitMapOctave,
|
|
cloudNoiseScale,
|
|
cloudGodRay,
|
|
cloudAmbientScale);
|
|
}
|
|
|
|
registerPODClassMember(AtmosphereParametersInputs)
|
|
{
|
|
archive(
|
|
absorptionColor,
|
|
absorptionLength,
|
|
rayleighScatteringColor,
|
|
rayleighScatterLength,
|
|
multipleScatteringFactor,
|
|
miePhaseFunctionG,
|
|
bottomRadius,
|
|
topRadius,
|
|
mieScatteringColor,
|
|
mieScatteringLength,
|
|
mieAbsColor,
|
|
mieAbsLength,
|
|
mieAbsorption,
|
|
viewRayMarchMinSPP,
|
|
groundAlbedo,
|
|
viewRayMarchMaxSPP);
|
|
|
|
constexpr int rayleighDensityCount = sizeof(rayleighDensity) / sizeof(rayleighDensity[0]);
|
|
for (int i = 0; i < rayleighDensityCount; i++)
|
|
{
|
|
archive(rayleighDensity[i]);
|
|
archive(mieDensity[i]);
|
|
archive(absorptionDensity[i]);
|
|
}
|
|
}
|
|
|
|
registerPODClassMember(CascadeShadowConfig)
|
|
{
|
|
archive(
|
|
bSDSM,
|
|
bContactShadow,
|
|
cascadeCount,
|
|
percascadeDimXY,
|
|
maxDrawDepthDistance,
|
|
splitLambda,
|
|
shadowBiasConst,
|
|
shadowBiasSlope,
|
|
filterSize,
|
|
cascadeMixBorder,
|
|
contactShadowLen,
|
|
contactShadowSampleNum);
|
|
}
|
|
|
|
registerPODClassMember(RaytraceShadowConfig)
|
|
{
|
|
archive(rayMinRange, rayMaxRange, lightRadius);
|
|
}
|
|
|
|
registerPODClassMember(SkyLightInfo)
|
|
{
|
|
archive(
|
|
color,
|
|
intensity,
|
|
direction,
|
|
shadowType,
|
|
cascadeConfig);
|
|
|
|
if (version > 0)
|
|
{
|
|
archive(shadowColorIntensity, shadowColor, rayTraceConfig);
|
|
}
|
|
}
|
|
|
|
registerPODClassMember(PostprocessVolumeSetting)
|
|
{
|
|
// Auto exposure.
|
|
archive(
|
|
bAutoExposureEnable,
|
|
autoExposureFixExposure,
|
|
autoExposureLowPercent,
|
|
autoExposureHighPercent,
|
|
autoExposureMinBrightness,
|
|
autoExposureMaxBrightness,
|
|
autoExposureSpeedDown,
|
|
autoExposureSpeedUp,
|
|
autoExposureExposureCompensation);
|
|
|
|
archive(bTAAEnableColorFilter, taaAntiFlicker, taaHistorySharpen, taaBaseBlendFactor);
|
|
|
|
archive(bloomIntensity, bloomRadius, bloomThreshold, bloomThresholdSoft);
|
|
|
|
archive(expandGamutFactor);
|
|
|
|
// Tonemapper.
|
|
archive(
|
|
tonemapper_P,
|
|
tonemapper_a,
|
|
tonemapper_m,
|
|
tonemapper_l,
|
|
tonemapper_c,
|
|
tonemapper_b);
|
|
|
|
archive(
|
|
tonemapper_type,
|
|
tonemapper_filmACESSlope,
|
|
tonemapper_filmACESToe,
|
|
tonemapper_filmACESShoulder,
|
|
tonemapper_filmACESBlackClip,
|
|
tonemapper_filmACESWhiteClip,
|
|
tonemapper_filmACESPreDesaturate,
|
|
tonemapper_filmACESPostDesaturate,
|
|
tonemapper_filmACESRedModifier,
|
|
tonemapper_filmACESGlowScale);
|
|
|
|
archive(
|
|
tonemapper_P,
|
|
tonemapper_a,
|
|
tonemapper_m,
|
|
tonemapper_l,
|
|
tonemapper_c,
|
|
tonemapper_b);
|
|
|
|
|
|
archive(
|
|
ssao_sliceCount,
|
|
ssao_falloff,
|
|
ssao_stepCount,
|
|
ssao_intensity,
|
|
ssao_power,
|
|
ssao_viewRadius);
|
|
if (version > 3)
|
|
{
|
|
archive(gtao_radius, gtao_thickness, ssao_bGTAO, gtao_falloffEnd);
|
|
}
|
|
}
|
|
|
|
registerPODClassMember(StaticMeshSubMesh)
|
|
{
|
|
archive(indicesStart, indicesCount, material, bounds);
|
|
}
|
|
|
|
registerPODClassMember(StaticMeshBin)
|
|
{
|
|
archive(normals, tangents, uv0s, positions, indices);
|
|
}
|
|
|
|
registerClassMemberInherit(AssetMaterial, AssetInterface)
|
|
{
|
|
archive(baseColorTexture);
|
|
archive(normalTexture);
|
|
archive(metalRoughnessTexture);
|
|
archive(emissiveTexture);
|
|
archive(aoTexture);
|
|
|
|
archive(baseColorMul);
|
|
archive(baseColorAdd);
|
|
|
|
archive(metalMul);
|
|
archive(metalAdd);
|
|
archive(roughnessMul);
|
|
archive(roughnessAdd);
|
|
|
|
archive(emissiveMul);
|
|
archive(emissiveAdd);
|
|
|
|
archive(cutoff);
|
|
ARCHIVE_ENUM_CLASS(shadingModelType);
|
|
}}
|
|
|
|
registerClassMemberInherit(AssetTexture, AssetInterface)
|
|
{
|
|
archive(m_bSRGB);
|
|
archive(m_mipmapCount);
|
|
archive(m_dimension);
|
|
archive(m_format);
|
|
archive(m_alphaMipmapCutoff);
|
|
}}
|
|
|
|
registerClassMemberInherit(AssetStaticMesh, AssetInterface)
|
|
{
|
|
archive(m_subMeshes);
|
|
archive(m_indicesCount);
|
|
archive(m_verticesCount);
|
|
|
|
if (version > 0)
|
|
{
|
|
archive(m_minPosition);
|
|
archive(m_maxPosition);
|
|
}
|
|
}}
|
|
|
|
registerClassMember(Component)
|
|
{
|
|
archive(m_node);
|
|
}
|
|
|
|
registerClassMemberInherit(Transform, Component)
|
|
{
|
|
archive(m_translation, m_rotation, m_scale);
|
|
}}
|
|
|
|
registerClassMemberInherit(LandscapeComponent, Component)
|
|
{
|
|
if (version > 4)
|
|
{
|
|
archive(m_heightmapTextureUUID, m_dimension, m_maxHeight, m_minHeight, m_offset);
|
|
}
|
|
}}
|
|
|
|
registerClassMemberInherit(RenderableComponent, Component)
|
|
{
|
|
|
|
}}
|
|
|
|
registerClassMemberInherit(StaticMeshComponent, RenderableComponent)
|
|
{
|
|
archive(m_assetUUID);
|
|
}}
|
|
|
|
registerClassMemberInherit(ReflectionProbeComponent, Component)
|
|
{
|
|
archive(m_dimension);
|
|
if (version > 2)
|
|
{
|
|
archive(m_minExtent, m_maxExtent);
|
|
}
|
|
}}
|
|
|
|
registerClassMemberInherit(SkyComponent, Component)
|
|
{
|
|
archive(m_tod, m_bLocalTime, m_atmosphere, m_sun);
|
|
|
|
if (version > 5)
|
|
{
|
|
archive(m_cloud);
|
|
}
|
|
}}
|
|
|
|
registerClassMemberInherit(PostprocessComponent, Component)
|
|
{
|
|
archive(m_setting);
|
|
}}
|
|
|
|
registerClassMember(SceneNode)
|
|
{
|
|
archive(m_bVisibility);
|
|
archive(m_bStatic);
|
|
archive(m_id);
|
|
archive(m_name);
|
|
archive(m_parent);
|
|
archive(m_scene);
|
|
archive(m_components);
|
|
archive(m_children);
|
|
}
|
|
|
|
registerClassMemberInherit(Scene, AssetInterface)
|
|
{
|
|
archive(m_currentId);
|
|
archive(m_root);
|
|
archive(m_components);
|
|
archive(m_sceneNodes);
|
|
}} |