From a40a952177faae7add798980ff83aebc0a94db8a Mon Sep 17 00:00:00 2001 From: iwubcode Date: Tue, 23 Jan 2024 01:07:42 -0600 Subject: VideoCommon: add a method to calculate a default value for ShaderAsset and another to list its types --- Source/Core/VideoCommon/Assets/ShaderAsset.cpp | 70 ++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) (limited to 'Source/Core/VideoCommon/Assets/ShaderAsset.cpp') 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 ShaderProperty::GetValueTypeNames() +{ + static constexpr std::array 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{}; + } + else if (name == "int3") + { + return std::array{}; + } + else if (name == "int4") + { + return std::array{}; + } + else if (name == "float") + { + return 0.0f; + } + else if (name == "float2") + { + return std::array{}; + } + else if (name == "float3") + { + return std::array{}; + } + else if (name == "float4") + { + return std::array{}; + } + 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(); -- cgit v1.2.3