#ifndef XGPUTEXTUREFETCHCONSTANT_H
#define XGPUTEXTUREFETCHCONSTANT_H

#include "xasset.h"
#include "xgputexturesize1d.h"
#include "xgputexturesize2d.h"
#include "xgputexturesize3d.h"
#include "xgputexturesizestack.h"

class XGpuTextureFetchConstant : public XAsset
{
public:
    explicit XGpuTextureFetchConstant();
    ~XGpuTextureFetchConstant();

    virtual void ParseData(QDataStream* aStream) override;
    virtual void Clear() override;

private:
    quint32 mType;
    quint32 mSignX;
    quint32 mSignY;
    quint32 mSignZ;
    quint32 mSignW;
    quint32 mClampX;
    quint32 mClampY;
    quint32 mClampZ;
    quint32 mPitch;
    quint32 mTiled;
    quint32 mDataFormat;
    quint32 mEndian;
    quint32 mRequestSize;
    quint32 mStacked;
    quint32 mClampPolicy;
    quint32 mBaseAddress;
    quint32 mNumFormat;
    quint32 mSwizzleX;
    quint32 mSwizzleY;
    quint32 mSwizzleZ;
    quint32 mSwizzleW;
    qint32 mExpAdjust;
    XGpuTextureSize1D mOneD;
    XGpuTextureSize2D mTwoD;
    XGpuTextureSize3D mThreeD;
    XGpuTextureSizeStack mStack;
    quint32 mMagFilter;
    quint32 mMinFilter;
    quint32 mMipFilter;
    quint32 mAnisoFilter;
    quint32 mBorderSize;
    quint32 mVolMagFilter;
    quint32 mVolMinFilter;
    quint32 mMinMipLevel;
    quint32 mMaxMipLevel;
    quint32 mMagAnisoWalk;
    quint32 mMinAnisoWalk;
    qint32 mLODBias;
    qint32 mGradExpAdjustH;
    qint32 mGradExpAdjustV;
    quint32 mBorderColor;
    quint32 mForceBCWToMax;
    quint32 mTriClamp;
    qint32 mAnisoBias;
    quint32 mDimension;
    quint32 mPackedMips;
    quint32 mMipAddress;
};

#endif // XGPUTEXTUREFETCHCONSTANT_H
