Model preview: AVA2 render-target window on a Vulkan colour target

Port of AVA2's CRenderTarget / GrpRenderTargetTexture / renderTarget module.
The host gains an RGBA8 offscreen colour pass for D3D colour render targets;
mt_preview shows wearable items on every allowed race and monsters with
motions, reached by X+click in the inventory and shop and from the wiki.
Player races are created as TYPE_PC so their parts exist.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
shenlei
2026-10-16 04:48:07 +09:00
co-authored by Claude Opus 5.5
parent 32372c2a73
commit 84404cf1f1
25 changed files with 1602 additions and 34 deletions
+5
View File
@@ -44,6 +44,7 @@
#include "UserInterface/PythonSystem.h"
#include "UserInterface/AbstractApplication.h"
#include "UserInterface/PythonApplication.h"
#include "UserInterface/CRenderTargetManager.h"
#include "EterBase/Timer.h"
#include "PythonBoot.h"
#include "../UserInterface/UserInterface.h"
@@ -157,6 +158,7 @@ struct GameSingletons
CGuildMarkDownloader kGuildMarkDownloader;
CGuildMarkUploader kGuildMarkUploader;
CPythonSystem pySystem; // last CPythonApplication member (m_pySystem)
CRenderTargetManager renderTargets; // PORT: AVA2 model preview; destroyed first, its models use the rest
};
std::unique_ptr<GameSingletons> g_game_singletons;
bool g_host_hardware_cursor_enabled = false;
@@ -911,6 +913,7 @@ bool run_main_script_body(const char* lpCmdLine, std::string* error)
initsafebox();
initguild();
initServerStateChecker();
initRenderTarget(); // PORT: AVA2 model preview
init_2v0_gameplay_stubs();
ClearLogBoxMessage();
@@ -1006,6 +1009,7 @@ namespace PythonBoot
#include "ChannelScript.inc"
#include "BossScript.inc"
#include "VipScript.inc"
#include "ModelPreviewScript.inc"
static void install_script_module(const char* c_szModule, const char* c_szScript)
{
@@ -1086,6 +1090,7 @@ bool RunMainScript(const char* lpCmdLine, std::string* error)
install_script_module("mt_channel", c_szChannelScript);
install_script_module("mt_boss", c_szBossScript);
install_script_module("mt_vip", c_szVipScript);
install_script_module("mt_preview", c_szModelPreviewScript);
if (g_touch_input)
install_script_module("mt_mobile_hud", c_szMobileHUDScript);
}