Feature: text glow rendering and an "outline all text" option#190
Feature: text glow rendering and an "outline all text" option#190Shuro wants to merge 2 commits into
Conversation
74cac90 to
e8b324d
Compare
- Render the game-specified glow colour as a text outline in chat - Resolve game glow payloads via the dark-theme UIColor variant to match vanilla chat (the sheet columns are UI theme variants) - Scale game glow alpha by 0x66/0xFF so the composite opacity across the 8 outline stamps matches the vanilla glow (~85% peak) - Add an option to outline all text with a configurable colour - Default outline colour is black at 0x66 alpha for the same reason - Reset button for the outline colour, styled like the chat colours tab
e8b324d to
d4a5ceb
Compare
- Use a fixed outline stamp alpha instead of deriving it from the pushed color; the game renders edge colors fully opaque regardless of their alpha byte - Parse raw EdgeColor macros through ColorPayload (packed ints, gnum, stackcolor and small-int literals) instead of popping the glow stack on any raw payload - Push resolved zero values as real no-glow entries to keep the color stack balanced, matching the vanilla renderer - Guard UIColor sheet lookups: a color payload referencing a missing row previously threw and dropped the whole message - Return null from ColorPayload.From on truncated packed integers instead of throwing - Decode EdgeColor payloads in the SeString debugger
d4a5ceb to
3de81c3
Compare
|
Thanks for the hint in Discord regarding the broken alpha handling on raw values. Glow alpha no longer derived from the pushed color ( Raw Pushed colors are forced opaque ( Hardening ( Debugger ( Everything was validated side-by-side against the vanilla renderer by printing hand-crafted payloads (packed RGBA with and without alpha, |
What
UIGlowpayload (e.g. the red "Dalamud" in the welcome message, duty/collectable notices) now render with their outline in Chat 2, matching vanilla chat. Toggleable via a new Render glow option (on by default).How
The outline is drawn by stamping the text into the window draw list 8 times at ±1px offsets before the text itself is drawn (
ImGuiUtil.DrawTextGlow).Two details were needed to actually match vanilla rendering (verified by pixel-level comparison of vanilla vs Chat 2 screenshots):
UIColorvariant. TheUIColorsheet columns (Dark,Light,ClassicFF, …) are per-UI-theme variants of one colour. Using.Lightyields pastel light-theme colours (a red glow rendered as salmon-pink);.Darkmatches what vanilla chat displays, consistent with how foreground colours are already resolved.0x00000066for the same reason.Disclosure:
This was co-developed with AI assistance (Claude Code).
I've reviewed the code and tested it in game myself.
Screenshots