DirectXShaderCompiler/include/dxc/DXIL/DxilInterpolationMode.h

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