#1461: Media faces render fullbright with no material, on PBR and legacy objects #1475
No reviewers
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream!1475
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "TheSlowly/Slipstream:media-fullbright-pbr-1461"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #1461.
While a face shows live media, the face ingest gives it a fullbright, white-tinted row and a material holding only the media texture, ahead of any glTF or legacy material route. Every GPU path (G-buffer, forward blend, RT hits, GI, probes) already handles fullbright rows, so no shader changes and no per-frame cost. Media state is part of the face signature (parcel media keeps the face's texture id), and the scripted-colour fast path keeps the white tint.
Note: PBR media faces are opaque whatever the glTF alpha mode, per the ticket.
Tests:
media_fullbright_checks.cpp,media_fullbright_source_checks.pyin indra/newview/tests.The Vulkan face ingest only swapped the media texture into the base colour slot and kept everything else: a PBR face stayed on the glTF route, which classifyCleanFace never lets go fullbright, so the media was multiplied by the material's base colour and lit with its metallic/roughness, normal, emissive, shadows and probes (and legacy media faces kept their tint, normal/spec maps and lighting). Live media is now decided once per ingest, ahead of any material: llcleanmediaface.h gives the face a fullbright, white-tinted row and a material holding only the media texture, alpha from the face's own colour on legacy faces (opaque on PBR faces, whatever the glTF alpha mode). The GPU sees an ordinary fullbright row, so the G-buffer, forward blend, ray-traced hits and GI take their existing fullbright paths with no per-frame cost. The setTEColor tint fast path keeps the white media tint too. Whether media is live is mixed into the face's ingest signature, because parcel media plays under the face's own texture id. Test-Plan: g++ -std=c++17 -I.. indra/newview/tests/media_fullbright_checks.cpp && ./a.out (run in indra/newview/tests) python3 indra/newview/tests/media_fullbright_source_checks.py In world, RT off and on: a PBR object (dark tinted, metallic, normal-mapped, emissive material) with a MoAP face playing a page; the page shows at its own colour, unaffected by sun, shadow, local lights and probes, and looks the same in reflections and GI. Repeat on a legacy prim with a tint, normal/spec map and a 50% transparency face. Stop the media: the face returns to its material. Parcel media on a legacy face: fullbright while it plays, lit again when it stops. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Superseded by your fix on main (
c01b06f625), closing this one. The ticket's still in testing; I'll check your version in world.Pull request closed