CommonLibVR
BSLightingShaderProperty.h
Go to the documentation of this file.
1 #pragma once
2 
4 #include "RE/B/BSTArray.h"
5 #include "RE/N/NiColor.h"
6 
7 namespace RE
8 {
9  class BSShader;
10  class BSLight;
11 
13  {
14  public:
15  inline static constexpr auto RTTI = RTTI_BSLightingShaderProperty;
16  inline static constexpr auto Ni_RTTI = NiRTTI_BSLightingShaderProperty;
17  inline static constexpr auto VTABLE = VTABLE_BSLightingShaderProperty;
18 
19  struct Data
20  {
21  void Clear();
22  BSRenderPass* EmplacePass(BSShader* a_shader, BSShaderProperty* a_property, BSGeometry* a_geometry,
23  uint32_t a_technique, uint8_t a_numLights = 0, BSLight* a_light0 = nullptr, BSLight* a_light1 = nullptr,
24  BSLight* a_light2 = nullptr, BSLight* a_light3 = nullptr);
25 
26  // members
28  std::uint64_t unk08; // 08
29  };
30  static_assert(sizeof(Data) == 0x10);
31 
32  ~BSLightingShaderProperty() override; // 00
33 
34  // override (BSShaderProperty)
35  const NiRTTI* GetRTTI() const override; // 02
36  NiObject* CreateClone(NiCloningProcess& a_cloning) override; // 17
37  void LoadBinary(NiStream& a_stream) override; // 18
38  void LinkObject(NiStream& a_stream) override; // 19
39  bool RegisterStreamables(NiStream& a_stream) override; // 1A
40  void SaveBinary(NiStream& a_stream) override; // 1B
41  bool IsEqual(NiObject* a_object) override; // 1C - { return false; }
42  void PostLinkObject(NiStream& a_stream) override; // 1E
43  bool SetupGeometry(BSGeometry* a_geometry) override; // 27
44  bool FinishSetupGeometry(BSGeometry* a_geometry) override; // 28
45  RenderPassArray* GetRenderPasses(BSGeometry* a_geometry, std::uint32_t a_arg2, BSShaderAccumulator* a_accumulator) override; // 2A
46  void Unk_2B(void) override; // 2B
47  void Unk_2C(void) override; // 2C
48  void Unk_2D(void) override; // 2D
49  void Unk_2F(void) override; // 2F
50  bool CanMerge(const BSShaderProperty* a_other) override; // 30
51  void SetMaterialAlpha(float a_alpha) override; // 31
52  float QMaterialAlpha() override; // 32
53  std::int32_t ForEachTexture(ForEachVisitor& a_visitor) override; // 33
54  void DoClearRenderPasses() override; // 34
55  std::int32_t QShader() override; // 35 - { return 11; }
56  NiSourceTexture* GetBaseTexture() override; // 37 - { return diffuseTexture }
57  bool AcceptsEffectData() const override; // 39 - { return !(flags & kRefraction) && !(flags & kTempRefraction); }
58  void Unk_3B(void) override; // 3B
59  std::uint32_t DetermineUtilityShaderDecl() override; // 3D
60  BSShaderMaterial::Type GetMaterialType() override; // 3E - { return 2; }
61 
63  void InvalidateTextures(std::uint32_t a_unk1);
64 
65  // members
66  Data unk088[3]; // 088
67  Data unk0B8; // 0B8
68  Data unk0C8; // 0C8
69  Data unk0D8; // 0D8
72  float emissiveMult; // 0F8
73  float forcedDarkness; // 0FC - unused
74  float specularLODFade; // 100
75  float envmapLODFade; // 104
76  std::uint32_t unk108; // 108
79  std::int32_t unk12C; // 12C
80  std::uint32_t unk130; // 130
81  std::uint32_t unk134; // 134
83  std::uint64_t unk150; // 150
84  std::uint8_t unk158; // 158
85  std::uint8_t pad159; // 159
86  std::uint16_t pad15A; // 15A
87  std::uint32_t pad15C; // 15C
88  private:
89  KEEP_FOR_RE()
90  };
91  static_assert(sizeof(BSLightingShaderProperty) == 0x160);
92 }
#define KEEP_FOR_RE()
Definition: PCH.h:713
Definition: BSGeometry.h:17
Definition: BSLight.h:18
Definition: BSLightingShaderProperty.h:13
Data unk0D8
Definition: BSLightingShaderProperty.h:69
std::int32_t QShader() override
void PostLinkObject(NiStream &a_stream) override
bool SetupGeometry(BSGeometry *a_geometry) override
static constexpr auto VTABLE
Definition: BSLightingShaderProperty.h:17
void SetMaterialAlpha(float a_alpha) override
static constexpr auto RTTI
Definition: BSLightingShaderProperty.h:15
bool FinishSetupGeometry(BSGeometry *a_geometry) override
void DoClearRenderPasses() override
std::int32_t ForEachTexture(ForEachVisitor &a_visitor) override
std::uint32_t pad15C
Definition: BSLightingShaderProperty.h:87
Data unk0C8
Definition: BSLightingShaderProperty.h:68
std::uint8_t pad159
Definition: BSLightingShaderProperty.h:85
NiColor * emissiveColor
Definition: BSLightingShaderProperty.h:71
std::int32_t unk12C
Definition: BSLightingShaderProperty.h:79
float QMaterialAlpha() override
void Unk_2D(void) override
NiColorA projectedUVParams
Definition: BSLightingShaderProperty.h:77
bool CanMerge(const BSShaderProperty *a_other) override
bool AcceptsEffectData() const override
bool RegisterStreamables(NiStream &a_stream) override
void Unk_2F(void) override
static constexpr auto Ni_RTTI
Definition: BSLightingShaderProperty.h:16
void Unk_3B(void) override
NiColorA projectedUVColor
Definition: BSLightingShaderProperty.h:78
std::uint32_t unk108
Definition: BSLightingShaderProperty.h:76
std::uint32_t DetermineUtilityShaderDecl() override
BSShaderMaterial::Type GetMaterialType() override
Data unk0B8
Definition: BSLightingShaderProperty.h:67
const NiRTTI * GetRTTI() const override
float forcedDarkness
Definition: BSLightingShaderProperty.h:73
void Unk_2B(void) override
BSRenderPass * unk0E8
Definition: BSLightingShaderProperty.h:70
float emissiveMult
Definition: BSLightingShaderProperty.h:72
float specularLODFade
Definition: BSLightingShaderProperty.h:74
std::uint32_t unk130
Definition: BSLightingShaderProperty.h:80
void LoadBinary(NiStream &a_stream) override
void LinkObject(NiStream &a_stream) override
NiSourceTexture * GetBaseTexture() override
std::uint32_t unk134
Definition: BSLightingShaderProperty.h:81
float envmapLODFade
Definition: BSLightingShaderProperty.h:75
std::uint16_t pad15A
Definition: BSLightingShaderProperty.h:86
BSTArray< void * > unk138
Definition: BSLightingShaderProperty.h:82
std::uint8_t unk158
Definition: BSLightingShaderProperty.h:84
NiObject * CreateClone(NiCloningProcess &a_cloning) override
void SaveBinary(NiStream &a_stream) override
void Unk_2C(void) override
bool IsEqual(NiObject *a_object) override
void InvalidateTextures(std::uint32_t a_unk1)
RenderPassArray * GetRenderPasses(BSGeometry *a_geometry, std::uint32_t a_arg2, BSShaderAccumulator *a_accumulator) override
std::uint64_t unk150
Definition: BSLightingShaderProperty.h:83
Data unk088[3]
Definition: BSLightingShaderProperty.h:66
void CopyMembers(BSLightingShaderProperty *a_other)
Definition: BSRenderPass.h:11
Type
Definition: BSShaderMaterial.h:39
Definition: BSShaderProperty.h:27
Definition: BSShaderProperty.h:17
Definition: BSShader.h:111
Definition: NiCloningProcess.h:10
Definition: NiColor.h:283
Definition: NiColor.h:11
Definition: NiObject.h:37
Definition: NiRTTI.h:6
Definition: NiSourceTexture.h:21
Definition: NiStream.h:29
Definition: AbsorbEffect.h:6
constexpr REL::ID NiRTTI_BSLightingShaderProperty(static_cast< std::uint64_t >(527752))
constexpr REL::ID RTTI_BSLightingShaderProperty(static_cast< std::uint64_t >(692006))
constexpr std::array< REL::ID, 1 > VTABLE_BSLightingShaderProperty
Definition: Offsets_VTABLE.h:9215
Definition: BSLightingShaderProperty.h:20
RE::BSRenderPass * head
Definition: BSLightingShaderProperty.h:27
std::uint64_t unk08
Definition: BSLightingShaderProperty.h:28
BSRenderPass * EmplacePass(BSShader *a_shader, BSShaderProperty *a_property, BSGeometry *a_geometry, uint32_t a_technique, uint8_t a_numLights=0, BSLight *a_light0=nullptr, BSLight *a_light1=nullptr, BSLight *a_light2=nullptr, BSLight *a_light3=nullptr)
Definition: BSShaderProperty.h:39