# 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 "; 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), `__thiscall` virtual methods in IMVU's vtable order (never overloaded: MSVC orders overloads unlike their declaration), Boost 1.61's `shared_ptr` layout. 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 the `t5de` checkout's `.cache//install`.