Highlight Transparent not implemented on Vulkan #101

Closed
opened 2026-09-27 11:50:40 +00:00 by backspace119 · 1 comment
Owner

Highlight Transparent (Build → Options → Highlight Transparent, default shortcut Ctrl+Alt+T; flag LLPipeline::sShowDebugAlpha since GL-B8) has never been implemented on the Vulkan renderer. The flag toggles, but nothing in vkgfx/ or the VK frame setup reads it. Under GL it was drawn by the (now deleted) alpha draw pool.

Expected (LL behaviour): every face with alpha < 1 is drawn with a red overlay (alpha-blend, and alpha-mask faces that cut out), including fully transparent faces (alpha = 0) that normally aren't drawn at all. That last part is the main use case: builders finding invisible prims. The RLV restriction RlvActions::canHighlightTransparent() already gates the menu toggle.

Implementation sketch (VK):

  • Pass the flag to the renderer in the world frame (e.g. a bit in the frame params).
  • Cull: when set, don't drop fully transparent faces (instances with alpha 0 are currently rejected or never drawn).
  • An overlay pass over the alpha-blend, alpha-mask and invisible buckets, drawing a translucent red (LL uses about (1, 0, 0, 0.5)) with depth test on and depth write off. Or tint in the alpha FS and force invisible faces through the alpha path while highlighting.
  • Rigged alpha faces too (attachments with invisiprims are common).

Not a regression: confirmed the VK path never referenced the flag before GL removal.

**Highlight Transparent** (Build → Options → Highlight Transparent, default shortcut Ctrl+Alt+T; flag `LLPipeline::sShowDebugAlpha` since GL-B8) has never been implemented on the Vulkan renderer. The flag toggles, but nothing in `vkgfx/` or the VK frame setup reads it. Under GL it was drawn by the (now deleted) alpha draw pool. **Expected (LL behaviour):** every face with alpha < 1 is drawn with a red overlay (alpha-blend, and alpha-mask faces that cut out), **including fully transparent faces (alpha = 0) that normally aren't drawn at all**. That last part is the main use case: builders finding invisible prims. The RLV restriction `RlvActions::canHighlightTransparent()` already gates the menu toggle. **Implementation sketch (VK):** - Pass the flag to the renderer in the world frame (e.g. a bit in the frame params). - Cull: when set, don't drop fully transparent faces (instances with alpha 0 are currently rejected or never drawn). - An overlay pass over the alpha-blend, alpha-mask and invisible buckets, drawing a translucent red (LL uses about (1, 0, 0, 0.5)) with depth test on and depth write off. Or tint in the alpha FS and force invisible faces through the alpha path while highlighting. - Rigged alpha faces too (attachments with invisiprims are common). Not a regression: confirmed the VK path never referenced the flag before GL removal.
Author
Owner

Tested and shipped in v0.12.0-beta.3.

Tested and shipped in v0.12.0-beta.3.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
backspace119/Slipstream#101
No description provided.