The renderer becomes two programs: the adapter (t5deRenderEngine.dll, 32-bit, in IMVU's process) and a 64-bit renderer process (t5de-renderer.exe) drawing with Diligent Engine, fetched with FetchContent and pinned. For now a spike: the adapter starts the renderer process for each engine and signals each frame through a shared memory channel, and the renderer process draws a box into a child window in the client's 3D view. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1.8 KiB
1.8 KiB
t5de-renderer
A new renderer for IMVU Classic: a 32-bit adapter DLL the client loads as a renderer plugin, and a 64-bit renderer
process drawing with Diligent Engine (see README.md, docs/architecture.md, docs/interface.md). Part of T5DE; the
patches and the patcher are in the t5de repository (git.t5de.dev/t5de/t5de, usually checked out beside this one).
The user chose this architecture for ray tracing, mesh shaders and a possible browser client later.
Rules
- Never commit IMVU's code: no decompiled or disassembled code, no client binaries, no Ghidra projects. Our own declarations of IMVU's interfaces (names, signatures, layouts we worked out) and notes in our own words are fine.
- Test with a throwaway IMVU account, never a real one.
- Commits: author "dhkatz [email protected]"; never the user's real name or email.
- The user wants native code readable and auditable, built with modern CMake (targets, presets).
Notes
- The adapter must match IMVU's ABI: 32-bit, MSVC (cl or clang-cl; MinGW's C++ ABI differs),
__thiscallvirtual methods in IMVU's vtable order (never overloaded: MSVC orders overloads unlike their declaration), Boost 1.61'sshared_ptrlayout. Exceptions must not cross into IMVU's code (a different C runtime); the CRT is linked statically. Code shared with the 64-bit renderer process (include/t5de/protocol/) uses fixed-size fields only. - The development VM has no graphics driver (Microsoft Basic Render Driver): Direct3D 11 works in software, IMVU's OpenGL renderer doesn't, and performance there means nothing.
- Ghidra 12.2 (Java 25) is at
%LOCALAPPDATA%\Programs\ghidra_12.2_PUBLIC; projects in%LOCALAPPDATA%\t5de-dev\ghidra, analysed headless (support\analyzeHeadless.bat). The client to analyse is thet5decheckout's.cache/<version>/install.