Skip to content

outline glowing items, hide invisible mobs and flip the outline's vertical blur - #799

Merged
Purdze merged 3 commits into
masterfrom
outline-finish
Oct 27, 2026
Merged

Purdze merged 3 commits into
masterfrom
outline-finish

Conversation

@Purdze

@Purdze Purdze commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Refactor / code cleanup
  • Performance improvement
  • Chore / tooling
  • Documentation

Summary

finishes the glowing outline from #793.

glowing items:

  • dropped items with the glowing flag get an outline through an OUTLINE_CULL item pipeline; the colour rides in the item instance data and the entity outline fragment shader is reused
  • item entities keep their uuid, whose string is a non-player's scoreboard name, so a team colours the outline
  • the pickup animation stays unoutlined (ItemPickupParticle clears it)

invisibility:

  • whether an invisible mob shows follows Entity.isInvisibleTo: a spectator sees it, a teammate sees it when the team sees friendly invisibles (team options bit 2, now read from the team packet), anyone else doesn't
  • the body follows LivingEntityRenderer.getRenderType: skipped when the viewer can't see it, outline only if it glows, and 0x26 alpha through a new entityTranslucentCull pipeline when it can
  • layers follow their own rule: most hide (RenderLayer.coloredCutoutModelCopyLayerRender), sheep wool and the slime shell keep only their outline when glowing, eyes, the creeper swirl and armour always draw
  • the local player follows the same rules in third person

outline blur:

  • the vertical blur steps (0, -1): the reference's rows run bottom-up and ours top-down, and the blur's taps aren't symmetric, so the band sat under a pixel off

not here: no in-game script covers the team see-friendly-invisibles case (unit tests only).

Reference

ItemFeatureRenderer, SubmitNodeCollection.submitItem, RenderType.outline, RenderTypes, RenderPipelines, ItemPickupParticle, LivingEntityRenderer (submit, getRenderType), EntityRenderer, Entity.isInvisibleTo, PlayerTeam (packOptions, unpackOptions), the layers under renderer/entity/layers (RenderLayer, SheepWoolLayer, SlimeOuterLayer, VillagerProfessionLayer, HorseMarkingLayer, WolfCollarLayer, IronGolemCrackinessLayer, EyesLayer, EnergySwirlLayer) and post/entity_outline_box_blur.fsh in reference/26.3.

Testing

  • unit tests: body and layer routing, team see-friendly-invisibles, scoreboard names, the item instance layout
  • client tests, clippy with and without the harness feature, fmt
  • entities/glowing extended: a glowing dropped item is outlined, an invisible glowing pig and sheep show only outlines, an invisible plain pig shows nothing, and a spectator sees all three faded with the sheep's wool hidden
  • native full suite 39/39

@github-actions github-actions Bot added bug Something isn't working enhancement New feature or request labels Oct 26, 2026
@Purdze
Purdze merged commit d55e35e into master Oct 27, 2026
15 checks passed
@Purdze
Purdze deleted the outline-finish branch October 27, 2026 04:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant