Files
t5de-renderer/CLAUDE.md
T
dhkatzandClaude Opus 5.5 9a7d7d2908 Add the renderer process
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]>
2026-10-28 05:17:03 -07:00

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), __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.