Publish source: Unlicense, public README, repo hygiene
The remote was previously a distribution-only point for pre-built DLLs. This opens the source. - LICENSE: Unlicense, with a GPL-3.0 carve-out for src/dpslog/WeirdDPSMate (a DPSMate fork that keeps its own license) - README.md replaces the stale internal one with the user-facing docs from DLL_README.md, swapping the 'Why No Source Code?' section for build and layout notes. DLL_README.md is dropped; one README now serves both. - RELEASING.md: drop the trim-the-README-per-release dance and the remote/WeirdUtils/ distribution clone, both obsolete now - gitignore agent/editor scratch, build caches, the vendored WSBT addon, and the WeirdThreat/uwu-logs checkouts (separate upstream repos) - Commit outstanding module work: superweirdo, clickthrough portal visuals, transform44 decompiles, worldmarkers demo presets, tools/
This commit is contained in:
@@ -25,8 +25,31 @@ Goals:
|
||||
- Prevent clicking GOs in states 2 and 3 (clickthrough module, GO filter pass)
|
||||
- Render states 2/3 in greyscale or desaturated to visually distinguish from usable ones
|
||||
|
||||
Click blocking fits in clickthrough's existing cascade filter (checkObjTypeDetour).
|
||||
Greyscale rendering needs research into the client's GO model draw path -- may need
|
||||
to intercept material/texture setup or set a per-object color tint before the draw call.
|
||||
Click blocking: DONE (portal_filter.zig in clickthrough module).
|
||||
|
||||
Module: clickthrough (own file, e.g. portal_filter.zig)
|
||||
Greyscale rendering research:
|
||||
- `SetModelAlpha` (0x710da0): writes float to sceneObject+0x1C4 (__thiscall). Alpha only.
|
||||
- `SetAlphaValue` (0x76ac50): writes float to entity+0xBC, calls through vtable+0x8C.
|
||||
- `SetModelAlpha_2` (0x76d120): reads byte at entity+0xC8, propagates to entity+0x318.
|
||||
- Fade system (0x672ef0): writes alpha to entity[0x22] (entity+0x88) via SetMemoryPointer.
|
||||
- D3D9 render states: outline module (d3d9_hook.zig) has full pattern for per-object
|
||||
D3D state manipulation via stencil buffer.
|
||||
- Greyscale options:
|
||||
1. D3DRS_TEXTUREFACTOR + D3DTOP_MODULATE per draw call (set grey color before object draws)
|
||||
2. Pixel shader override (D3D9 SetPixelShader to a desaturation shader)
|
||||
3. Find an existing color tint field on the model instance (not found yet)
|
||||
- `adjustColorSaturation` (0x74d794): client has a desaturation function built in.
|
||||
Takes (outputRGBA*, inputRGBA*, saturationFactor). 0.0 = greyscale, 1.0 = full color.
|
||||
Uses standard luminance weights at 0x818878/187c/1880. No xrefs found (may be unused).
|
||||
- `GetModelDiffuseColor` / `SetModelDiffuseColor`: reads/writes sceneObject+0x184 (3 floats RGB).
|
||||
`GetModelAmbientColor` / `SetModelAmbientColor`: sceneObject+0x190 (3 floats RGB).
|
||||
`SetModelAlpha`: sceneObject+0x1C4 (1 float). These are data accessors, not code functions.
|
||||
- M2 model rendering does NOT go through simple GxDevice SetTexture wrappers -- uses a
|
||||
different submission path. Only RenderTextureQuads (UI) calls GxDevice::SetTexture.
|
||||
- Viable approaches:
|
||||
1. Write grey diffuse color (e.g. 0.3, 0.3, 0.3) to sceneObject+0x184 per frame
|
||||
for targeted GOs. Need to find the GO -> scene object pointer chain.
|
||||
2. Hook D3D9 DrawIndexedPrimitive (like outline module) and set D3DRS_TEXTUREFACTOR
|
||||
to grey for targeted objects. Requires identifying which DIP calls belong to which GO.
|
||||
3. Set alpha to 0.5 via sceneObject+0x1C4 for a simpler "faded" visual instead of greyscale.
|
||||
- Next: find the GO -> entity -> scene object pointer chain so we can access +0x184.
|
||||
|
||||
Reference in New Issue
Block a user