diff options
Diffstat (limited to 'Source/Core/VideoCommon/Assets/ShaderAsset.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/Assets/ShaderAsset.cpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/Assets/ShaderAsset.cpp b/Source/Core/VideoCommon/Assets/ShaderAsset.cpp index b45310dab9..67622f20a7 100644 --- a/Source/Core/VideoCommon/Assets/ShaderAsset.cpp +++ b/Source/Core/VideoCommon/Assets/ShaderAsset.cpp @@ -366,6 +366,76 @@ void PixelShaderData::ToJson(picojson::object& obj, const PixelShaderData& data) obj["properties"] = picojson::value{json_properties}; } +std::span<const std::string_view> ShaderProperty::GetValueTypeNames() +{ + static constexpr std::array<std::string_view, 14> values = { + "sampler2d", "sampler2darray", "samplercube", "int", "int2", "int3", "int4", + "float", "float2", "float3", "float4", "rgb", "rgba", "bool"}; + return values; +} + +ShaderProperty::Value ShaderProperty::GetDefaultValueFromTypeName(std::string_view name) +{ + if (name == "sampler2d") + { + return Sampler2D{}; + } + else if (name == "sampler2darray") + { + return Sampler2DArray{}; + } + else if (name == "samplercube") + { + return SamplerCube{}; + } + else if (name == "int") + { + return 0; + } + else if (name == "int2") + { + return std::array<s32, 2>{}; + } + else if (name == "int3") + { + return std::array<s32, 3>{}; + } + else if (name == "int4") + { + return std::array<s32, 4>{}; + } + else if (name == "float") + { + return 0.0f; + } + else if (name == "float2") + { + return std::array<float, 2>{}; + } + else if (name == "float3") + { + return std::array<float, 3>{}; + } + else if (name == "float4") + { + return std::array<float, 4>{}; + } + else if (name == "rgb") + { + return RGB{}; + } + else if (name == "rgba") + { + return RGBA{}; + } + else if (name == "bool") + { + return false; + } + + return Value{}; +} + CustomAssetLibrary::LoadInfo PixelShaderAsset::LoadImpl(const CustomAssetLibrary::AssetID& asset_id) { auto potential_data = std::make_shared<PixelShaderData>(); |
