Wiki 9Minecraft Wiki 9Minecraft

Glowing Entity Textures and Emissive Materials

How to make parts of an entity texture glow in the dark using custom materials and the alpha channel.

5Sections
3Code examples
4Known errors

Glowing entity textures allow specific pixels on a mob or custom entity to ignore world lighting and render at full brightness in the dark. You reach for this technique when creating eyes that shine in caves, bioluminescent creatures, or magical runes etched into an entity's body. Note that emissive materials in Bedrock only make the texture itself appear unlit; they do not cast dynamic light onto surrounding blocks.

How Emissive Rendering Works in Bedrock

In Minecraft Bedrock, standard entity rendering applies ambient and block lighting to every pixel of your texture based on where the entity is standing. To make sections of a texture glow, you do not use a separate second texture map like you might for blocks or in other engines. Instead, the default emissive entity shaders read the alpha channel (opacity) of your single PNG texture to decide which pixels receive world lighting and which pixels bypass it.

Because the alpha channel is repurposed to control emissiveness, there is a strict trade-off you must plan for when painting your texture: an emissive material usually cannot have smooth partial transparency (like stained glass) and glowing pixels on the same geometry part using a single material. Depending on the base material you inherit from, completely transparent pixels (alpha 0) can still be culled so you can have cutouts like ragged wings, while partially transparent pixels (alpha 1 to 254) are rendered as opaque and glowing.

Selecting a Material in entity.material

To enable emissive rendering, your resource pack needs a custom material defined in `RP/materials/entity.material` that inherits from one of the built-in emissive states, or your client entity file must directly reference an existing vanilla emissive material such as `spider` or `enderman`. Defining your own material inheritance is safer because it isolates your entity from future changes to vanilla mobs.

There are two main base materials to inherit from: `entity_emissive` and `entity_emissive_alpha`. Both read the texture's alpha channel to control brightness, but they treat completely transparent pixels differently. If your model is a solid box where every pixel of the UV map is visible, use `entity_emissive`. If your model has flat planes that rely on transparent pixels to cut out shapes—such as hair fringes, horns, or tattered cloth—use `entity_emissive_alpha`.

Base MaterialAlpha = 255 (100%)Alpha = 1 to 254Alpha = 0 (0%)
entity_emissiveNormal world lightingGlows in the dark (opaque)Glows at maximum brightness (opaque)
entity_emissive_alphaNormal world lightingGlows in the dark (opaque)Completely invisible (cutout)
RP/materials/entity.material
{
  "materials": {
    "version": "1.0.0",
    "custom_glowing_solid:entity_emissive": {},
    "custom_glowing_cutout:entity_emissive_alpha": {}
  }
}

Preparing the Texture Alpha Channel

Most standard image editors combine the Red, Green, Blue, and Alpha channels so that lowering the alpha value makes the pixels look faint on your canvas. When painting for `entity_emissive_alpha`, you want the colour channels to remain at full vibrancy while the alpha value is slightly reduced.

For pixels that should respond normally to daylight and cave darkness, keep their alpha at 255 (100% opacity). For pixels that should glow, set their alpha anywhere between 1 and 254. The lower the alpha value is (closer to 1), the stronger the unlit emissive effect becomes. If you are using `entity_emissive_alpha`, make sure you do not drop the alpha of glowing pixels all the way to 0, or the game will discard those pixels completely and leave a hole in your mob.

A common pitfall with image editors like Paint.NET, Photoshop, or Aseprite is that saving a PNG with an alpha of 0 will sometimes overwrite the RGB colour data with black or white. Always keep your glowing regions at an opacity around 10% to 90% (alpha 25 to 230) so the colour data is preserved and the pixel stays visible.

Wiring the Material in the Client Entity

Once your texture is saved in `RP/textures/entity/` and your material is defined, you must link them together inside the entity's client definition file (`RP/entity/`). You map a short name to your custom material in the `materials` object, and do the same for your texture and geometry.

In the example below, the material short name `default` is assigned to our `custom_glowing_cutout` material. The standard `controller.render.default` render controller automatically looks for a material named `default` and a texture named `default`, meaning you do not need to write a custom render controller just for basic glowing eyes.

RP/entity/glow_beetle.entity.json
{
  "format_version": "1.10.0",
  "minecraft:client_entity": {
    "description": {
      "identifier": "wiki:glow_beetle",
      "materials": {
        "default": "custom_glowing_cutout"
      },
      "textures": {
        "default": "textures/entity/glow_beetle"
      },
      "geometry": {
        "default": "geometry.glow_beetle"
      },
      "render_controllers": [
        "controller.render.default"
      ],
      "spawn_egg": {
        "base_color": "#1a1a2e",
        "overlay_color": "#00ffcc"
      }
    }
  }
}

Applying Emissive Materials to Specific Bones

Sometimes you need an entity to have translucent parts (like ghost limbs using `entity_alphablend`) alongside glowing parts (like eyes using `entity_emissive_alpha`). Because a single material cannot do both at the same time, you can assign different materials to specific bones of your geometry inside a custom render controller.

In the `materials` array of a render controller, each object maps a bone name pattern to a material short name defined in the client entity file. The game evaluates this list from top to bottom, so you place the wildcard `"*"` first to set the base material for the whole body, and then override specific bones like `"head"` or `"eyes"` below it.

RP/render_controllers/glow_beetle.render_controllers.json
{
  "format_version": "1.8.0",
  "render_controllers": {
    "controller.render.glow_beetle": {
      "geometry": "Geometry.default",
      "materials": [
        { "*": "Material.body_translucent" },
        { "eyes_bone": "Material.eyes_glowing" }
      ],
      "textures": [
        "Texture.default"
      ]
    }
  }
}

Which versions this applies to

Applies to all modern Bedrock versions (format_version 1.8.0 and 1.10.0 for client entities and render controllers). No experimental toggles are required. Note that RenderDragon handles the underlying shader logic automatically as long as you inherit from the vanilla `entity_emissive` or `entity_emissive_alpha` material definitions.

When it does not work

What you seeWhyThe fix
The empty space around the entity's horns, hair, or wings renders as solid glowing white or black boxes.You inherited from `entity_emissive` instead of `entity_emissive_alpha`. Under `entity_emissive`, an alpha value of 0 is treated as 100% emissive brightness rather than invisible.Change your material inheritance in `RP/materials/entity.material` to `:entity_emissive_alpha` so that 0-alpha pixels are discarded.
The pixels that are supposed to glow are completely invisible, leaving holes in the entity's model.You are using `entity_emissive_alpha` and erased the glowing pixels all the way to 0% opacity in your image editor.Re-open your texture in an image editor and set the opacity of the glowing pixels to a value between 1% and 99% (alpha 1 to 254). Only truly invisible cutout areas should have 0 alpha.
The entire entity glows in the dark instead of just the eyes or runes.The entire texture PNG was exported with an opacity slightly below 255 (for example, 99% layer opacity in your painting program), causing the shader to treat every pixel on the model as emissive.Select all non-glowing regions of your texture and ensure their alpha channel is locked at a solid 255 (100% opaque).
Content Log shows: [Materials][error] Undefined material name 'custom_glowing_cutout' and the entity renders invisible or bright pink.The file `RP/materials/entity.material` is either in the wrong folder, has a syntax error, or lacks the outer `"materials"` wrapper and `"version": "1.0.0"` header.Verify that the file is named `entity.material` inside the `RP/materials/` folder and matches the exact JSON structure required by the material definitions.

Reference, straight from the game files

Read out of the game itself, so the ids match the version you are building for.