2019-11-03 14:39:25 +00:00
|
|
|
#pragma once
|
2020-01-10 03:31:12 +00:00
|
|
|
#include "../windows_headers.h"
|
2019-11-03 14:39:25 +00:00
|
|
|
#include <d3d11.h>
|
|
|
|
#include <string_view>
|
|
|
|
#include <type_traits>
|
|
|
|
#include <wrl/client.h>
|
|
|
|
|
|
|
|
namespace D3D11::ShaderCompiler {
|
|
|
|
template<typename T>
|
|
|
|
using ComPtr = Microsoft::WRL::ComPtr<T>;
|
|
|
|
|
|
|
|
enum class Type
|
|
|
|
{
|
|
|
|
Vertex,
|
2019-11-04 14:23:31 +00:00
|
|
|
Geometry,
|
2019-11-03 14:39:25 +00:00
|
|
|
Pixel,
|
|
|
|
Compute
|
|
|
|
};
|
|
|
|
|
|
|
|
ComPtr<ID3DBlob> CompileShader(Type type, D3D_FEATURE_LEVEL feature_level, std::string_view code, bool debug);
|
|
|
|
|
|
|
|
ComPtr<ID3D11VertexShader> CompileAndCreateVertexShader(ID3D11Device* device, std::string_view code, bool debug);
|
2019-11-04 14:23:31 +00:00
|
|
|
ComPtr<ID3D11GeometryShader> CompileAndCreateGeometryShader(ID3D11Device* device, std::string_view code, bool debug);
|
2019-11-03 14:39:25 +00:00
|
|
|
ComPtr<ID3D11PixelShader> CompileAndCreatePixelShader(ID3D11Device* device, std::string_view code, bool debug);
|
|
|
|
ComPtr<ID3D11ComputeShader> CompileAndCreateComputeShader(ID3D11Device* device, std::string_view code, bool debug);
|
|
|
|
|
2020-02-19 13:04:21 +00:00
|
|
|
ComPtr<ID3D11VertexShader> CreateVertexShader(ID3D11Device* device, const void* bytecode, size_t bytecode_length);
|
|
|
|
ComPtr<ID3D11VertexShader> CreateVertexShader(ID3D11Device* device, const ID3DBlob* blob);
|
|
|
|
ComPtr<ID3D11GeometryShader> CreateGeometryShader(ID3D11Device* device, const void* bytecode, size_t bytecode_length);
|
|
|
|
ComPtr<ID3D11GeometryShader> CreateGeometryShader(ID3D11Device* device, const ID3DBlob* blob);
|
|
|
|
ComPtr<ID3D11PixelShader> CreatePixelShader(ID3D11Device* device, const void* bytecode, size_t bytecode_length);
|
|
|
|
ComPtr<ID3D11PixelShader> CreatePixelShader(ID3D11Device* device, const ID3DBlob* blob);
|
|
|
|
ComPtr<ID3D11ComputeShader> CreateComputeShader(ID3D11Device* device, const void* bytecode, size_t bytecode_length);
|
|
|
|
ComPtr<ID3D11ComputeShader> CreateComputeShader(ID3D11Device* device, const ID3DBlob* blob);
|
|
|
|
|
2019-11-03 14:39:25 +00:00
|
|
|
}; // namespace D3D11::ShaderCompiler
|