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]>
27 lines
1.8 KiB
Markdown
27 lines
1.8 KiB
Markdown
# 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 <dev@t5de.dev>"; 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/<version>/install`.
|