Files
Webcam/include/engine/core/texture_parm.h
2026-06-22 11:49:35 +02:00

121 lines
2.0 KiB
C++

/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#ifndef __NTEXTUREPARM__
#define __NTEXTUREPARM__
#include "reflection/c_refl.h"
#include "reflection/nenum_string.h"
#include "nstring/nstring.h"
namespace GS {
class Picture;
namespace NML { class Tag; }
namespace Render {
struct Texture;
//
struct TextureParm
{
/// Get texture parameter file name from texture name.
static String GetParmFileName(const char *);
static Reflection::Property serializable[];
enum Filtering
{
FilterDefault = 0,
FilterNearest,
FilterBilinear,
FilterTrilinear,
FilterLast
};
static Reflection::Enum::Dict filtering_dict[];
enum Anisotropy
{
AnisotropyDefault = 0,
AnisotropyNone,
Anisotropy2x,
Anisotropy4x,
Anisotropy8x,
Anisotropy16x,
AnisotropyLast
};
static Reflection::Enum::Dict anisotropic_dict[];
enum Wrap
{
WrapDefault = 0,
WrapRepeat,
WrapClamp,
WrapLast
};
static Reflection::Enum::Dict wrap_dict[];
enum Swizzle
{
SwizzleRGBA = 0, // identity
SwizzleBGRA,
SwizzleARGB,
SwizzleABGR,
SwizzleXYZ, // identity
SwizzleXZY,
SwizzleYXZ,
SwizzleYZX,
SwizzleZXY,
SwizzleZYX,
SwizzleLast
};
static Reflection::Enum::Dict swizzle_dict[];
static const char *GetSwizzleFlags(Swizzle);
Wrap wrap_u, wrap_v;
Filtering filtering;
Anisotropy anisotropy;
float lod_bias;
Swizzle swizzle;
bool invert[4];
bool flip[2];
void Apply(Picture &) const;
void Apply(Texture &) const;
bool FromMetaTag(NML::Tag &);
NML::Tag *AsMetaTag() const;
TextureParm()
{
wrap_u = wrap_v = WrapDefault;
filtering = FilterDefault;
anisotropy = AnisotropyDefault;
lod_bias = 0.f;
swizzle = SwizzleRGBA;
for (uchar n = 0; n < 4; ++n)
invert[n] = false;
flip[0] = flip[1] = false;
}
};
} // Render
} // GS
#endif // __NTEXTUREPARM__