OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
material.h
Go to the documentation of this file.
1#pragma once
2
3#include <Tempest/Texture2d>
4
5#include <zenkit/Material.hh>
6#include <zenkit/world/VobTree.hh>
7#include <zenkit/DaedalusScript.hh>
8#include <zenkit/addon/daedalus.hh>
9
10class Material final {
11 public:
12 Material()=default;
13 Material(const zenkit::Material& m, bool enableAlphaTest);
14 Material(const zenkit::VisualDecal& decal);
15 Material(const zenkit::IParticleEffect &src);
16
27
28 const Tempest::Texture2d* tex=nullptr;
29 std::vector<const Tempest::Texture2d*> frames;
31 float alphaWeight = 1;
32 Tempest::Point texAniMapDirPeriod;
33 uint64_t texAniFPSInv = 1;
34 bool isGhost = false;
36 float envMapping = 0;
37
38 bool operator == (const Material& other) const;
39
40 bool isSolid() const;
41
42 bool hasFrameAnimation() const { return !frames.empty() && texAniFPSInv!=0; }
43 bool hasUvAnimation() const { return texAniMapDirPeriod!=Tempest::Point(0); }
44 bool isTesselated() const { return isTesselated(alpha); }
45 bool isForwardShading() const { return isForwardShading(alpha); }
49
50 static bool isTesselated(AlphaFunc alpha);
51 static bool isForwardShading(AlphaFunc alpha);
55
56 private:
57 static AlphaFunc loadAlphaFunc(zenkit::AlphaFunction zenAlpha, zenkit::MaterialGroup matGroup,
58 uint8_t alpha, const Tempest::Texture2d* tex, bool enableAlphaTest);
59 void loadFrames(const zenkit::Material& m);
60 void loadFrames(const std::string_view fr, float fps);
61 };
62
float envMapping
Definition material.h:36
bool isShadowmapRequired() const
Definition material.h:47
float waveMaxAmplitude
Definition material.h:35
std::vector< const Tempest::Texture2d * > frames
Definition material.h:29
float alphaWeight
Definition material.h:31
Material()=default
bool isGhost
Definition material.h:34
bool isForwardShading() const
Definition material.h:45
bool isTextureInShadowPass() const
Definition material.h:48
bool isTesselated() const
Definition material.h:44
bool hasFrameAnimation() const
Definition material.h:42
Tempest::Point texAniMapDirPeriod
Definition material.h:32
@ AdditiveLight
Definition material.h:25
@ Multiply2
Definition material.h:23
@ Multiply
Definition material.h:22
@ Transparent
Definition material.h:24
@ AlphaTest
Definition material.h:19
const Tempest::Texture2d * tex
Definition material.h:28
AlphaFunc alpha
Definition material.h:30
bool operator==(const Material &other) const
Definition material.cpp:65
bool isSceneInfoRequired() const
Definition material.h:46
uint64_t texAniFPSInv
Definition material.h:33
bool hasUvAnimation() const
Definition material.h:43
bool isSolid() const
Definition material.cpp:77