// Copyright 2017 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include "Common/CommonTypes.h" enum class ShaderStage { Vertex, Geometry, Pixel, Compute }; class AbstractShader { public: explicit AbstractShader(ShaderStage stage) : m_stage(stage) {} virtual ~AbstractShader() = default; ShaderStage GetStage() const { return m_stage; } // Shader binaries represent the input source code in a lower-level form. e.g. SPIR-V or DXBC. // The shader source code is not required to create a shader object from the binary. using BinaryData = std::vector; virtual BinaryData GetBinary() const { return {}; } protected: ShaderStage m_stage; };