CommonLibSSE (powerof3)
Loading...
Searching...
No Matches
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
7namespace 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
64 // members
65 Data unk088[3]; // 088
66 Data unk0B8; // 0B8
67 Data unk0C8; // 0C8
68 Data unk0D8; // 0D8
71 float emissiveMult; // 0F8
72 float forcedDarkness; // 0FC - unused
73 float specularLODFade; // 100
74 float envmapLODFade; // 104
75 std::uint32_t unk108; // 108
78 std::int32_t unk12C; // 12C
79 std::uint32_t unk130; // 130
80 std::uint32_t unk134; // 134
82 std::uint64_t unk150; // 150
83 std::uint8_t unk158; // 158
84 std::uint8_t pad159; // 159
85 std::uint16_t pad15A; // 15A
86 std::uint32_t pad15C; // 15C
87 };
88 static_assert(sizeof(BSLightingShaderProperty) == 0x160);
89}
Definition BSGeometry.h:15
Definition BSLight.h:22
Definition BSLightingShaderProperty.h:13
Data unk0D8
Definition BSLightingShaderProperty.h:68
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:86
Data unk0C8
Definition BSLightingShaderProperty.h:67
std::uint8_t pad159
Definition BSLightingShaderProperty.h:84
NiColor * emissiveColor
Definition BSLightingShaderProperty.h:70
std::int32_t unk12C
Definition BSLightingShaderProperty.h:78
float QMaterialAlpha() override
void Unk_2D(void) override
NiColorA projectedUVParams
Definition BSLightingShaderProperty.h:76
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:77
std::uint32_t unk108
Definition BSLightingShaderProperty.h:75
std::uint32_t DetermineUtilityShaderDecl() override
BSShaderMaterial::Type GetMaterialType() override
Data unk0B8
Definition BSLightingShaderProperty.h:66
float forcedDarkness
Definition BSLightingShaderProperty.h:72
void Unk_2B(void) override
BSRenderPass * unk0E8
Definition BSLightingShaderProperty.h:69
float emissiveMult
Definition BSLightingShaderProperty.h:71
float specularLODFade
Definition BSLightingShaderProperty.h:73
std::uint32_t unk130
Definition BSLightingShaderProperty.h:79
void LoadBinary(NiStream &a_stream) override
void LinkObject(NiStream &a_stream) override
std::uint32_t unk134
Definition BSLightingShaderProperty.h:80
float envmapLODFade
Definition BSLightingShaderProperty.h:74
RenderPassArray * GetRenderPasses(BSGeometry *a_geometry, std::uint32_t a_arg2, BSShaderAccumulator *a_accumulator) override
std::uint16_t pad15A
Definition BSLightingShaderProperty.h:85
BSTArray< void * > unk138
Definition BSLightingShaderProperty.h:81
std::uint8_t unk158
Definition BSLightingShaderProperty.h:83
void SaveBinary(NiStream &a_stream) override
void Unk_2C(void) override
bool IsEqual(NiObject *a_object) override
NiObject * CreateClone(NiCloningProcess &a_cloning) override
std::uint64_t unk150
Definition BSLightingShaderProperty.h:82
NiSourceTexture * GetBaseTexture() override
Data unk088[3]
Definition BSLightingShaderProperty.h:65
void CopyMembers(BSLightingShaderProperty *a_other)
const NiRTTI * GetRTTI() const override
Definition BSRenderPass.h:11
Type
Definition BSShaderMaterial.h:39
Definition BSShaderProperty.h:27
Definition BSShaderProperty.h:17
Definition BSShader.h:111
Definition BSTArray.h:378
Definition NiCloningProcess.h:10
Definition NiColor.h:281
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