55 строки
2.4 KiB
C++
55 строки
2.4 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// DxilInterpolationMode.h //
|
|
// Copyright (C) Microsoft Corporation. All rights reserved. //
|
|
// This file is distributed under the University of Illinois Open Source //
|
|
// License. See LICENSE.TXT for details. //
|
|
// //
|
|
// Representation of HLSL interpolation mode. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#pragma once
|
|
|
|
#include "DxilConstants.h"
|
|
|
|
namespace hlsl {
|
|
|
|
|
|
/// Use this class to represent signature element interpolation mode.
|
|
class InterpolationMode {
|
|
public:
|
|
using Kind = DXIL::InterpolationMode;
|
|
|
|
InterpolationMode();
|
|
InterpolationMode(const InterpolationMode &Mode) = default;
|
|
InterpolationMode(Kind Kind);
|
|
InterpolationMode(unsigned long long Kind);
|
|
InterpolationMode(bool bNoInterpolation, bool bLinear, bool bNoperspective, bool bCentroid, bool bSample);
|
|
InterpolationMode &operator=(const InterpolationMode &o);
|
|
bool operator==(const InterpolationMode &o) const;
|
|
|
|
bool IsValid() const { return m_Kind >= Kind::Undefined && m_Kind < Kind::Invalid; }
|
|
bool IsUndefined() const { return m_Kind == Kind::Undefined; }
|
|
bool IsConstant() const { return m_Kind == Kind::Constant; }
|
|
bool IsLinear() const { return m_Kind == Kind::Linear; }
|
|
bool IsLinearCentroid() const { return m_Kind == Kind::LinearCentroid; }
|
|
bool IsLinearNoperspective() const { return m_Kind == Kind::LinearNoperspective; }
|
|
bool IsLinearNoperspectiveCentroid() const { return m_Kind == Kind::LinearNoperspectiveCentroid; }
|
|
bool IsLinearSample() const { return m_Kind == Kind::LinearSample; }
|
|
bool IsLinearNoperspectiveSample() const { return m_Kind == Kind::LinearNoperspectiveSample; }
|
|
|
|
bool IsAnyLinear() const;
|
|
bool IsAnyNoPerspective() const;
|
|
bool IsAnyCentroid() const;
|
|
bool IsAnySample() const;
|
|
|
|
Kind GetKind() const { return m_Kind; }
|
|
const char *GetName() const;
|
|
|
|
private:
|
|
Kind m_Kind;
|
|
};
|
|
|
|
} // namespace hlsl
|