mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2026-08-12 20:30:44 -05:00
VideoCommon: update graphics mod action interface
* Add a 'AfterEFB' function to graphics mod action that can return a Material * Rename previous EFB graphics mod function to 'BeforeEFB' to differentiate from 'AfterEFB' * Rename previous XFB graphics mod function to 'BeforeXFB' to mirror EFB
This commit is contained in:
@@ -10,7 +10,7 @@ void PrintAction::OnDrawStarted(GraphicsModActionData::DrawStarted*)
|
||||
INFO_LOG_FMT(VIDEO, "OnDrawStarted Called");
|
||||
}
|
||||
|
||||
void PrintAction::OnEFB(GraphicsModActionData::EFB* efb)
|
||||
void PrintAction::BeforeEFB(GraphicsModActionData::PreEFB* efb)
|
||||
{
|
||||
if (!efb) [[unlikely]]
|
||||
return;
|
||||
|
||||
@@ -12,7 +12,7 @@ class PrintAction final : public GraphicsModAction
|
||||
public:
|
||||
static constexpr std::string_view factory_name = "print";
|
||||
void OnDrawStarted(GraphicsModActionData::DrawStarted*) override;
|
||||
void OnEFB(GraphicsModActionData::EFB*) override;
|
||||
void BeforeEFB(GraphicsModActionData::PreEFB*) override;
|
||||
void OnProjection(GraphicsModActionData::Projection*) override;
|
||||
void OnProjectionAndTexture(GraphicsModActionData::Projection*) override;
|
||||
void OnTextureLoad(GraphicsModActionData::TextureLoad*) override;
|
||||
|
||||
@@ -30,7 +30,7 @@ ScaleAction::ScaleAction(Common::Vec3 scale) : m_scale(scale)
|
||||
{
|
||||
}
|
||||
|
||||
void ScaleAction::OnEFB(GraphicsModActionData::EFB* efb)
|
||||
void ScaleAction::BeforeEFB(GraphicsModActionData::PreEFB* efb)
|
||||
{
|
||||
if (!efb) [[unlikely]]
|
||||
return;
|
||||
|
||||
@@ -16,7 +16,7 @@ public:
|
||||
static constexpr std::string_view factory_name = "scale";
|
||||
static std::unique_ptr<ScaleAction> Create(const picojson::value& json_data);
|
||||
explicit ScaleAction(Common::Vec3 scale);
|
||||
void OnEFB(GraphicsModActionData::EFB*) override;
|
||||
void BeforeEFB(GraphicsModActionData::PreEFB*) override;
|
||||
void OnProjection(GraphicsModActionData::Projection*) override;
|
||||
void OnProjectionAndTexture(GraphicsModActionData::Projection*) override;
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ void SkipAction::OnDrawStarted(GraphicsModActionData::DrawStarted* draw_started)
|
||||
*draw_started->skip = true;
|
||||
}
|
||||
|
||||
void SkipAction::OnEFB(GraphicsModActionData::EFB* efb)
|
||||
void SkipAction::BeforeEFB(GraphicsModActionData::PreEFB* efb)
|
||||
{
|
||||
if (!efb) [[unlikely]]
|
||||
return;
|
||||
|
||||
@@ -10,5 +10,5 @@ class SkipAction final : public GraphicsModAction
|
||||
public:
|
||||
static constexpr std::string_view factory_name = "skip";
|
||||
void OnDrawStarted(GraphicsModActionData::DrawStarted*) override;
|
||||
void OnEFB(GraphicsModActionData::EFB*) override;
|
||||
void BeforeEFB(GraphicsModActionData::PreEFB*) override;
|
||||
};
|
||||
|
||||
@@ -16,8 +16,9 @@ public:
|
||||
GraphicsModAction& operator=(GraphicsModAction&&) = default;
|
||||
|
||||
virtual void OnDrawStarted(GraphicsModActionData::DrawStarted*) {}
|
||||
virtual void OnEFB(GraphicsModActionData::EFB*) {}
|
||||
virtual void OnXFB() {}
|
||||
virtual void BeforeEFB(GraphicsModActionData::PreEFB*) {}
|
||||
virtual void AfterEFB(GraphicsModActionData::PostEFB*) {}
|
||||
virtual void BeforeXFB() {}
|
||||
virtual void OnProjection(GraphicsModActionData::Projection*) {}
|
||||
virtual void OnProjectionAndTexture(GraphicsModActionData::Projection*) {}
|
||||
virtual void OnTextureLoad(GraphicsModActionData::TextureLoad*) {}
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "Common/Matrix.h"
|
||||
#include "Common/SmallVector.h"
|
||||
#include "VideoCommon/Assets/TextureAsset.h"
|
||||
#include "VideoCommon/Resources/MaterialResource.h"
|
||||
#include "VideoCommon/ShaderGenCommon.h"
|
||||
|
||||
namespace GraphicsModActionData
|
||||
@@ -24,7 +25,7 @@ struct DrawStarted
|
||||
std::span<u8>* material_uniform_buffer;
|
||||
};
|
||||
|
||||
struct EFB
|
||||
struct PreEFB
|
||||
{
|
||||
u32 texture_width;
|
||||
u32 texture_height;
|
||||
@@ -33,6 +34,11 @@ struct EFB
|
||||
u32* scaled_height;
|
||||
};
|
||||
|
||||
struct PostEFB
|
||||
{
|
||||
VideoCommon::MaterialResource* material = nullptr;
|
||||
};
|
||||
|
||||
struct Projection
|
||||
{
|
||||
Common::Matrix44* matrix;
|
||||
|
||||
@@ -36,11 +36,17 @@ public:
|
||||
return;
|
||||
m_action_impl->OnDrawStarted(draw_started);
|
||||
}
|
||||
void OnEFB(GraphicsModActionData::EFB* efb) override
|
||||
void BeforeEFB(GraphicsModActionData::PreEFB* efb) override
|
||||
{
|
||||
if (!m_mod.m_enabled)
|
||||
return;
|
||||
m_action_impl->OnEFB(efb);
|
||||
m_action_impl->BeforeEFB(efb);
|
||||
}
|
||||
void AfterEFB(GraphicsModActionData::PostEFB* efb) override
|
||||
{
|
||||
if (!m_mod.m_enabled)
|
||||
return;
|
||||
m_action_impl->AfterEFB(efb);
|
||||
}
|
||||
void OnProjection(GraphicsModActionData::Projection* projection) override
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user