121 lines
2.0 KiB
C++
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__
|