From e56e694cd85cff56205d51b778c781498f6536f0 Mon Sep 17 00:00:00 2001 From: iwubcode Date: Fri, 28 Feb 2025 00:01:27 -0600 Subject: [PATCH] VideoCommon: add logic to generate render targets using a render target template and some other metadata --- .../RenderTargetGeneration.cpp | 29 +++++++++++++++++++ .../RenderTargetGeneration.h | 17 +++++++++++ 2 files changed, 46 insertions(+) create mode 100644 Source/Core/VideoCommon/GraphicsModEditor/RenderTargetGeneration.cpp create mode 100644 Source/Core/VideoCommon/GraphicsModEditor/RenderTargetGeneration.h diff --git a/Source/Core/VideoCommon/GraphicsModEditor/RenderTargetGeneration.cpp b/Source/Core/VideoCommon/GraphicsModEditor/RenderTargetGeneration.cpp new file mode 100644 index 0000000000..68cdb80e6f --- /dev/null +++ b/Source/Core/VideoCommon/GraphicsModEditor/RenderTargetGeneration.cpp @@ -0,0 +1,29 @@ +// Copyright 2025 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "VideoCommon/GraphicsModEditor/RenderTargetGeneration.h" + +#include "Common/JsonUtil.h" +#include "Common/StringUtil.h" + +#include "VideoCommon/GraphicsModEditor/EditorState.h" + +namespace GraphicsModEditor +{ +EditorAsset* GenerateRenderTarget(const std::filesystem::path& output_path, + const VideoCommon::RenderTargetData& data, + GraphicsModEditor::EditorAssetSource* source) +{ + picojson::object obj; + VideoCommon::RenderTargetData::ToJson(&obj, data); + + const auto metadata_path = output_path / "metadata.rendertarget"; + if (!JsonToFile(PathToString(metadata_path), picojson::value{obj}, true)) + { + return nullptr; + } + + source->AddAsset(metadata_path); + return source->GetAssetFromPath(metadata_path); +} +} // namespace GraphicsModEditor diff --git a/Source/Core/VideoCommon/GraphicsModEditor/RenderTargetGeneration.h b/Source/Core/VideoCommon/GraphicsModEditor/RenderTargetGeneration.h new file mode 100644 index 0000000000..c82283ae54 --- /dev/null +++ b/Source/Core/VideoCommon/GraphicsModEditor/RenderTargetGeneration.h @@ -0,0 +1,17 @@ +// Copyright 2025 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include + +#include "VideoCommon/Assets/RenderTargetAsset.h" + +namespace GraphicsModEditor +{ +struct EditorAsset; +class EditorAssetSource; +EditorAsset* GenerateRenderTarget(const std::filesystem::path& output_path, + const VideoCommon::RenderTargetData& data, + GraphicsModEditor::EditorAssetSource* source); +} // namespace GraphicsModEditor