Files
2026-05-30 18:33:24 +12:00

194 lines
7.2 KiB
C++

#pragma once
#include "RE/B/BSGeometry.h"
#include "RE/N/NiColor.h"
#include "RE/N/NiPoint3.h"
#include "RE/N/NiPointer.h"
#include "RE/N/NiTexture.h"
#include "RE/N/NiTransform.h"
namespace RE
{
class ShadowSceneNode;
class BSShaderManager
{
public:
enum class BSShaderTimerMode : std::uint32_t
{
kDefault = 0x0,
kDelta = 0x1,
kSystem = 0x2,
kRealDelta = 0x3,
kFrameCount = 0x4,
kAccumulatedDelta = 0x5,
kTotal = 0x6
};
enum class ShaderEnum : std::uint32_t
{
kEffect = 0x0,
kUtility = 0x1,
kDistantTree = 0x2,
kParticle = 0x3,
kDFPrepass = 0x4,
kDFLight = 0x5,
kDFComposite = 0x6,
kSky = 0x7,
kLighting = 0x8,
kBloodSpatter = 0x9,
kWater = 0xA,
kFaceCustomization = 0xB,
kImageSpace = 0xC,
kTotal = 0xD
};
enum class eCameraInWaterState : std::uint32_t
{
kAboveWater = 0x0,
kPartiallyAboveWater = 0x1,
kPartiallyUnderWater = 0x2,
kUnderWater = 0x3
};
enum class eSceneGraphEnum : std::uint32_t
{
kWorld = 0x0,
kUIOld = 0x1,
kPreview = 0x2,
kUILoadingMenu = 0x3,
kUI = 0x4,
kTotal = 0x5
};
enum class etRenderFlag : std::uint32_t
{
kColorWriteDisable = 0x0
};
enum class etRenderMode : std::uint32_t
{
kNormal = 0x0,
kNumLights = 0x1,
kNumNonShadowLights = 0x2,
kNumShadowLights = 0x3,
kNumPasses = 0x4,
kSinglePass = 0x5,
kTexUsage = 0x6,
kDegrade = 0x7,
kFade = 0x8,
kShadowSplitDebug = 0x9,
kTexSize = 0xA,
kFadeNodeTriDebug = 0xB,
kOverdraw = 0xC,
kDepthPrepass = 0xD,
kOcclusionMap = 0xE,
kShadowmap = 0xF,
kShadowmapDir = 0x10,
kShadowmapPB = 0x11,
kLocalmap = 0x12,
kFrozen = 0x13,
kScreenSplatter = 0x14,
kLODOnlyNoNoise = 0x15,
kSilhouetteLOD = 0x16,
kSilhouette = 0x17,
kDeferredGBuffer = 0x18,
kDeferredGB0 = 0x19,
kDeferredGBDebgStart = 0x19,
kDeferredGB1 = 0x1A,
kDeferredGB2 = 0x1B,
kDeferredGB3 = 0x1C,
kDeferredGB4 = 0x1D,
kDeferredGB5 = 0x1E,
kDeferredGBDebugEnd = 0x1E,
kDeferredGBAll = 0x1F,
kLightvis = 0x20,
kVATSMask = 0x21,
kVATSMaskDebug = 0x22,
kVATSMaskPrepass = 0x23,
kMapMaker = 0x25,
kSimpleLighting = 0x26,
kTotal = 0x27
};
enum class etShadowMode : std::uint32_t
{
kISFilter = 0x0,
kPCF4 = 0x1,
kPCF9 = 0x2,
kLoopFilter = 0x3
};
class State
{
// members
ShadowSceneNode* shadowSceneNode[5]; // 00
float timerValues[6]; // 28
std::uint32_t frameCount; // 40
NiColorA loadedRange; // 44
bool interior; // 54
bool liteBrite; // 55
bool deferredRGBEmit; // 56
bool deferredRGBSpec; // 57
bool menuScreenPremultAlpha; // 58
bool menuScreenPostAA; // 59
float menuScreenAlpha; // 5C
bool characterLightEnabled; // 60
bool screenSpaceReflectionsEnabled; // 61
bool screenSpaceSubsurfaceScatteringEnabled; // 62
std::uint32_t pipboyScreenTarget; // 64
NiPointer<NiTexture> pipboyFXTexture; // 68
float pipboyScreenEmitIntensity; // 70
float pipboyScreenDiffuseIntensity; // 74
float pipboyScreenEmitIntensityWA; // 78
float pipboyScreenDiffuseIntensityWA; // 7C
float specularLODStartFadeSquared; // 80
float specularLODEndSquared; // 84
float landLOFaceSeconds; // 88
float leafAnimDampenDistStartSPU; // 8C
float leafAnimDampenDistEndSPU; // 90
NiPoint2 oldGridArrayCenter; // 94
NiPoint2 gridArrayCenter; // 9C
float gridArrayLerpStart; // A4
bool LODFadeInProgress; // A8
std::uint8_t sceneGraph; // A9
BSShaderManager::etRenderMode debugMode; // AC
std::uint32_t debugColorWrite; // B0
NiTransform directionalAmbientTransform; // C0
NiTransform localDirectionalAmbientTransform; // 100
NiColorA ambientSpecular; // 140
bool ambientSpecularEnabled; // 150
std::uint32_t textureTransformCurrentBuffer; // 154
std::uint32_t textureTransformFlipMode; // 158
std::uint32_t cameraInWaterState; // 15C
float cameraNear; // 160
float cameraFar; // 164
float waterIntersect; // 168
NiColorA menuScreenBlendParams; // 16C
NiColorA debugTintColor; // 17C
float boneTintingTiming; // 18C
NiPoint3 forwardLightOffset; // 190
NiPoint3 clipVolume[2]; // 19C
NiPointer<BSGeometry> clipVolumeGeom; // 1B8
NiColorA maskRectParams; // 1C0
NiColorA UIMaskRectsA[16]; // 1D0
NiColorA UIMaskRectColorsA[16]; // 2D0
NiColorA characterLightParams; // 3D0
std::uint32_t forceDisableFrame; // 3E0
bool effectShaderVATSHighlight; // 3E4
bool forceEffectShaderPremultAlpha; // 3E5
bool forceDisableSSR; // 3E6
bool forceDisableGodrays; // 3E7
bool forceDisableDirLights; // 3E8
bool pendingForceDisableSSR; // 3E9
bool pendingForceDisableGodrays; // 3EA
bool pendingForceDisableDirLights; // 3EB
};
static_assert(sizeof(State) == 0x3F0);
};
}