Files
o3de/Code/CryEngine/RenderDll/XRenderD3D9/DXGL/Interfaces/CCryDXGLShader.hpp
T
2021-03-08 14:30:57 -08:00

117 lines
3.0 KiB
C++

/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
// Original file Copyright Crytek GMBH or its affiliates, used under license.
// Description : Declaration of the DXGL wrapper for D3D11 shader interfaces
#ifndef __CRYDXGLSHADER__
#define __CRYDXGLSHADER__
#include "CCryDXGLDeviceChild.hpp"
namespace NCryOpenGL
{
struct SShader;
}
class CCryDXGLShader
: public CCryDXGLDeviceChild
{
public:
CCryDXGLShader(NCryOpenGL::SShader* pGLShader, CCryDXGLDevice* pDevice);
virtual ~CCryDXGLShader();
NCryOpenGL::SShader* GetGLShader();
private:
_smart_ptr<NCryOpenGL::SShader> m_spGLShader;
};
class CCryDXGLVertexShader
: public CCryDXGLShader
{
public:
DXGL_IMPLEMENT_INTERFACE(CCryDXGLVertexShader, D3D11VertexShader)
CCryDXGLVertexShader(NCryOpenGL::SShader* pGLShader, CCryDXGLDevice* pDevice)
: CCryDXGLShader(pGLShader, pDevice)
{
DXGL_INITIALIZE_INTERFACE(D3D11VertexShader)
}
};
class CCryDXGLHullShader
: public CCryDXGLShader
{
public:
DXGL_IMPLEMENT_INTERFACE(CCryDXGLHullShader, D3D11HullShader)
CCryDXGLHullShader(NCryOpenGL::SShader* pGLShader, CCryDXGLDevice* pDevice)
: CCryDXGLShader(pGLShader, pDevice)
{
DXGL_INITIALIZE_INTERFACE(D3D11HullShader)
}
};
class CCryDXGLDomainShader
: public CCryDXGLShader
{
public:
DXGL_IMPLEMENT_INTERFACE(CCryDXGLDomainShader, D3D11DomainShader)
CCryDXGLDomainShader(NCryOpenGL::SShader* pGLShader, CCryDXGLDevice* pDevice)
: CCryDXGLShader(pGLShader, pDevice)
{
DXGL_INITIALIZE_INTERFACE(D3D11DomainShader)
}
};
class CCryDXGLGeometryShader
: public CCryDXGLShader
{
public:
DXGL_IMPLEMENT_INTERFACE(CCryDXGLGeometryShader, D3D11GeometryShader)
CCryDXGLGeometryShader(NCryOpenGL::SShader* pGLShader, CCryDXGLDevice* pDevice)
: CCryDXGLShader(pGLShader, pDevice)
{
DXGL_INITIALIZE_INTERFACE(D3D11GeometryShader)
}
};
class CCryDXGLPixelShader
: public CCryDXGLShader
{
public:
DXGL_IMPLEMENT_INTERFACE(CCryDXGLPixelShader, D3D11PixelShader)
CCryDXGLPixelShader(NCryOpenGL::SShader* pGLShader, CCryDXGLDevice* pDevice)
: CCryDXGLShader(pGLShader, pDevice)
{
DXGL_INITIALIZE_INTERFACE(D3D11PixelShader)
}
};
class CCryDXGLComputeShader
: public CCryDXGLShader
{
public:
DXGL_IMPLEMENT_INTERFACE(CCryDXGLComputeShader, D3D11ComputeShader)
CCryDXGLComputeShader(NCryOpenGL::SShader* pGLShader, CCryDXGLDevice* pDevice)
: CCryDXGLShader(pGLShader, pDevice)
{
DXGL_INITIALIZE_INTERFACE(D3D11ComputeShader)
}
};
#endif //__CRYDXGLSHADER__