mirror of https://github.com/zeldaret/botw.git
gsys: Add ModelSceneConfig
This commit is contained in:
parent
8e445021ab
commit
55f8bde652
|
@ -40188,7 +40188,7 @@ Address,Quality,Size,Name
|
||||||
0x00000071006726dc,U,000264,
|
0x00000071006726dc,U,000264,
|
||||||
0x00000071006727e4,U,000164,_ZN4sead6Worker10getNextJQ_Ev
|
0x00000071006727e4,U,000164,_ZN4sead6Worker10getNextJQ_Ev
|
||||||
0x0000007100672888,U,000260,
|
0x0000007100672888,U,000260,
|
||||||
0x000000710067298c,U,000372,_ZN4sead15FixedSafeStringILi19EEaSERKNS_14SafeStringBaseIcEE
|
0x000000710067298c,U,000372,
|
||||||
0x0000007100672b00,U,000028,
|
0x0000007100672b00,U,000028,
|
||||||
0x0000007100672b1c,U,000028,
|
0x0000007100672b1c,U,000028,
|
||||||
0x0000007100672b38,U,000040,
|
0x0000007100672b38,U,000040,
|
||||||
|
@ -68997,62 +68997,62 @@ Address,Quality,Size,Name
|
||||||
0x0000007100c19b48,U,000004,nullsub_3524
|
0x0000007100c19b48,U,000004,nullsub_3524
|
||||||
0x0000007100c19b4c,U,000020,_ZN4gsys19ModelSceneComponentC2Ev
|
0x0000007100c19b4c,U,000020,_ZN4gsys19ModelSceneComponentC2Ev
|
||||||
0x0000007100c19b60,U,000080,_ZN4gsys19ModelSceneComponentD2Ev
|
0x0000007100c19b60,U,000080,_ZN4gsys19ModelSceneComponentD2Ev
|
||||||
0x0000007100c19bb0,U,000092,_ZThn176_N2nn3atk6detail6driver23AdvancedWaveSoundPlayerD0Ev
|
0x0000007100c19bb0,U,000092,
|
||||||
0x0000007100c19c0c,U,000008,
|
0x0000007100c19c0c,U,000008,
|
||||||
0x0000007100c19c14,U,000068,_ZN4gsys19ModelSceneComponent14setUpComponentEiPN4sead4HeapES3_
|
0x0000007100c19c14,U,000068,_ZN4gsys19ModelSceneComponent14setUpComponentEiPN4sead4HeapES3_
|
||||||
0x0000007100c19c58,U,000004,nullsub_3525
|
0x0000007100c19c58,U,000004,nullsub_3525
|
||||||
0x0000007100c19c5c,U,000404,
|
0x0000007100c19c5c,O,000404,_ZNK4gsys12_GLOBAL__N_111DepthFormat4textEv
|
||||||
0x0000007100c19df0,U,000404,
|
0x0000007100c19df0,O,000404,_ZNK4gsys12_GLOBAL__N_120DepthShadowMapFormat4textEv
|
||||||
0x0000007100c19f84,U,014120,_ZN4gsys16ModelSceneConfigC2Ev
|
0x0000007100c19f84,m,014120,_ZN4gsys16ModelSceneConfigC1Ev
|
||||||
0x0000007100c1d6ac,U,000552,_ZN4sead9SafeArrayIN3agl3utl9ParameterIbEELi42EEC2Ev
|
0x0000007100c1d6ac,O,000552,_ZN4sead9SafeArrayIN3agl3utl9ParameterIbEELi42EEC2Ev
|
||||||
0x0000007100c1d8d4,U,000296,
|
0x0000007100c1d8d4,O,000296,_ZN4sead9SafeArrayIN4gsys16ModelSceneConfig16DepthShadowParamELi2EEC2Ev
|
||||||
0x0000007100c1d9fc,U,000480,_ZN4sead9SafeArrayIN3agl3utl9ParameterINS_15FixedSafeStringILi64EEEEELi8EEC2Ev
|
0x0000007100c1d9fc,O,000480,_ZN4sead9SafeArrayIN3agl3utl9ParameterINS_15FixedSafeStringILi64EEEEELi8EEC2Ev
|
||||||
0x0000007100c1dbdc,U,000476,_ZN4sead9SafeArrayIN3agl3utl9ParameterINS_15FixedSafeStringILi32EEEEELi8EEC2Ev
|
0x0000007100c1dbdc,O,000476,_ZN4sead9SafeArrayIN3agl3utl9ParameterINS_15FixedSafeStringILi32EEEEELi8EEC2Ev
|
||||||
0x0000007100c1ddb8,U,000008,
|
0x0000007100c1ddb8,O,000008,_ZNK4gsys16ModelSceneConfig31getStaticDepthShadowDepthFormatEv
|
||||||
0x0000007100c1ddc0,U,000008,
|
0x0000007100c1ddc0,O,000008,_ZNK4gsys16ModelSceneConfig40getStaticDepthShadowDepthShadowMapFormatEv
|
||||||
0x0000007100c1ddc8,U,000032,_ZNK3eui6Screen8isClosedEv
|
0x0000007100c1ddc8,O,000032,_ZN4gsys16ModelSceneConfig8preRead_Ev
|
||||||
0x0000007100c1dde8,U,000032,
|
0x0000007100c1dde8,O,000032,_ZThn8_N4gsys16ModelSceneConfig8preRead_Ev
|
||||||
0x0000007100c1de08,U,000568,_ZNK4gsys16ModelSceneConfig9preWrite_Ev
|
0x0000007100c1de08,O,000568,_ZNK4gsys16ModelSceneConfig9preWrite_Ev
|
||||||
0x0000007100c1e040,U,000028,
|
0x0000007100c1e040,O,000028,_ZThn8_NK4gsys16ModelSceneConfig9preWrite_Ev
|
||||||
0x0000007100c1e05c,U,001504,_ZN4gsys16ModelSceneConfig9postRead_Ev
|
0x0000007100c1e05c,O,001504,_ZN4gsys16ModelSceneConfig9postRead_Ev
|
||||||
0x0000007100c1e63c,U,000008,
|
0x0000007100c1e63c,O,000008,_ZThn8_N4gsys16ModelSceneConfig9postRead_Ev
|
||||||
0x0000007100c1e644,U,000040,_ZNK4gsys16ModelSceneConfig21getEnvObjSetTemplate_Ei
|
0x0000007100c1e644,O,000040,_ZNK4gsys16ModelSceneConfig21getEnvObjSetTemplate_Ei
|
||||||
0x0000007100c1e66c,U,001168,_ZN3agl3env6EnvObjC2Ev
|
0x0000007100c1e66c,O,001168,_ZN4gsys16ModelSceneConfig17EnvObjSetTemplateC1Ev
|
||||||
0x0000007100c1eafc,U,001520,_ZN4gsys20ModelSceneConfigListC2Ev
|
0x0000007100c1eafc,O,001520,_ZN4gsys20ModelSceneConfigListC1Ev
|
||||||
0x0000007100c1f0ec,U,000500,_ZN4sead9SafeArrayIN4gsys16ModelSceneConfigELi32EEC2Ev
|
0x0000007100c1f0ec,O,000500,_ZN4sead9SafeArrayIN4gsys16ModelSceneConfigELi32EEC2Ev
|
||||||
0x0000007100c1f2e0,U,000076,_ZN4gsys20ModelSceneConfigList12applyResouceEPKv
|
0x0000007100c1f2e0,O,000076,_ZN4gsys20ModelSceneConfigList12applyResouceEPKv
|
||||||
0x0000007100c1f32c,U,000492,_ZN4gsys20ModelSceneConfigList5setupERKN4sead14SafeStringBaseIcEE
|
0x0000007100c1f32c,O,000492,_ZN4gsys20ModelSceneConfigList5setupERKN4sead14SafeStringBaseIcEE
|
||||||
0x0000007100c1f518,U,000560,_ZN4gsys20ModelSceneConfigList6reloadERKN4sead14SafeStringBaseIcEE
|
0x0000007100c1f518,O,000560,_ZN4gsys20ModelSceneConfigList6reloadERKN4sead14SafeStringBaseIcEE
|
||||||
0x0000007100c1f748,U,000096,_ZNK4gsys20ModelSceneConfigList9preWrite_Ev
|
0x0000007100c1f748,O,000096,_ZNK4gsys20ModelSceneConfigList9preWrite_Ev
|
||||||
0x0000007100c1f7a8,U,000088,
|
0x0000007100c1f7a8,O,000088,_ZThn8_NK4gsys20ModelSceneConfigList9preWrite_Ev
|
||||||
0x0000007100c1f800,U,000112,_ZN4gsys20ModelSceneConfigList8preRead_Ev
|
0x0000007100c1f800,O,000112,_ZN4gsys20ModelSceneConfigList8preRead_Ev
|
||||||
0x0000007100c1f870,U,000112,
|
0x0000007100c1f870,O,000112,_ZThn8_N4gsys20ModelSceneConfigList8preRead_Ev
|
||||||
0x0000007100c1f8e0,U,000460,_ZN4gsys20ModelSceneConfigList9postRead_Ev
|
0x0000007100c1f8e0,M,000460,_ZN4gsys20ModelSceneConfigList9postRead_Ev
|
||||||
0x0000007100c1faac,U,000008,
|
0x0000007100c1faac,O,000008,_ZThn8_N4gsys20ModelSceneConfigList9postRead_Ev
|
||||||
0x0000007100c1fab4,U,000016,
|
0x0000007100c1fab4,O,000016,_ZN4gsys20ModelSceneConfigList21EnvObjSetTemplateList8preRead_Ev
|
||||||
0x0000007100c1fac4,U,001012,
|
0x0000007100c1fac4,O,001012,_ZN4gsys16ModelSceneConfigD2Ev
|
||||||
0x0000007100c1feb8,U,000036,
|
0x0000007100c1feb8,O,000036,_ZN4gsys16ModelSceneConfigD0Ev
|
||||||
0x0000007100c1fedc,U,000008,
|
0x0000007100c1fedc,O,000008,_ZThn8_N4gsys16ModelSceneConfigD1Ev
|
||||||
0x0000007100c1fee4,U,000040,
|
0x0000007100c1fee4,O,000040,_ZThn8_N4gsys16ModelSceneConfigD0Ev
|
||||||
0x0000007100c1ff0c,U,000004,j__ZdlPv_772
|
0x0000007100c1ff0c,O,000004,_ZN4gsys20ModelSceneConfigList21EnvObjSetTemplateListD0Ev
|
||||||
0x0000007100c1ff10,U,001352,
|
0x0000007100c1ff10,O,001352,_ZN4gsys20ModelSceneConfigListD2Ev
|
||||||
0x0000007100c20458,U,000036,
|
0x0000007100c20458,O,000036,_ZN4gsys20ModelSceneConfigListD0Ev
|
||||||
0x0000007100c2047c,U,000008,
|
0x0000007100c2047c,O,000008,_ZThn8_N4gsys20ModelSceneConfigListD1Ev
|
||||||
0x0000007100c20484,U,000040,
|
0x0000007100c20484,O,000040,_ZThn8_N4gsys20ModelSceneConfigListD0Ev
|
||||||
0x0000007100c204ac,U,000064,
|
0x0000007100c204ac,O,000064,_ZN4gsys16ModelSceneConfig17EnvObjSetTemplateD2Ev
|
||||||
0x0000007100c204ec,U,000004,j__ZdlPv_773
|
0x0000007100c204ec,O,000004,_ZN4gsys16ModelSceneConfig17EnvObjSetTemplateD0Ev
|
||||||
0x0000007100c204f0,U,000172,
|
0x0000007100c204f0,O,000172,_ZN4gsys12_GLOBAL__N_111DepthFormat9getArray_Ev
|
||||||
0x0000007100c2059c,U,000004,j__ZdlPv_774
|
0x0000007100c2059c,O,000004,_ZN4sead15FixedSafeStringILi19EED0Ev
|
||||||
0x0000007100c205a0,U,000240,_ZN4sead15FixedSafeStringILi27EEaSERKNS_14SafeStringBaseIcEE
|
0x0000007100c205a0,O,000240,_ZN4sead15FixedSafeStringILi19EEaSERKNS_14SafeStringBaseIcEE
|
||||||
0x0000007100c20690,U,000004,j__ZdlPv_775
|
0x0000007100c20690,O,000004,_ZN4sead19FixedSafeStringBaseIcLi19EED0Ev
|
||||||
0x0000007100c20694,U,000240,_ZN4sead19FixedSafeStringBaseIcLi27EEaSERKNS_14SafeStringBaseIcEE
|
0x0000007100c20694,O,000240,_ZN4sead19FixedSafeStringBaseIcLi19EEaSERKNS_14SafeStringBaseIcEE
|
||||||
0x0000007100c20784,U,000168,
|
0x0000007100c20784,O,000168,_ZN4gsys12_GLOBAL__N_120DepthShadowMapFormat9getArray_Ev
|
||||||
0x0000007100c2082c,U,000004,j__ZdlPv_776
|
0x0000007100c2082c,O,000004,_ZN4sead15FixedSafeStringILi57EED0Ev
|
||||||
0x0000007100c20830,U,000240,_ZN4sead15FixedSafeStringILi50EEaSERKNS_14SafeStringBaseIcEE
|
0x0000007100c20830,O,000240,_ZN4sead15FixedSafeStringILi57EEaSERKNS_14SafeStringBaseIcEE
|
||||||
0x0000007100c20920,U,000004,j__ZdlPv_777
|
0x0000007100c20920,O,000004,_ZN4sead19FixedSafeStringBaseIcLi57EED0Ev
|
||||||
0x0000007100c20924,U,000240,_ZN4sead19FixedSafeStringBaseIcLi50EEaSERKNS_14SafeStringBaseIcEE
|
0x0000007100c20924,O,000240,_ZN4sead19FixedSafeStringBaseIcLi57EEaSERKNS_14SafeStringBaseIcEE
|
||||||
0x0000007100c20a14,U,000504,_ZN4sead9SafeArrayIN4gsys16ModelSceneConfigELi32EED2Ev
|
0x0000007100c20a14,O,000504,_ZN4sead9SafeArrayIN4gsys16ModelSceneConfigELi32EED2Ev
|
||||||
0x0000007100c20c0c,U,000696,
|
0x0000007100c20c0c,O,000696,_GLOBAL__sub_I_gsysModelSceneConfig.cpp
|
||||||
0x0000007100c20ec4,U,000120,_ZN4gsys17ModelSceneContextC2Ev
|
0x0000007100c20ec4,U,000120,_ZN4gsys17ModelSceneContextC2Ev
|
||||||
0x0000007100c20f3c,U,000096,
|
0x0000007100c20f3c,U,000096,
|
||||||
0x0000007100c20f9c,U,000104,
|
0x0000007100c20f9c,U,000104,
|
||||||
|
@ -86267,9 +86267,9 @@ Address,Quality,Size,Name
|
||||||
0x000000710101c90c,O,000412,_ZN4ksys3snd25EnvPaletteReactiveBgmInfo25EnvPaletteReactiveBgmEnum5text_Ei
|
0x000000710101c90c,O,000412,_ZN4ksys3snd25EnvPaletteReactiveBgmInfo25EnvPaletteReactiveBgmEnum5text_Ei
|
||||||
0x000000710101caa8,U,000428,
|
0x000000710101caa8,U,000428,
|
||||||
0x000000710101cc54,U,000004,j__ZdlPv_1094
|
0x000000710101cc54,U,000004,j__ZdlPv_1094
|
||||||
0x000000710101cc58,U,000240,_ZN4sead19FixedSafeStringBaseIcLi113EEaSERKNS_14SafeStringBaseIcEE
|
0x000000710101cc58,U,000240,
|
||||||
0x000000710101cd48,U,000004,j__ZdlPv_1095
|
0x000000710101cd48,U,000004,j__ZdlPv_1095
|
||||||
0x000000710101cd4c,U,000240,_ZN4sead19FixedSafeStringBaseIcLi19EEaSERKNS_14SafeStringBaseIcEE
|
0x000000710101cd4c,U,000240,
|
||||||
0x000000710101ce3c,U,000032,
|
0x000000710101ce3c,U,000032,
|
||||||
0x000000710101ce5c,U,000176,
|
0x000000710101ce5c,U,000176,
|
||||||
0x000000710101cf0c,U,000072,
|
0x000000710101cf0c,U,000072,
|
||||||
|
|
Can't render this file because it is too large.
|
2
lib/agl
2
lib/agl
|
@ -1 +1 @@
|
||||||
Subproject commit eb11f3af9f3a39f4e515ec53f122a11527083c1b
|
Subproject commit 0f55dfbaa9fcaf53e769cfc2cfc6e94187793e75
|
|
@ -1,14 +1,22 @@
|
||||||
project(gsys CXX ASM)
|
project(gsys CXX ASM)
|
||||||
|
|
||||||
add_library(gsys OBJECT
|
add_library(gsys OBJECT
|
||||||
|
include/gsys/gsysMaskedProjLight.h
|
||||||
|
include/gsys/gsysMaskedProjLight.h
|
||||||
|
include/gsys/gsysMaskedSpotLight.h
|
||||||
include/gsys/gsysModel.h
|
include/gsys/gsysModel.h
|
||||||
include/gsys/gsysModelAccessKey.h
|
include/gsys/gsysModelAccessKey.h
|
||||||
include/gsys/gsysModelNW.h
|
include/gsys/gsysModelNW.h
|
||||||
|
include/gsys/gsysModelSceneConfig.h
|
||||||
include/gsys/gsysModelUnit.h
|
include/gsys/gsysModelUnit.h
|
||||||
|
include/gsys/gsysOfxLensFlareRig.h
|
||||||
include/gsys/gsysORUtil.h
|
include/gsys/gsysORUtil.h
|
||||||
include/gsys/gsysParticleConfig.h
|
include/gsys/gsysParticleConfig.h
|
||||||
|
include/gsys/gsysPointLight.h
|
||||||
|
include/gsys/gsysSpotLight.h
|
||||||
|
|
||||||
src/gsys/gsysModelAccessKey.cpp
|
src/gsys/gsysModelAccessKey.cpp
|
||||||
|
src/gsys/gsysModelSceneConfig.cpp
|
||||||
src/gsys/gsysParticleConfig.cpp
|
src/gsys/gsysParticleConfig.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <agl/env/aglEnvObj.h>
|
||||||
|
|
||||||
|
namespace gsys {
|
||||||
|
|
||||||
|
class MaskedSpotLight;
|
||||||
|
class PointLight;
|
||||||
|
class SpotLight;
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
template <typename T>
|
||||||
|
class LightRigObj {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern template class LightRigObj<MaskedSpotLight>;
|
||||||
|
extern template class LightRigObj<PointLight>;
|
||||||
|
extern template class LightRigObj<SpotLight>;
|
||||||
|
|
||||||
|
} // namespace gsys
|
|
@ -0,0 +1,19 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <agl/env/aglEnvObj.h>
|
||||||
|
|
||||||
|
namespace gsys {
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class MaskedProjLight {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class MaskedProjLightRig {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gsys
|
|
@ -0,0 +1,19 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <agl/env/aglEnvObj.h>
|
||||||
|
|
||||||
|
namespace gsys {
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class MaskedSpotLight {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class MaskedSpotLightRig {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gsys
|
|
@ -0,0 +1,287 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <agl/env/aglEnvObjBuffer.h>
|
||||||
|
#include <agl/env/aglEnvObjMgr.h>
|
||||||
|
#include <agl/env/aglEnvObjSetMgr.h>
|
||||||
|
#include <agl/utl/aglParameter.h>
|
||||||
|
#include <agl/utl/aglParameterIO.h>
|
||||||
|
#include <agl/utl/aglParameterObj.h>
|
||||||
|
#include <basis/seadTypes.h>
|
||||||
|
#include <container/seadSafeArray.h>
|
||||||
|
#include <hostio/seadHostIONode.h>
|
||||||
|
#include <math/seadVector.h>
|
||||||
|
#include <prim/seadSafeString.h>
|
||||||
|
|
||||||
|
namespace gsys {
|
||||||
|
|
||||||
|
class ModelSceneConfigList;
|
||||||
|
|
||||||
|
class ModelSceneConfig : public sead::hostio::Node, public agl::utl::IParameterObj {
|
||||||
|
public:
|
||||||
|
static constexpr int NumFeatures = 42;
|
||||||
|
|
||||||
|
struct FeatureDescription {
|
||||||
|
const char* description;
|
||||||
|
const char* parameter_name;
|
||||||
|
bool _10;
|
||||||
|
bool _11;
|
||||||
|
bool should_create_by_default;
|
||||||
|
const char* jp_description;
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class Feature {
|
||||||
|
LightMap = 0,
|
||||||
|
LightProbe = 1,
|
||||||
|
SnapShot = 2,
|
||||||
|
DepthShadow = 3,
|
||||||
|
MaskedLight = 4,
|
||||||
|
StaticDepthShadow = 5,
|
||||||
|
EnvCubeMap = 6,
|
||||||
|
Reflection = 7,
|
||||||
|
LocalReflection = 8,
|
||||||
|
ZPrePass = 9,
|
||||||
|
LightPrePass = 10,
|
||||||
|
ShadowPrePass = 11,
|
||||||
|
Decal = 12,
|
||||||
|
NormalDrawer = 13,
|
||||||
|
SSAO = 14,
|
||||||
|
SSII = 15,
|
||||||
|
SSSSS = 16,
|
||||||
|
OcclusionQeuery = 17,
|
||||||
|
DeferredShading = 18,
|
||||||
|
OpaqueAlphaMask = 19,
|
||||||
|
OutlineSilhouette = 20,
|
||||||
|
DepthSilhouette = 21,
|
||||||
|
XluSeal = 22,
|
||||||
|
Cloud = 23,
|
||||||
|
VolumeMask = 24,
|
||||||
|
XluWater = 25,
|
||||||
|
Xlu = 26,
|
||||||
|
XluIndirect = 27,
|
||||||
|
XluFx = 28,
|
||||||
|
ReducedBuffer = 29,
|
||||||
|
ShadowMask = 30,
|
||||||
|
RadialBlur = 31,
|
||||||
|
DOF = 32,
|
||||||
|
XluZPrePass = 33,
|
||||||
|
Bloom = 34,
|
||||||
|
GlareFilter = 35,
|
||||||
|
FlareFilter = 36,
|
||||||
|
OccludedEffect = 37,
|
||||||
|
AutoExposure = 38,
|
||||||
|
HDR = 39,
|
||||||
|
ColorCorrection = 40,
|
||||||
|
FilterAA = 41,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct DepthShadowParam {
|
||||||
|
agl::utl::Parameter<bool> use_uniform_mtx;
|
||||||
|
agl::utl::Parameter<int> cascade_num;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<float>, 4> near;
|
||||||
|
agl::utl::Parameter<float> far;
|
||||||
|
agl::utl::Parameter<float> offset_near;
|
||||||
|
agl::utl::Parameter<float> offset_far;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct EnvObjSetTemplate : agl::utl::IParameterObj {
|
||||||
|
EnvObjSetTemplate();
|
||||||
|
|
||||||
|
agl::utl::Parameter<bool> enable;
|
||||||
|
agl::utl::Parameter<int> num;
|
||||||
|
agl::utl::Parameter<int> ambient_light_num;
|
||||||
|
agl::utl::Parameter<int> directional_light_num;
|
||||||
|
agl::utl::Parameter<int> hemisphere_light_num;
|
||||||
|
agl::utl::Parameter<int> fog_num;
|
||||||
|
agl::utl::Parameter<int> light_map_obj_num;
|
||||||
|
agl::utl::Parameter<sead::FixedSafeString<32>> template_name;
|
||||||
|
};
|
||||||
|
|
||||||
|
ModelSceneConfig();
|
||||||
|
|
||||||
|
int getStaticDepthShadowDepthFormat() const;
|
||||||
|
int getStaticDepthShadowDepthShadowMapFormat() const;
|
||||||
|
|
||||||
|
EnvObjSetTemplate& getEnvObjSetTemplate_(int index) const;
|
||||||
|
|
||||||
|
bool preRead_() override;
|
||||||
|
void postRead_() override;
|
||||||
|
bool preWrite_() const override;
|
||||||
|
|
||||||
|
static constexpr int cConfig_Max = 32;
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class ModelSceneConfigList;
|
||||||
|
|
||||||
|
agl::utl::IParameterObj _c0;
|
||||||
|
agl::env::EnvObjMgr::InitArg mEnvObjMgrInitArg;
|
||||||
|
agl::env::EnvObjBuffer::AllocateArg mEnvObjBufferAllocateArg;
|
||||||
|
|
||||||
|
sead::SafeArray<agl::utl::Parameter<bool>, NumFeatures> mEnabledFeatures;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<bool>, NumFeatures> mShouldCreateFeatures;
|
||||||
|
agl::env::EnvObjSetMgr::InitArg mEnvObjSetMgrInitArg;
|
||||||
|
const sead::FixedSafeString<32>* mConfigName{};
|
||||||
|
ModelSceneConfigList* mpConfigList{};
|
||||||
|
bool _1798 = false;
|
||||||
|
bool _1799 = false;
|
||||||
|
sead::FixedSafeString<64> _17A0;
|
||||||
|
int mIndex1 = -1;
|
||||||
|
int mIndex2 = -1;
|
||||||
|
int mStaticSdwDepthFormat;
|
||||||
|
int mStaticSdwShadowMapFormat;
|
||||||
|
agl::utl::Parameter<float> mOpaPolygonOffset;
|
||||||
|
agl::utl::Parameter<float> mOpaPolygonScale;
|
||||||
|
agl::utl::Parameter<float> mXluPolygonOffset;
|
||||||
|
agl::utl::Parameter<float> mXluPolygonScale;
|
||||||
|
agl::utl::Parameter<float> mRevPolygonOffset;
|
||||||
|
agl::utl::Parameter<float> mRevPolygonScale;
|
||||||
|
agl::utl::Parameter<bool> mLinearLightingEnable;
|
||||||
|
agl::utl::Parameter<bool> mHizExpandEnable;
|
||||||
|
agl::utl::Parameter<bool> mNldEnable;
|
||||||
|
agl::utl::Parameter<bool> mNld32Bit;
|
||||||
|
agl::utl::Parameter<bool> mNldHalf32Bit;
|
||||||
|
agl::utl::Parameter<bool> mDepthReduce;
|
||||||
|
agl::utl::Parameter<bool> mZPrePassSelectable;
|
||||||
|
agl::utl::Parameter<bool> mDepthClear;
|
||||||
|
agl::utl::Parameter<bool> mGBufferAlbedoSrgb;
|
||||||
|
agl::utl::Parameter<bool> mIndirectBufferLDR;
|
||||||
|
agl::utl::Parameter<bool> mReducedBuffer16Bit;
|
||||||
|
agl::utl::Parameter<bool> mReducedBufferEdgeAdjustBake;
|
||||||
|
#ifdef UKING_NX_V150
|
||||||
|
agl::utl::Parameter<bool> mReducedBufferBlurAdjustBake;
|
||||||
|
#endif
|
||||||
|
agl::utl::Parameter<bool> mReducedBufferEdgeAdjust;
|
||||||
|
agl::utl::Parameter<float> mReducedBufferEdgeAdjustCoeff;
|
||||||
|
agl::utl::Parameter<bool> mGBufferAlbedoReduceNearest;
|
||||||
|
agl::utl::Parameter<bool> mGBufferNormal8Bit;
|
||||||
|
agl::utl::Parameter<bool> mGBufferNormalDisableReduce;
|
||||||
|
agl::utl::Parameter<bool> mGBufferNormalReduceNearest;
|
||||||
|
agl::utl::Parameter<bool> mGBufferNormalZSignW;
|
||||||
|
agl::utl::Parameter<bool> mGBufferDepth;
|
||||||
|
agl::utl::Parameter<int> mGBufferMaterialIdFormat;
|
||||||
|
agl::utl::Parameter<int> mBaseResoWidth;
|
||||||
|
agl::utl::Parameter<int> mBaseResoHeight;
|
||||||
|
agl::utl::Parameter<bool> mGpuStressAnalyzerEnable;
|
||||||
|
agl::utl::Parameter<bool> mEnableDrcFilterAa;
|
||||||
|
agl::utl::Parameter<bool> mInitFilterAaSmaaResTextures;
|
||||||
|
agl::utl::Parameter<bool> mGpuStressAnalyzerReduceBufferenable;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<int>, 3> mLmMax;
|
||||||
|
agl::utl::Parameter<int> mLightMapSizeSphere;
|
||||||
|
agl::utl::Parameter<int> mLightMapCube;
|
||||||
|
agl::utl::Parameter<int> mLightMapAmbientLight;
|
||||||
|
agl::utl::Parameter<int> mLightMapHemiSphereLight;
|
||||||
|
agl::utl::Parameter<int> mLightMapDirectionalLight;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<int>, 2> mCubeMapMaxTex;
|
||||||
|
agl::utl::Parameter<bool> mLightPrepassTextureHalf;
|
||||||
|
agl::utl::Parameter<bool> mUseDecalAo;
|
||||||
|
agl::utl::Parameter<int> mDecalAoObjectMax;
|
||||||
|
agl::utl::Parameter<int> mDecalAoTextureMax;
|
||||||
|
agl::utl::Parameter<int> mDecalAoTextureWidth;
|
||||||
|
agl::utl::Parameter<int> mDecalAoTextureHeight;
|
||||||
|
agl::utl::Parameter<int> mDecalAoTextureCannelNum;
|
||||||
|
agl::utl::Parameter<bool> mUseDecalBuffer;
|
||||||
|
agl::utl::Parameter<bool> mUseDecalTrail;
|
||||||
|
agl::utl::Parameter<int> mStaticSdwWidth;
|
||||||
|
mutable agl::utl::Parameter<sead::FixedSafeString<32>> mStaticSdwDepthFormatName;
|
||||||
|
mutable agl::utl::Parameter<sead::FixedSafeString<32>> mStaticSdwShadowMapFormatName;
|
||||||
|
agl::utl::Parameter<bool> mMaskedLightShadowOnly;
|
||||||
|
agl::utl::Parameter<int> mDepthShadowClipPlaneEnable;
|
||||||
|
agl::utl::Parameter<int> mDepthShadowExClipPlaneNum;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<sead::Vector4f>, 4> mDepthShadowClipPlanes;
|
||||||
|
agl::utl::Parameter<float> mDepthShadowPcfOffset;
|
||||||
|
agl::utl::Parameter<int> mDepthShadowTexWidth;
|
||||||
|
agl::utl::Parameter<int> mDepthShadowTexHeight;
|
||||||
|
agl::utl::Parameter<bool> mDepthShadowEnableBbClip;
|
||||||
|
agl::utl::Parameter<bool> mDepthShadowCheckOnly;
|
||||||
|
agl::utl::Parameter<bool> mDepthShadowMatrixViewCoordinate;
|
||||||
|
agl::utl::Parameter<bool> mDepthShadowEnableHiZ;
|
||||||
|
agl::utl::Parameter<bool> mDepthShadowForceArray;
|
||||||
|
agl::utl::Parameter<bool> mBloomCorrectDepth;
|
||||||
|
agl::utl::Parameter<float> mDepthShadowNearFarMargin;
|
||||||
|
agl::utl::Parameter<float> mDepthShadowPolygonOffset;
|
||||||
|
agl::utl::Parameter<float> mDepthShadowPolygonScale;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<float>, 4> mDepthShadowRefValueThresholds;
|
||||||
|
agl::utl::Parameter<bool> mDepthShadowReleaseGbuffer;
|
||||||
|
sead::SafeArray<DepthShadowParam, 2> mDepthShadowParams;
|
||||||
|
agl::utl::Parameter<int> mProjectionShadowNum;
|
||||||
|
agl::utl::Parameter<bool> mProjShadowMatrixViewCoordinate;
|
||||||
|
agl::utl::Parameter<float> mSsaoWidthScale;
|
||||||
|
agl::utl::Parameter<bool> mSsaoIsDepthFull;
|
||||||
|
agl::utl::Parameter<int> mModelSceneEnvDataSetNum;
|
||||||
|
agl::utl::Parameter<bool> mCubemapArray;
|
||||||
|
agl::utl::Parameter<float> mCubemapDynamicRange;
|
||||||
|
agl::utl::Parameter<float> mCubemapHdrComposePower;
|
||||||
|
agl::utl::Parameter<u32> mCubemapMaxModelUnitNum;
|
||||||
|
agl::utl::Parameter<u32> mCubemapMaxShapeNum;
|
||||||
|
agl::utl::Parameter<bool> mCubemapDisableEncode;
|
||||||
|
agl::utl::Parameter<int> mModelNum;
|
||||||
|
agl::utl::Parameter<int> mModelUnitNum;
|
||||||
|
agl::utl::Parameter<int> mShapeNum;
|
||||||
|
agl::utl::Parameter<int> mOcclusionQueryNum;
|
||||||
|
agl::utl::Parameter<int> mEnvObjPointLightNum;
|
||||||
|
agl::utl::Parameter<int> mEnvObjPointLightRigNum;
|
||||||
|
agl::utl::Parameter<int> mEnvObjSpotLightNum;
|
||||||
|
agl::utl::Parameter<int> mEnvObjSpotLightRigNum;
|
||||||
|
agl::utl::Parameter<int> mEnvObjMaskedSpotLightNum;
|
||||||
|
agl::utl::Parameter<int> mEnvObjMaskedSpotLightRigNum;
|
||||||
|
agl::utl::Parameter<int> mEnvObjMaskedProjLightNum;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLensFlare;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLensFlarePreset;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLensFlareDynamic;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLensFlareDynamicPreset;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLensFlareRig;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLensFlareRigObj;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLensFlareRigPreset;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLargeLensFlareRig;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLargeLensFlareRigObj;
|
||||||
|
agl::utl::Parameter<int> mOfxNumLargeLensFlareRigPreset;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<sead::FixedSafeString<64>>, 8> mDeferredShadingModels;
|
||||||
|
agl::utl::Parameter<sead::FixedSafeString<64>> mSceneMaterialModel;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<sead::FixedSafeString<32>>, 8> mUserVisualizeClrNames;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<sead::FixedSafeString<32>>, 8> mUserVisualizeTexNames;
|
||||||
|
};
|
||||||
|
|
||||||
|
class ModelSceneConfigList : public sead::hostio::Node, public agl::utl::IParameterIO {
|
||||||
|
public:
|
||||||
|
struct EnvObjSetTemplateList : agl::utl::IParameterList {
|
||||||
|
EnvObjSetTemplateList();
|
||||||
|
bool preRead_() override;
|
||||||
|
|
||||||
|
bool unk = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
ModelSceneConfigList();
|
||||||
|
|
||||||
|
// sic
|
||||||
|
void applyResouce(const void* resource);
|
||||||
|
|
||||||
|
const ModelSceneConfig& setup(const sead::SafeString& config_name);
|
||||||
|
void reload(const sead::SafeString& config_name);
|
||||||
|
|
||||||
|
void copyPassConfig(const sead::SafeString& config_name_1,
|
||||||
|
const sead::SafeString& config_name_2);
|
||||||
|
|
||||||
|
void copyPassConfig(int config_idx_1, int config_idx_2);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool preRead_() override;
|
||||||
|
void postRead_() override;
|
||||||
|
bool preWrite_() const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend class ModelSceneConfig;
|
||||||
|
|
||||||
|
ModelSceneConfig& addNewConfig_(const sead::SafeString& config_name);
|
||||||
|
void deleteConfig_(ModelSceneConfig* config);
|
||||||
|
|
||||||
|
agl::utl::IParameterObj mNameArrayObj;
|
||||||
|
EnvObjSetTemplateList mEnvObjSetTemplateList;
|
||||||
|
sead::SafeArray<ModelSceneConfig, ModelSceneConfig::cConfig_Max> mConfigs;
|
||||||
|
sead::SafeArray<agl::utl::Parameter<sead::FixedSafeString<32>>, ModelSceneConfig::cConfig_Max>
|
||||||
|
mConfigNames;
|
||||||
|
sead::SafeArray<ModelSceneConfig::EnvObjSetTemplate, 8> mEnvObjSetTemplates;
|
||||||
|
int mCurrentConfigIndex = -1;
|
||||||
|
bool _821e4 = true;
|
||||||
|
const void* mResource = nullptr;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gsys
|
|
@ -14,6 +14,16 @@ enum class Icon {
|
||||||
_b = 0xB,
|
_b = 0xB,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class Category {
|
||||||
|
_0 = 0,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class Attribute {
|
||||||
|
_2 = 2,
|
||||||
|
};
|
||||||
|
|
||||||
|
void setNodeMeta(sead::hostio::Node* node, Category category, sead::Heap* heap);
|
||||||
|
void setNodeMeta(sead::hostio::Node* node, Category category, Attribute attr, sead::Heap* heap);
|
||||||
void setNodeMetaIcon(sead::hostio::Node* node, Icon icon, sead::Heap* heap);
|
void setNodeMetaIcon(sead::hostio::Node* node, Icon icon, sead::Heap* heap);
|
||||||
|
|
||||||
} // namespace gsys::ORUtil
|
} // namespace gsys::ORUtil
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <agl/env/aglEnvObj.h>
|
||||||
|
|
||||||
|
namespace gsys {
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class OfxLensFlareImpl {
|
||||||
|
public:
|
||||||
|
// TODO
|
||||||
|
class Preset {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class OfxLensFlareRig {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class OfxLargeLensFlareImpl {
|
||||||
|
public:
|
||||||
|
// TODO
|
||||||
|
class Preset {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class OfxLargeLensFlareRig {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gsys
|
|
@ -0,0 +1,16 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <agl/env/aglEnvObj.h>
|
||||||
|
|
||||||
|
namespace gsys {
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class PointLight {};
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class PointLightRig {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gsys
|
|
@ -0,0 +1,16 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <agl/env/aglEnvObj.h>
|
||||||
|
|
||||||
|
namespace gsys {
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class SpotLight {};
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
class SpotLightRig {
|
||||||
|
public:
|
||||||
|
static const agl::env::TypeInfo* sTypeInfo;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace gsys
|
|
@ -0,0 +1,638 @@
|
||||||
|
#include "gsys/gsysModelSceneConfig.h"
|
||||||
|
#include <agl/detail/aglPrivateResource.h>
|
||||||
|
#include <agl/env/aglFog.h>
|
||||||
|
#include <agl/env/aglLight.h>
|
||||||
|
#include <agl/env/aglProjector.h>
|
||||||
|
#include <agl/pfx/aglBloom.h>
|
||||||
|
#include <agl/pfx/aglDepthOfField.h>
|
||||||
|
#include <basis/seadRawPrint.h>
|
||||||
|
#include <prim/seadEnum.h>
|
||||||
|
#include "agl/fx/aglFxOfxLensFlare.h"
|
||||||
|
#include "gsys/gsysLightRigObj.h"
|
||||||
|
#include "gsys/gsysMaskedProjLight.h"
|
||||||
|
#include "gsys/gsysMaskedSpotLight.h"
|
||||||
|
#include "gsys/gsysORUtil.h"
|
||||||
|
#include "gsys/gsysOfxLensFlareRig.h"
|
||||||
|
#include "gsys/gsysPointLight.h"
|
||||||
|
#include "gsys/gsysSpotLight.h"
|
||||||
|
|
||||||
|
namespace gsys {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
SEAD_ENUM_EX(DepthFormat, Depth_32, Depth_16)
|
||||||
|
SEAD_ENUM_EX_VALUES(DepthFormat, 60, 59)
|
||||||
|
|
||||||
|
SEAD_ENUM_EX(DepthShadowMapFormat, R32_G32_float, R16_G16_float, R16_G16_uNorm, R8_G8_uNorm)
|
||||||
|
SEAD_ENUM_EX_VALUES(DepthShadowMapFormat, 38, 25, 21, 10)
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
static sead::FixedSafeString<32> sDepthFormat32Str{DepthFormat(60).text()};
|
||||||
|
|
||||||
|
static sead::FixedSafeString<32> sDepthShadowMapFormat_R32_G32_float_Str{
|
||||||
|
DepthShadowMapFormat(38).text()};
|
||||||
|
|
||||||
|
static const ModelSceneConfig::FeatureDescription sModelSceneFeatures[] = {
|
||||||
|
{"LightMap", "light_map", false, false, true, "環境マップにライトを合成"},
|
||||||
|
{"LightProbe", "light_probe", false, false, false, "静的なライトプローブ"},
|
||||||
|
{"SnapShot", "snap_shot", false, false, false, "モデルのスナップショットを作成"},
|
||||||
|
{"DepthShadow", "depth_shadow", false, false, false, "動的デプスシャドウ"},
|
||||||
|
{"MaskedLight", "masked_light", false, false, false, "シャドウによってマスクされるライト"},
|
||||||
|
{"StaticDepthShadow", "static_depth_shadow", false, false, false, "静的デプスシャドウ"},
|
||||||
|
{"EnvCubeMap", "env_cube_map", false, false, true, "環境キューブマップ"},
|
||||||
|
{"Reflection", "reflection", false, false, false, "平面的な反射"},
|
||||||
|
{"LocalReflection", "local_reflection", false, false, false, "ローカルリフレクション"},
|
||||||
|
{"Z-PrePass", "z_pre_pass", true, false, true, "Z値だけをを先に埋める"},
|
||||||
|
{"Light-PrePass", "light_pre_pass", false, false, false,
|
||||||
|
"Deferred Lighting用のライトバッファ生成"},
|
||||||
|
{"ShadowPrePass", "shadow_pre_pass", false, false, false,
|
||||||
|
"Deferred Shadowing用のシャドウバッファ生成"},
|
||||||
|
{"Decal", "decal", false, false, false, "デカール"},
|
||||||
|
{"NormalDrawer", "normal_drawer", false, false, false, "法線をモディファイしたり"},
|
||||||
|
{"SSAO", "ssocclusion", false, false, false, "スクリーンスペースのアンビエントオクルージョン"},
|
||||||
|
{"SSII", "ssii", false, false, false, "スクリーンスペースの間接光"},
|
||||||
|
{"SSSSS", "sssss", false, false, false, "スクリーンスペースのサブサーフェススキャッタリング"},
|
||||||
|
{"OcclusionQeuery", "occlusion_query", false, false, false, "遮蔽されているモデルをカリング"},
|
||||||
|
{"DeferredShading", "deferred_opa_alphamask", false, false, false,
|
||||||
|
"【モデル】不透明と抜き(デファード)"},
|
||||||
|
{"Opaque + AlphaMask", "opa_alphamask", true, true, true, "【モデル】不透明と抜き"},
|
||||||
|
{"OutlineSilhouette", "outline_silhouette", false, false, false,
|
||||||
|
"【モデル】輪郭に沿ってアウトラインを描画"},
|
||||||
|
{"DepthSilhouette", "depth_silhouette", true, true, true,
|
||||||
|
"【モデル】遮蔽されたときのシルエット表示"},
|
||||||
|
{"Xlu(Seal)", "xlu_seal", true, true, true, "【モデル】半透明(シールポリゴン)"},
|
||||||
|
{"Cloud", "cloud", false, false, false, "プロシージャル雲"},
|
||||||
|
{"VolumeMask", "volume_mask", false, false, false, "空間マスク"},
|
||||||
|
{"Xlu(Water)", "xlu_water", true, true, true, "【モデル】半透明(水)"},
|
||||||
|
{"Xlu", "xlu", true, true, true, "【モデル】半透明"},
|
||||||
|
{"Xlu(Indirect)", "xlu_indirect", true, true, true, "【モデル】半透明(インダイレクト)"},
|
||||||
|
{"Xlu(Fx)", "xlu_fx", true, true, true, "【モデル】半透明(特殊効果)"},
|
||||||
|
{"ReducedBuffer", "reduced_buffer", true, true, true, "縮小バッファ"},
|
||||||
|
{"ShadowMask", "shadow_mask", false, false, false,
|
||||||
|
"画面の見せたい部分を残して他の部分を黒く覆ってくれる"},
|
||||||
|
{"RadialBlur", "radial_blur", false, false, false, "空間に放射状のブラーエフェクトをおける"},
|
||||||
|
{"DOF", "dof", false, false, true, "被写界深度"},
|
||||||
|
{"Xlu Z-PrePass", "xlu_z_pre_pass", false, false, true, "【モデル】半透明Zプリパス"},
|
||||||
|
{"Bloom", "bloom", false, false, true, "ブルーム効果"},
|
||||||
|
{"GlareFilter", "glare_filter", false, false, false, "グレアフィルタ"},
|
||||||
|
{"FlareFilter", "flare_filter", false, false, false,
|
||||||
|
"フレアフィルタ(スクリーンスペースのレンズフレア)"},
|
||||||
|
{"OccludedEffect", "occluded_effect", false, false, false, "遮蔽率をいい感じに使うエフェクト"},
|
||||||
|
{"AutoExposure", "auto_exposure", false, false, false, "自動露出"},
|
||||||
|
{"HDR", "hdr", false, false, true, "HDR解決(トーンマップ + sRGB変換)"},
|
||||||
|
{"ColorCorrection", "color_correction", false, false, true, "カラーコレクション"},
|
||||||
|
{"FilterAA", "filter_aa", false, false, true, "エイリアシングを除去"},
|
||||||
|
};
|
||||||
|
|
||||||
|
// NON_MATCHING: various issues, notably iterator stuff(?) for mDeferredShadingModels
|
||||||
|
ModelSceneConfig::ModelSceneConfig() {
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::env::AmbientLight::sTypeInfo->id, 5);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::env::HemisphereLight::sTypeInfo->id, 10);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::env::DirectionalLight::sTypeInfo->id, 30);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::env::Projector::sTypeInfo->id, 10);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::env::Fog::sTypeInfo->id, 10);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::pfx::BloomObj::sTypeInfo->id, 10);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::pfx::DepthOfFieldObj::sTypeInfo->id, 10);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(MaskedSpotLight::sTypeInfo->id, 13);
|
||||||
|
mEnvObjBufferAllocateArg.setContainMax(agl::env::AmbientLight::sTypeInfo->id, 1);
|
||||||
|
mEnvObjBufferAllocateArg.setContainMax(agl::env::HemisphereLight::sTypeInfo->id, 1);
|
||||||
|
mEnvObjBufferAllocateArg.setContainMax(agl::env::DirectionalLight::sTypeInfo->id, 4);
|
||||||
|
|
||||||
|
for (int i = 0; i < NumFeatures; ++i) {
|
||||||
|
const FeatureDescription& info = sModelSceneFeatures[i];
|
||||||
|
|
||||||
|
if (info._11)
|
||||||
|
mEnabledFeatures[i].init(true, info.parameter_name, info.description, &_c0);
|
||||||
|
else if (!info._10)
|
||||||
|
mEnabledFeatures[i].init(false, info.parameter_name, info.description, &_c0);
|
||||||
|
else
|
||||||
|
mEnabledFeatures[i].init(false, info.parameter_name, info.description, this);
|
||||||
|
|
||||||
|
if (info._10) {
|
||||||
|
*mShouldCreateFeatures[i] = true;
|
||||||
|
} else {
|
||||||
|
mShouldCreateFeatures[i].init(
|
||||||
|
info.should_create_by_default,
|
||||||
|
sead::FormatFixedSafeString<64>("create_%s", info.parameter_name), info.description,
|
||||||
|
this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mOpaPolygonOffset.init(-1.0, "opa_polygon_offset", "Opaポリゴンオフセット", this);
|
||||||
|
mOpaPolygonScale.init(-1.0, "opa_polygon_scale", "Opaポリゴンスケール", this);
|
||||||
|
|
||||||
|
mXluPolygonOffset.init(-2.5, "xlu_polygon_offset", "Xluポリゴンオフセット", this);
|
||||||
|
mXluPolygonScale.init(-2.5, "xlu_polygon_scale", "Xluポリゴンスケール", this);
|
||||||
|
|
||||||
|
mRevPolygonOffset.init(0.0, "rev_polygon_offset", "逆ポリゴンオフセット", this);
|
||||||
|
mRevPolygonScale.init(0.0, "rev_polygon_scale", "逆ポリゴンスケール", this);
|
||||||
|
|
||||||
|
{
|
||||||
|
static constexpr sead::SafeArray<const char*, 3> names = {
|
||||||
|
"lm_max_front_only",
|
||||||
|
"lm_max_front_and_back",
|
||||||
|
"lm_max_cube_map",
|
||||||
|
};
|
||||||
|
static constexpr sead::SafeArray<const char*, 3> labels = {
|
||||||
|
"SphereFrontOnly",
|
||||||
|
"SphereFrontAndBack",
|
||||||
|
"CubeMap",
|
||||||
|
};
|
||||||
|
for (int i = 0; i < mLmMax.size(); ++i)
|
||||||
|
mLmMax[i].init(i == 1 ? 12 : 0, names[i], labels[i], this);
|
||||||
|
}
|
||||||
|
|
||||||
|
mLightMapSizeSphere.init(0x30, "LightMapSizeSphere", "light_map_size_sphere", this);
|
||||||
|
mLightMapCube.init(0x20, "LightMapCube", "light_map_size_cube", this);
|
||||||
|
mLightMapAmbientLight.init(1, "LightMapAmbientLight", "アンビエントライト数", this);
|
||||||
|
mLightMapHemiSphereLight.init(1, "LightMapHemiSphereLight", "半球ライト数", this);
|
||||||
|
mLightMapDirectionalLight.init(4, "LightMapDirectionalLight", "ディレクショナルライト数", this);
|
||||||
|
|
||||||
|
{
|
||||||
|
static constexpr sead::SafeArray<const char*, 2> names = {
|
||||||
|
"cube_map_max_tex_num",
|
||||||
|
"cube_map_max_tex_width",
|
||||||
|
};
|
||||||
|
static constexpr sead::SafeArray<const char*, 2> labels = {
|
||||||
|
"MaxTexNum",
|
||||||
|
"CMaxTexWidth",
|
||||||
|
};
|
||||||
|
for (int i = 0; i < mCubeMapMaxTex.size(); ++i)
|
||||||
|
mCubeMapMaxTex[i].init(i == 0 ? 10 : 256, names[i], labels[i], this);
|
||||||
|
}
|
||||||
|
|
||||||
|
mLightPrepassTextureHalf.init(false, "light_prepass_texture_half",
|
||||||
|
"ライトプリパスの解像度を下げる", this);
|
||||||
|
|
||||||
|
mUseDecalAo.init(false, "use_decal_ao", "デカールAO使用", this);
|
||||||
|
mDecalAoObjectMax.init(0x20, "decal_ao_object_max", "デカールAOオブジェクト最大数", this);
|
||||||
|
mDecalAoTextureMax.init(0x20, "decal_ao_texture_max", "デカールAOテクスチャ最大数", this);
|
||||||
|
mDecalAoTextureWidth.init(0x100, "decal_ao_texture_width", "デカールAOテクスチャ幅", this);
|
||||||
|
mDecalAoTextureHeight.init(0x100, "decal_ao_texture_height", "デカールAOテクスチャ高さ", this);
|
||||||
|
mDecalAoTextureCannelNum.init(4, "decal_ao_texture_cannel_num",
|
||||||
|
"デカールAOテクスチャチャンネル数", this);
|
||||||
|
|
||||||
|
mUseDecalBuffer.init(false, "use_decal_buffer", "デカールバッファ使用", this);
|
||||||
|
mUseDecalTrail.init(false, "use_decal_trail", "デカール軌跡使用", this);
|
||||||
|
|
||||||
|
mBloomCorrectDepth.init(false, "bloom_correct_depth", "ブルームで正しいデプスを使う", this);
|
||||||
|
|
||||||
|
mMaskedLightShadowOnly.init(false, "masked_light_shadow_only", "MaskedLightShadowのみをつかう",
|
||||||
|
this);
|
||||||
|
|
||||||
|
mDepthShadowTexWidth.init(0x400, "depth_shadow_tex_width", "シャドウマップ幅", this);
|
||||||
|
mDepthShadowTexHeight.init(-1, "depth_shadow_tex_height", "シャドウマップ高さ", this);
|
||||||
|
mDepthShadowEnableBbClip.init(false, "depth_shadow_enable_bb_clip", "BoundingによるClip", this);
|
||||||
|
mDepthShadowCheckOnly.init(false, "depth_shadow_check_only", "(初期化のみ使用)CheckOnly",
|
||||||
|
this);
|
||||||
|
mDepthShadowMatrixViewCoordinate.init(false, "depth_shadow_matrix_view_coordinate",
|
||||||
|
"ビュー座標系をシェーダに送る", this);
|
||||||
|
mDepthShadowEnableHiZ.init(false, "depth_shadow_enable_hiz", "Hi-Z", this);
|
||||||
|
mDepthShadowForceArray.init(false, "depth_shadow_force_array",
|
||||||
|
"(初期化のみ使用)強制でArrayにする", this);
|
||||||
|
mDepthShadowNearFarMargin.init(0.0, "depth_shadow_near_far_margin",
|
||||||
|
"(初期化のみ使用)撮影範囲マージン", this);
|
||||||
|
mDepthShadowPolygonOffset.init(0.2, "depth_shadow_polygon_offset", "ポリゴンオフセット", this);
|
||||||
|
mDepthShadowPolygonScale.init(2.7, "depth_shadow_polygon_scale", "ポリゴンスケール", this);
|
||||||
|
|
||||||
|
mDepthShadowClipPlaneEnable.init(0, "depth_shadow_clip_plane_enable", "クリップ有効", this);
|
||||||
|
for (int i = 0; i < mDepthShadowClipPlanes.size(); ++i) {
|
||||||
|
mDepthShadowClipPlanes[i].init(
|
||||||
|
sead::Vector4f::ey, sead::FormatFixedSafeString<64>("depth_shadow_clip_plane_%d", i),
|
||||||
|
"clip_plane", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
mDepthShadowExClipPlaneNum.init(0, "depth_shadow_ex_clip_plane_num", "拡張クリップ面の数",
|
||||||
|
this);
|
||||||
|
|
||||||
|
mDepthShadowPcfOffset.init(0.5, "depth_shadow_pcf_offset", "pcf_offset", this);
|
||||||
|
|
||||||
|
for (int i = 0; i < mDepthShadowRefValueThresholds.size(); ++i) {
|
||||||
|
mDepthShadowRefValueThresholds[i].init(
|
||||||
|
-1.0, sead::FormatFixedSafeString<64>("depth_shadow_refvalue_threshold_%d", i), "",
|
||||||
|
this);
|
||||||
|
}
|
||||||
|
|
||||||
|
mDepthShadowReleaseGbuffer.init(false, "depth_shadow_release_gbuffer",
|
||||||
|
"G-Bufferを描き終えたら捨てる", this);
|
||||||
|
|
||||||
|
for (int i = 0; i < mDepthShadowParams.size(); ++i) {
|
||||||
|
auto& param = mDepthShadowParams[i];
|
||||||
|
|
||||||
|
param.use_uniform_mtx.init(
|
||||||
|
false, sead::FormatFixedSafeString<32>("depth_shadow_use_uniform_mtx_%d", i),
|
||||||
|
"UniformMtx", this);
|
||||||
|
|
||||||
|
param.cascade_num.init(1, sead::FormatFixedSafeString<32>("depth_shadow_cascade_num_%d", i),
|
||||||
|
"(初期化のみ使用)カスケード数", i == 0 ? this : &_c0);
|
||||||
|
|
||||||
|
for (int j = 0; j < param.near.size(); ++j) {
|
||||||
|
param.near[j].init(float(20 << j),
|
||||||
|
sead::FormatFixedSafeString<32>("depth_shadow_near_%d_%d", i, j), "",
|
||||||
|
this);
|
||||||
|
}
|
||||||
|
|
||||||
|
param.far.init(2000.0, sead::FormatFixedSafeString<32>("depth_shadow_far_%d", i),
|
||||||
|
"FrustumのFar", "Min=0", this);
|
||||||
|
param.offset_near.init(0.0,
|
||||||
|
sead::FormatFixedSafeString<32>("depth_shadow_offset_near_%d", i),
|
||||||
|
"OptimaizeOffsetNear", "Min=0", this);
|
||||||
|
param.offset_far.init(0.0, sead::FormatFixedSafeString<32>("depth_shadow_offset_far_%d", i),
|
||||||
|
"OptimizeOffsetFar", "Min=0", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
mStaticSdwWidth.init(0x100, "static_sdw_width", "シャドウマップの幅", this);
|
||||||
|
mStaticSdwDepthFormatName.init(sDepthFormat32Str, "static_sdw_depth_format_name",
|
||||||
|
"デプスフォーマット", this);
|
||||||
|
mStaticSdwShadowMapFormatName.init(sDepthShadowMapFormat_R32_G32_float_Str,
|
||||||
|
"static_sdw_shadow_map_format_name",
|
||||||
|
"シャドウマップフォーマット", this);
|
||||||
|
|
||||||
|
mProjectionShadowNum.init(1, "projection_shadow_num", "投影影の数", this);
|
||||||
|
mProjShadowMatrixViewCoordinate.init(false, "proj_shadow_matrix_view_coordinate",
|
||||||
|
"ビュー座標系をシェーダに送る", this);
|
||||||
|
|
||||||
|
mSsaoWidthScale.init(0.5, "ssao_width_scale", "SSAOバッファのスケール", this);
|
||||||
|
mSsaoIsDepthFull.init(false, "ssao_is_depth_full", "SSAOのデプスをフル解像度", this);
|
||||||
|
mLinearLightingEnable.init(false, "linear_lighting_enable", "リニアライティング有効", this);
|
||||||
|
mHizExpandEnable.init(true, "hiz_expand_enable", "Hi-Z Expand有効", this);
|
||||||
|
mNldEnable.init(true, "nld_enable", "NormalizedLinearDepth生成", this);
|
||||||
|
mNld32Bit.init(false, "nld_32bit", "NormalizedLinearDepthを32bit", this);
|
||||||
|
mNldHalf32Bit.init(false, "nld_half_32bit", "NormalizedLinearDepth(Half)を32bit", this);
|
||||||
|
mDepthReduce.init(false, "depth_reduce", "デプスの縮小をmaxで計算", this);
|
||||||
|
mZPrePassSelectable.init(false, "z_pre_pass_selectable", "Zプリパスを選択式にする", this);
|
||||||
|
mDepthClear.init(true, "depth_clear", "Depth Clear有効", this);
|
||||||
|
mIndirectBufferLDR.init(false, "indirect_buffer_LDR", "インダイレクトバッファLDR", this);
|
||||||
|
|
||||||
|
mReducedBuffer16Bit.init(false, "reduced_buffer_16bit", "縮小バッファ16bit", this);
|
||||||
|
mReducedBufferEdgeAdjustBake.init(false, "reduced_buffer_edge_adjust_bake",
|
||||||
|
"縮小バッファエッジ補正をテクスチャ焼付け", this);
|
||||||
|
mReducedBufferBlurAdjustBake.init(false, "reduced_buffer_blur_adjust_bake",
|
||||||
|
"縮小バッファブラー補正をテクスチャ焼付け", this);
|
||||||
|
mReducedBufferEdgeAdjust.init(false, "reduced_buffer_edge_adjust", "縮小バッファエッジ補正有効",
|
||||||
|
this);
|
||||||
|
mReducedBufferEdgeAdjustCoeff.init(2.0, "reduced_buffer_edge_adjust_coeff",
|
||||||
|
"縮小バッファエッジ補正係数", this);
|
||||||
|
|
||||||
|
mBaseResoWidth.init(0x500, "base_reso_width", "基準解像度の幅", this);
|
||||||
|
mBaseResoHeight.init(0x2D0, "base_reso_height", "基準解像度の高さ", this);
|
||||||
|
|
||||||
|
mGBufferAlbedoSrgb.init(false, "g_buffer_albedo_srgb", "GBufferのアルベドsRGB", this);
|
||||||
|
mGBufferAlbedoReduceNearest.init(false, "g_buffer_albedo_reduce_nearest",
|
||||||
|
"GBufferのアルベド縮小をポイントサンプル", this);
|
||||||
|
|
||||||
|
mGBufferNormal8Bit.init(false, "g_buffer_normal_8bit", "GBufferのノーマル8bit", this);
|
||||||
|
mGBufferNormalDisableReduce.init(false, "g_buffer_normal_disable_reduce", "GBufferの縮小停止",
|
||||||
|
this);
|
||||||
|
mGBufferNormalZSignW.init(false, "g_buffer_normal_z_sign_w",
|
||||||
|
"GBufferのノーマルのZを符号だけWに格納", this);
|
||||||
|
mGBufferNormalReduceNearest.init(false, "g_buffer_normal_reduce_nearest",
|
||||||
|
"GBufferのノーマル縮小をポイントサンプル", this);
|
||||||
|
|
||||||
|
mGBufferDepth.init(false, "g_buffer_depth", "GBufferでマテリアルIDを使用", this);
|
||||||
|
mGBufferMaterialIdFormat.init(0, "g_buffer_material_id_format", "マテリアルIDフォーマット",
|
||||||
|
this);
|
||||||
|
|
||||||
|
mGpuStressAnalyzerEnable.init(false, "gpu_stress_analyzer_enable", "GPU Stress Analyzer有効",
|
||||||
|
this);
|
||||||
|
mGpuStressAnalyzerReduceBufferenable.init(
|
||||||
|
true, "gpu_stress_analyzer_reduce_bufferenable",
|
||||||
|
"GPU Stress Analyzerでレンダーバッファのサイズを変える", this);
|
||||||
|
|
||||||
|
mEnableDrcFilterAa.init(true, "enable_drc_filter_aa", "FilterAAが有効の時DRCも有効にする",
|
||||||
|
this);
|
||||||
|
mInitFilterAaSmaaResTextures.init(false, "init_filter_aa_smaa_res_textures",
|
||||||
|
"FilterAAの初期化時にSMAAのリソーステクスチャを生成する",
|
||||||
|
this);
|
||||||
|
|
||||||
|
mCubemapArray.init(true, "cubemap_array", "キューブマップを配列で扱う", this);
|
||||||
|
mCubemapDynamicRange.init(1024.0, "cubemap_dynamic_range", "キューブマップのダイナミックレンジ",
|
||||||
|
this);
|
||||||
|
mCubemapHdrComposePower.init(4.0, "cubemap_hdr_compose_power", "キューブマップの圧縮乗数",
|
||||||
|
this);
|
||||||
|
mCubemapMaxModelUnitNum.init(0x400, "cubemap_max_model_unit_num",
|
||||||
|
"キューブマップの最大モデルユニット数", this);
|
||||||
|
mCubemapMaxShapeNum.init(0x1000, "cubemap_max_shape_num", "キューブマップの最大シェイプ数",
|
||||||
|
this);
|
||||||
|
mCubemapDisableEncode.init(false, "cubemap_disable_encode", "キューブマップを圧縮しない", this);
|
||||||
|
|
||||||
|
mModelSceneEnvDataSetNum.init(1, "model_scene_env_data_set_num",
|
||||||
|
"シーン環境で管理する genv の数", "Min=1, Max=4, Mode=MinMaxLock",
|
||||||
|
this);
|
||||||
|
|
||||||
|
mEnvObjPointLightNum.init(0x400, "env_obj_point_light_num", "ポイントライト数",
|
||||||
|
"Min=0 ,Max=1024", this);
|
||||||
|
mEnvObjPointLightRigNum.init(0x80, "env_obj_point_light_rig_num", "ポイントライトリグ数",
|
||||||
|
"Min=0 ,Max=1024", this);
|
||||||
|
mEnvObjSpotLightNum.init(0x200, "env_obj_spot_light_num", "スポットライト数", "Min=0 ,Max=1024",
|
||||||
|
this);
|
||||||
|
mEnvObjSpotLightRigNum.init(0x20, "env_obj_spot_light_rig_num", "スポットライトリグ数",
|
||||||
|
"Min=0 ,Max=1024", this);
|
||||||
|
mEnvObjMaskedSpotLightNum.init(50, "env_obj_masked_spot_light_num", "マスクドライト数",
|
||||||
|
"Min=0 ,Max=1024", this);
|
||||||
|
mEnvObjMaskedSpotLightRigNum.init(5, "env_obj_masked_spot_light_rig_num",
|
||||||
|
"マスクドライトリグ数", "Min=0 ,Max=1024", this);
|
||||||
|
mEnvObjMaskedProjLightNum.init(3, "env_obj_masked_proj_light_num",
|
||||||
|
"マスクドプロジェクションライト数", "Min=0 ,Max=1024", this);
|
||||||
|
|
||||||
|
mOfxNumLensFlare.init(10, "ofx_num_lens_flare", "レンズフレア数", "Min=0,Max=32", this);
|
||||||
|
mOfxNumLensFlarePreset.init(5, "ofx_num_lens_flare_preset", "レンズフレアPreset数",
|
||||||
|
"Min=0,Max=32", this);
|
||||||
|
mOfxNumLensFlareDynamic.init(10, "ofx_num_lens_flare_dynamic", "プログラム用レンズフレア数",
|
||||||
|
"Min=0,Max=32", this);
|
||||||
|
mOfxNumLensFlareDynamicPreset.init(5, "ofx_num_lens_flare_dynamic_preset",
|
||||||
|
"プログラム用レンズフレアPreset数", "Min=0,Max=32", this);
|
||||||
|
mOfxNumLensFlareRig.init(8, "ofx_num_lens_flare_rig", "レンズフレアRig数", "Min=0,Max=32",
|
||||||
|
this);
|
||||||
|
mOfxNumLensFlareRigObj.init(0x18, "ofx_num_lens_flare_rig_obj", "Rig用レンズフレア数",
|
||||||
|
"Min=0,Max=32", this);
|
||||||
|
mOfxNumLensFlareRigPreset.init(5, "ofx_num_lens_flare_rig_preset", "Rig用レンズフレアPreset数",
|
||||||
|
"Min=0,Max=32", this);
|
||||||
|
mOfxNumLargeLensFlareRig.init(2, "ofx_num_large_lens_flare_rig", "LargeレンズフレアRig数",
|
||||||
|
"Min=0,Max=16", this);
|
||||||
|
mOfxNumLargeLensFlareRigObj.init(2, "ofx_num_large_lens_flare_rig_obj",
|
||||||
|
"Rig用Largeレンズフレア数", "Min=0,Max=16", this);
|
||||||
|
mOfxNumLargeLensFlareRigPreset.init(10, "ofx_num_large_lens_flare_rig_preset",
|
||||||
|
"Rig用LargeレンズフレアPreset数", "Min=0,Max=16", this);
|
||||||
|
|
||||||
|
mModelNum.init(0x2000, "model_num", "エントリーモデル数", "Min=0 ,Max=16000", this);
|
||||||
|
mModelUnitNum.init(0x4000, "model_unit_num", "エントリーモデルユニット数", "Min=0 ,Max=16000",
|
||||||
|
this);
|
||||||
|
mShapeNum.init(0x1000, "shape_num", "キューイングシェイプ数", "Min=0 ,Max=16000", this);
|
||||||
|
mOcclusionQueryNum.init(0x100, "occlusion_query_num", "オクルージョンクエリ最大数",
|
||||||
|
"Min=0 ,Max=16000", this);
|
||||||
|
|
||||||
|
for (int i = 0; i < mUserVisualizeClrNames.size(); ++i) {
|
||||||
|
static constexpr sead::SafeArray<const char*, 8> names = {
|
||||||
|
"user_visualize_clr_name_0", "user_visualize_clr_name_1", "user_visualize_clr_name_2",
|
||||||
|
"user_visualize_clr_name_3", "user_visualize_clr_name_4", "user_visualize_clr_name_5",
|
||||||
|
"user_visualize_clr_name_6", "user_visualize_clr_name_7",
|
||||||
|
};
|
||||||
|
static constexpr sead::SafeArray<const char*, 8> labels = {
|
||||||
|
"ユーザーカラー可視化[0]", "ユーザーカラー可視化[1]", "ユーザーカラー可視化[2]",
|
||||||
|
"ユーザーカラー可視化[3]", "ユーザーカラー可視化[4]", "ユーザーカラー可視化[5]",
|
||||||
|
"ユーザーカラー可視化[6]", "ユーザーカラー可視化[7]",
|
||||||
|
};
|
||||||
|
mUserVisualizeClrNames[i].init(sead::SafeString::cEmptyString, names[i], labels[i],
|
||||||
|
"AcceptReturn=true", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < mUserVisualizeTexNames.size(); ++i) {
|
||||||
|
static constexpr sead::SafeArray<const char*, 8> names = {
|
||||||
|
"user_visualize_tex_name_0", "user_visualize_tex_name_1", "user_visualize_tex_name_2",
|
||||||
|
"user_visualize_tex_name_3", "user_visualize_tex_name_4", "user_visualize_tex_name_5",
|
||||||
|
"user_visualize_tex_name_6", "user_visualize_tex_name_7",
|
||||||
|
};
|
||||||
|
static constexpr sead::SafeArray<const char*, 8> labels = {
|
||||||
|
"ユーザーテクスチャ可視化[0]", "ユーザーテクスチャ可視化[1]",
|
||||||
|
"ユーザーテクスチャ可視化[2]", "ユーザーテクスチャ可視化[3]",
|
||||||
|
"ユーザーテクスチャ可視化[4]", "ユーザーテクスチャ可視化[5]",
|
||||||
|
"ユーザーテクスチャ可視化[6]", "ユーザーテクスチャ可視化[7]",
|
||||||
|
};
|
||||||
|
mUserVisualizeTexNames[i].init(sead::SafeString::cEmptyString, names[i], labels[i],
|
||||||
|
"AcceptReturn=true", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto it = mDeferredShadingModels.begin(), end = mDeferredShadingModels.end(); it != end;
|
||||||
|
++it) {
|
||||||
|
auto i = int(-(&*mDeferredShadingModels.begin() - &*it));
|
||||||
|
|
||||||
|
static constexpr sead::SafeArray<const char*, 8> labels = {
|
||||||
|
"デファードシェーディング用モデル0", "デファードシェーディング用モデル1",
|
||||||
|
"デファードシェーディング用モデル2", "デファードシェーディング用モデル3",
|
||||||
|
"デファードシェーディング用モデル4", "デファードシェーディング用モデル5",
|
||||||
|
"デファードシェーディング用モデル6", "デファードシェーディング用モデル7",
|
||||||
|
};
|
||||||
|
it->init(sead::SafeString::cEmptyString,
|
||||||
|
i == 0 ? sead::FormatFixedSafeString<256>("deferred_shading_model") :
|
||||||
|
sead::FormatFixedSafeString<256>("deferred_shading_model%d", i),
|
||||||
|
labels(i), "AcceptReturn=false", this);
|
||||||
|
}
|
||||||
|
|
||||||
|
mSceneMaterialModel.init(sead::SafeString::cEmptyString, "scene_material_model",
|
||||||
|
"シーンマテリアルモデル名", "AcceptReturn=false", this);
|
||||||
|
|
||||||
|
#ifdef SEAD_DEBUG
|
||||||
|
setNodeName("コンフィグ");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
ORUtil::setNodeMetaIcon(this, ORUtil::Icon::_b,
|
||||||
|
agl::detail::PrivateResource::instance()->getDebugHeap());
|
||||||
|
}
|
||||||
|
|
||||||
|
int ModelSceneConfig::getStaticDepthShadowDepthFormat() const {
|
||||||
|
return mStaticSdwDepthFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ModelSceneConfig::getStaticDepthShadowDepthShadowMapFormat() const {
|
||||||
|
return mStaticSdwShadowMapFormat;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ModelSceneConfig::preRead_() {
|
||||||
|
return !_1798 && !_1799;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ModelSceneConfig::preWrite_() const {
|
||||||
|
mStaticSdwDepthFormatName->copy(DepthFormat(mStaticSdwDepthFormat).text());
|
||||||
|
mStaticSdwShadowMapFormatName->copy(DepthShadowMapFormat(mStaticSdwShadowMapFormat).text());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
static T convertToEnum(const sead::SafeString& str_value, T default_value) {
|
||||||
|
T value;
|
||||||
|
return value.fromText(str_value) ? value : default_value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModelSceneConfig::postRead_() {
|
||||||
|
_1799 = true;
|
||||||
|
|
||||||
|
for (int i = 0; i < NumFeatures; ++i) {
|
||||||
|
if (!sModelSceneFeatures[i]._10)
|
||||||
|
*mEnabledFeatures[i] = *mShouldCreateFeatures[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
mEnvObjMgrInitArg.setContainMax(LightRigObj<PointLight>::sTypeInfo, *mEnvObjPointLightNum);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(PointLightRig::sTypeInfo, *mEnvObjPointLightRigNum);
|
||||||
|
|
||||||
|
mEnvObjMgrInitArg.setContainMax(LightRigObj<SpotLight>::sTypeInfo, *mEnvObjSpotLightNum);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(SpotLightRig::sTypeInfo, *mEnvObjSpotLightRigNum);
|
||||||
|
|
||||||
|
mEnvObjMgrInitArg.setContainMax(LightRigObj<MaskedSpotLight>::sTypeInfo,
|
||||||
|
*mEnvObjMaskedSpotLightNum);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(MaskedSpotLightRig::sTypeInfo, *mEnvObjMaskedSpotLightRigNum);
|
||||||
|
|
||||||
|
mEnvObjMgrInitArg.setContainMax(MaskedProjLight::sTypeInfo, *mEnvObjMaskedProjLightNum);
|
||||||
|
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::fx::OfxLensFlare::sTypeInfo, *mOfxNumLensFlare);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::fx::OfxLensFlare::Preset::sTypeInfo,
|
||||||
|
*mOfxNumLensFlarePreset);
|
||||||
|
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::fx::OfxLensFlareDynamic::sTypeInfo,
|
||||||
|
*mOfxNumLensFlareDynamic);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(agl::fx::OfxLensFlareDynamic::Preset::sTypeInfo,
|
||||||
|
*mOfxNumLensFlareDynamicPreset);
|
||||||
|
|
||||||
|
mEnvObjMgrInitArg.setContainMax(OfxLensFlareRig::sTypeInfo, *mOfxNumLensFlareRig);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(OfxLensFlareImpl::sTypeInfo, *mOfxNumLensFlareRigObj);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(OfxLensFlareImpl::Preset::sTypeInfo,
|
||||||
|
*mOfxNumLensFlareRigPreset);
|
||||||
|
|
||||||
|
mEnvObjMgrInitArg.setContainMax(OfxLargeLensFlareRig::sTypeInfo, *mOfxNumLargeLensFlareRig);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(OfxLargeLensFlareImpl::sTypeInfo, *mOfxNumLargeLensFlareRigObj);
|
||||||
|
mEnvObjMgrInitArg.setContainMax(OfxLargeLensFlareImpl::Preset::sTypeInfo,
|
||||||
|
*mOfxNumLargeLensFlareRigPreset);
|
||||||
|
|
||||||
|
mEnvObjBufferAllocateArg.setContainMax(agl::env::AmbientLight::sTypeInfo,
|
||||||
|
*mLightMapAmbientLight);
|
||||||
|
mEnvObjBufferAllocateArg.setContainMax(agl::env::HemisphereLight::sTypeInfo,
|
||||||
|
*mLightMapHemiSphereLight);
|
||||||
|
mEnvObjBufferAllocateArg.setContainMax(agl::env::DirectionalLight::sTypeInfo,
|
||||||
|
*mLightMapDirectionalLight);
|
||||||
|
|
||||||
|
if (*mDepthShadowTexHeight < 1)
|
||||||
|
*mDepthShadowTexHeight = *mDepthShadowTexWidth;
|
||||||
|
|
||||||
|
mStaticSdwDepthFormat = convertToEnum<DepthFormat>(*mStaticSdwDepthFormatName, 60);
|
||||||
|
mStaticSdwShadowMapFormat =
|
||||||
|
convertToEnum<DepthShadowMapFormat>(*mStaticSdwShadowMapFormatName, 38);
|
||||||
|
|
||||||
|
IParameterObj::postRead_();
|
||||||
|
}
|
||||||
|
|
||||||
|
ModelSceneConfig::EnvObjSetTemplate& ModelSceneConfig::getEnvObjSetTemplate_(int index) const {
|
||||||
|
SEAD_ASSERT(mpConfigList != nullptr);
|
||||||
|
return mpConfigList->mEnvObjSetTemplates[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
ModelSceneConfig::EnvObjSetTemplate::EnvObjSetTemplate()
|
||||||
|
: enable(false, "enable", "有効", this), num(8, "num", "Num", "Min=0,Max=16", this),
|
||||||
|
ambient_light_num(1, "ambient_light_num", "Ambient Light Num", "Min=0,Max=8", this),
|
||||||
|
directional_light_num(1, "directional_light_num", "Directional Light Num", "Min=0,Max=8",
|
||||||
|
this),
|
||||||
|
hemisphere_light_num(1, "hemisphere_light_num", "Hemisphere Light Num", "Min=0,Max=8", this),
|
||||||
|
fog_num(1, "fog_num", "Fog Num", "Min=0,Max=8", this),
|
||||||
|
light_map_obj_num(1, "light_map_obj_num", "Light Map Obj Num", "Min=0,Max=8", this),
|
||||||
|
template_name({"Tepmlate Name"} /* sic */, "template_name", "Template Name",
|
||||||
|
"Mode=TextBoxOnly, Comment=template_name, AcceptReturn=False", this) {}
|
||||||
|
|
||||||
|
ModelSceneConfigList::ModelSceneConfigList() : agl::utl::IParameterIO("gmsconf", 0) {
|
||||||
|
#ifdef SEAD_DEBUG
|
||||||
|
setNodeName("シーンコンフィグ");
|
||||||
|
#endif
|
||||||
|
ORUtil::setNodeMeta(this, ORUtil::Category::_0, ORUtil::Attribute::_2,
|
||||||
|
agl::detail::PrivateResource::instance()->getDebugHeap());
|
||||||
|
|
||||||
|
addObj(&mNameArrayObj, "name_array");
|
||||||
|
|
||||||
|
addList(&mEnvObjSetTemplateList, "env_obj_set_template");
|
||||||
|
for (int i = 0; i < mEnvObjSetTemplates.size(); ++i) {
|
||||||
|
mEnvObjSetTemplateList.addObj(&mEnvObjSetTemplates[i], sead::FormatFixedSafeString<32>(
|
||||||
|
"env_obj_set_template_%02d", i));
|
||||||
|
}
|
||||||
|
*mEnvObjSetTemplates[0].enable = true;
|
||||||
|
|
||||||
|
for (int i = 0; i < mConfigNames.size(); ++i) {
|
||||||
|
const auto param = sead::FormatFixedSafeString<32>("config_%02d", i);
|
||||||
|
const auto default_name = sead::FixedSafeString<32>("");
|
||||||
|
mConfigNames[i].init(default_name, param, "コンフィグ名", &mNameArrayObj);
|
||||||
|
mConfigs[i].mpConfigList = this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModelSceneConfigList::applyResouce(const void* resource) {
|
||||||
|
mResource = resource;
|
||||||
|
applyResParameterArchive(agl::utl::ResParameterArchive(resource));
|
||||||
|
}
|
||||||
|
|
||||||
|
const ModelSceneConfig& ModelSceneConfigList::setup(const sead::SafeString& config_name) {
|
||||||
|
sead::SafeString name = &sead::SafeString::cNullChar;
|
||||||
|
int index = 0;
|
||||||
|
if (mCurrentConfigIndex != -1) {
|
||||||
|
name = *mConfigNames[mCurrentConfigIndex]; // NOLINT(cppcoreguidelines-slicing)
|
||||||
|
index = mCurrentConfigIndex;
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < mConfigs.size(); ++i) {
|
||||||
|
if (*mConfigNames[i] == config_name) {
|
||||||
|
name = *mConfigNames[i]; // NOLINT(cppcoreguidelines-slicing)
|
||||||
|
index = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name.isEmpty()) {
|
||||||
|
name = *mConfigNames[0]; // NOLINT(cppcoreguidelines-slicing)
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
reload(name);
|
||||||
|
return mConfigs[index];
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModelSceneConfigList::reload(const sead::SafeString& config_name) {
|
||||||
|
for (int i = 0; i < mConfigs.size(); ++i) {
|
||||||
|
if (*mConfigNames[i] != "" && *mConfigNames[i] == config_name) {
|
||||||
|
mConfigs[i]._1799 = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
applyResouce(mResource);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ModelSceneConfigList::preWrite_() const {
|
||||||
|
// eww
|
||||||
|
auto* mutable_this = const_cast<ModelSceneConfigList*>(this);
|
||||||
|
|
||||||
|
mutable_this->clearObj();
|
||||||
|
mutable_this->addObj(&mutable_this->mNameArrayObj, "name_array");
|
||||||
|
|
||||||
|
#ifdef SEAD_DEBUG
|
||||||
|
for (int i = 0; i < mConfigs.size(); ++i) {
|
||||||
|
if (!mConfigs[i].isAppended())
|
||||||
|
mutable_this->addObj(&mutable_this->mConfigs[i], *mConfigNames[i]);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ModelSceneConfigList::preRead_() {
|
||||||
|
if (_821e4) {
|
||||||
|
clearObj();
|
||||||
|
addObj(&mNameArrayObj, "name_array");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// NON_MATCHING: reordering fest
|
||||||
|
void ModelSceneConfigList::postRead_() {
|
||||||
|
if (!_821e4) {
|
||||||
|
_821e4 = true;
|
||||||
|
// TODO: debug stuff
|
||||||
|
// sead::hostio::InvalidateNode(this, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < mConfigs.size(); ++i) {
|
||||||
|
const auto& name = *mConfigNames[i];
|
||||||
|
if (name == "")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
addObj(&mConfigs[i], name);
|
||||||
|
mConfigs[i].mIndex1 = i;
|
||||||
|
mConfigs[i].mIndex2 = i;
|
||||||
|
mConfigs[i].mConfigName = &name;
|
||||||
|
}
|
||||||
|
|
||||||
|
_821e4 = false;
|
||||||
|
applyResouce(mResource);
|
||||||
|
}
|
||||||
|
|
||||||
|
ModelSceneConfigList::EnvObjSetTemplateList::EnvObjSetTemplateList() = default;
|
||||||
|
|
||||||
|
bool ModelSceneConfigList::EnvObjSetTemplateList::preRead_() {
|
||||||
|
return !unk;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace gsys
|
2
lib/sead
2
lib/sead
|
@ -1 +1 @@
|
||||||
Subproject commit b8c69e3e04aff4295416a4c61b6f749f4e4cb51c
|
Subproject commit 06a028cbf382e5b997d17d3a8147dbdbb7f66109
|
Loading…
Reference in New Issue