While the renderer process runs, the adapter makes the client's render targets itself and the renderer process draws frames into them: texture targets are drawn with like any texture, and a pixmap target's frame is read back through the channel into its Pixmap (protocol version 4: BeginFrame names its target, CreateRenderTarget, Channel::readSize and the -read event). Frames into render targets are drawn even while the window is hidden. The client uses pixmap targets for snapshots (outfit pictures, photos), checked to look right. The render target interfaces are declared from IMVU's vtables. Co-Authored-By: Claude Opus 5.5 <[email protected]>
t5de-renderer
A new 3D renderer for the IMVU Classic client. Part of T5DE; unofficial, not affiliated with IMVU.
Two programs (docs/architecture.md): an adapter, t5deRenderEngine.dll, which IMVU Classic loads as a renderer
plugin, and a 64-bit renderer process, t5de-renderer.exe, which draws with
Diligent Engine. For now the client's own Direct3D renderer still
draws the scene, and the renderer process proves the setup by drawing a small box over it. docs/interface.md has
what we know of IMVU's renderer interface.
Building
Needs Visual Studio Build Tools 2026 (the C++ workload) and CMake 3.28 or newer. One preset per program:
cmake --workflow --preset adapter # build/windows-x86/adapter/Release/t5deRenderEngine.dll, and the tests
cmake --workflow --preset renderer # build/windows-x64/renderer/Release/t5de-renderer.exe
The renderer's first configure fetches Diligent Engine (pinned in renderer/CMakeLists.txt) and builds it, which
takes a while.
Trying it
Copy both programs into a T5DE client folder built with the t5de-renderer patch, which has the OpenGL setting load
the adapter in place of glRenderEngine.dll, then choose OpenGL in Settings > Advanced. The adapter's log is
%TEMP%\t5de-renderer.log.