// Copyright 2017 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include "Common/CommonTypes.h" #include "Common/TypeUtils.h" class ShaderCode; enum class APIType; union ShaderHostConfig; namespace UberShader { // Common functions across all ubershaders void WriteUberShaderCommonHeader(ShaderCode& out, APIType api_type, const ShaderHostConfig& host_config); // Vertex lighting void WriteLightingFunction(ShaderCode& out); void WriteVertexLighting(ShaderCode& out, APIType api_type, std::string_view world_pos_var, std::string_view normal_var, std::string_view in_color_0_var, std::string_view in_color_1_var, std::string_view out_color_0_var, std::string_view out_color_1_var); // bitfieldExtract generator for BitField types template std::string BitfieldExtract(std::string_view source) { using BitFieldT = Common::MemberType; return fmt::format("bitfieldExtract({}, {}, {})", source, static_cast(BitFieldT::StartBit()), static_cast(BitFieldT::NumBits())); } } // namespace UberShader