diff --git a/Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.cpp b/Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.cpp index 91f3102c58..1945ca0aa7 100644 --- a/Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.cpp +++ b/Source/Core/VideoCommon/Assets/DirectFilesystemAssetLibrary.cpp @@ -8,6 +8,7 @@ #include +#include "Common/CommonPaths.h" #include "Common/FileUtil.h" #include "Common/IOFile.h" #include "Common/JsonUtil.h" @@ -150,6 +151,12 @@ DirectFilesystemAssetLibrary::LoadRasterSurfaceShader(const AssetID& asset_id, if (!RasterSurfaceShaderData::FromJson(asset_id, root_obj, data)) return {}; + const std::string graphics_mod_builtin = + File::GetSysDirectory() + GRAPHICSMOD_DIR + "/Builtin" + "/Shaders"; + + data->shader_includer = std::make_unique( + PathToString(pixel_shader->second.parent_path()), graphics_mod_builtin); + return LoadInfo{approx_mem_size}; } diff --git a/Source/Core/VideoCommon/Assets/ShaderAsset.h b/Source/Core/VideoCommon/Assets/ShaderAsset.h index 81631fa0b3..0204f65bb3 100644 --- a/Source/Core/VideoCommon/Assets/ShaderAsset.h +++ b/Source/Core/VideoCommon/Assets/ShaderAsset.h @@ -4,6 +4,7 @@ #pragma once #include +#include #include #include #include @@ -13,6 +14,7 @@ #include #include "VideoCommon/Assets/CustomAsset.h" +#include "VideoCommon/ShaderCompileUtils.h" #include "VideoCommon/TextureConfig.h" class ShaderCode; @@ -45,6 +47,13 @@ struct ShaderProperty struct RasterSurfaceShaderData { + RasterSurfaceShaderData() = default; + RasterSurfaceShaderData(const RasterSurfaceShaderData&) = delete; + RasterSurfaceShaderData(RasterSurfaceShaderData&&) = default; + ~RasterSurfaceShaderData() = default; + RasterSurfaceShaderData& operator=(const RasterSurfaceShaderData&) = delete; + RasterSurfaceShaderData& operator=(RasterSurfaceShaderData&&) = default; + static bool FromJson(const CustomAssetLibrary::AssetID& asset_id, const picojson::object& json, RasterSurfaceShaderData* data); static void ToJson(picojson::object& obj, const RasterSurfaceShaderData& data); @@ -65,6 +74,8 @@ struct RasterSurfaceShaderData bool operator==(const SamplerData&) const = default; }; std::vector samplers; + + std::unique_ptr shader_includer; }; class RasterSurfaceShaderAsset final : public CustomLoadableAsset