6using namespace Tempest;
8static Tempest::Color
toColor(zenkit::Color v) {
9 Tempest::Color c(
float(v.r)/255.f,
float(v.g)/255.f,
float(v.b)/255.f,
float(v.a)/255.f);
16 if(!m.texture.empty()) {
20 enableAlphaTest &= (m.color.a!=255);
26 alpha = loadAlphaFunc(m.alpha_func,m.group,m.color.a,
tex,enableAlphaTest);
27 if(
alpha==
Water && m.name==
"OWODWFALL_WATERFALL_01") {
32 if(m.texture_anim_map_mode!=zenkit::AnimationMapping::NONE &&
tex!=
nullptr) {
33 auto texAniMapDir = m.texture_anim_map_dir;
34 if(texAniMapDir.x!=0.f)
36 if(texAniMapDir.y!=0.f)
40 if(m.wave_mode!=zenkit::WaveMode::NONE)
43 if(m.environment_mapping!=0)
49 if(
tex==
nullptr && !decal.name.empty())
51 loadFrames(decal.name, decal.texture_anim_fps);
53 alpha = loadAlphaFunc(decal.alpha_func, zenkit::MaterialGroup::UNDEFINED, decal.alpha_weight,
tex,
true);
59 loadFrames(src.vis_name_s, src.vis_tex_ani_fps);
107 zenkit::MaterialGroup matGroup,
109 const Tempest::Texture2d* tex,
110 bool enableAlphaTest) {
113 case zenkit::AlphaFunction::BLEND:
116 case zenkit::AlphaFunction::ADD:
119 case zenkit::AlphaFunction::SUBTRACT:
123 case zenkit::AlphaFunction::MULTIPLY:
126 case zenkit::AlphaFunction::MULTIPLY_ALT:
129 case zenkit::AlphaFunction::DEFAULT:
130 case zenkit::AlphaFunction::NONE:
135 if(matGroup == zenkit::MaterialGroup::WATER)
143 if(
tex!=
nullptr &&
tex->format()==Tempest::TextureFormat::DXT1 && clrAlpha==255) {
161void Material::loadFrames(
const zenkit::Material& m) {
162 loadFrames(m.texture, m.texture_anim_fps);
165void Material::loadFrames(
const std::string_view fr,
float fps) {
bool isShadowmapRequired() const
std::vector< const Tempest::Texture2d * > frames
bool isForwardShading() const
bool isTextureInShadowPass() const
bool isTesselated() const
Tempest::Point texAniMapDirPeriod
const Tempest::Texture2d * tex
bool operator==(const Material &other) const
bool isSceneInfoRequired() const
static const Tempest::Texture2d * loadTexture(std::string_view name, bool forceMips=false)
static auto loadTextureAnim(std::string_view name) -> std::vector< const Tempest::Texture2d * >
static Tempest::Color toColor(zenkit::Color v)
Material::AlphaFunc loadAlpha(std::string_view src)