Wiki 9Minecraft Wiki 9Minecraft

Deferred Technical Preview Q&A (February 2024)

Developer notes on the February 2024 Deferred Technical Preview Q&A and PBR pack setup.

6Sections
3Code examples
3Known errors

The February 23, 2024 developer Q&A addressed the roadmap, hardware constraints, and pack architecture for the Deferred Technical Preview in Minecraft Bedrock Edition. This reference summarizes the engineering answers from that session and documents the exact resource pack files required to build physically based rendering (PBR) textures and lighting configurations for the preview pipeline. Reach for this guide when preparing a PBR resource pack or troubleshooting visual artifacts under the RenderDragon deferred renderer.

Context of the February 2024 Q&A

During the February 2024 community session, the graphics engineering team clarified the goals of the Deferred Technical Preview. Unlike the earlier ray tracing implementation—which required dedicated hardware acceleration—the deferred rendering pipeline is designed to scale across a much broader range of devices, including mid-tier mobile chipsets, consoles, and standard desktop GPUs. The architecture separates geometry rendering from lighting calculations: the engine first writes surface attributes (albedo, normals, metallic, emissive, roughness) into a series of screen-space buffers known as the G-Buffer, and then computes lighting in subsequent passes.

For add-on and resource pack creators, this architectural shift means that custom shaders written against legacy RenderDragon or older forward-rendering hooks remain unsupported. Instead, creators control the look of worlds through data-driven JSON configurations and physically based texture sets. The Q&A emphasized that the preview is an iterative testbed; file schemas for lighting, atmosphere, and color grading are actively refined across preview builds, while the core texture_set specification remains the stable foundation for surface materials.

A key takeaway from the session was the distinction between artistic intent and physical accuracy. Because the deferred pipeline evaluates direct sun lighting, sky lighting, and local point lights dynamically across all biomes and times of day, baking shadows or strong specular highlights directly into base color textures causes surfaces to look unnatural. Creators moving packs into the Deferred Technical Preview must strip baked lighting from their base textures and move surface detail into normal and MERS maps.

Enabling the Deferred Pipeline in a Pack

A resource pack will not unlock the Deferred Technical Preview video setting on its own unless its manifest explicitly declares the pbr capability. During the Q&A, the team noted that this capability flag acts as a contract between the pack and the engine: it signals that the pack contains valid physically based surface definitions or lighting configurations that the deferred renderer can consume.

To register this capability, add the capabilities array to the root of your resource pack manifest. Without this block, the RenderDragon engine treats the pack as a standard vanilla resource pack, and the Deferred Technical Preview option in the video settings menu remains grayed out even when the world has the experimental toggle enabled.

RP/manifest.json
{
  "format_version": 2,
  "header": {
    "name": "Deferred PBR Test Pack",
    "description": "Resource pack configured for the Deferred Technical Preview",
    "uuid": "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d",
    "version": [1, 0, 0],
    "min_engine_version": [1, 20, 60]
  },
  "modules": [
    {
      "type": "resources",
      "uuid": "b2c3d4e5-f6a7-4b5c-9d0e-1f2a3b4c5d6e",
      "version": [1, 0, 0]
    }
  ],
  "capabilities": [
    "pbr"
  ]
}

PBR Materials and Texture Sets

Surface properties in the Deferred Technical Preview are driven by texture set JSON files located alongside your block, item, or entity textures. The Q&A confirmed that the deferred pipeline shares the minecraft:texture_set schema originally introduced for ray tracing, ensuring that existing PBR assets do not need to be rebuilt from scratch. However, how the deferred shading pass interprets extreme roughness and emissive values can differ slightly from path-traced rendering, so creators should audit their materials in both daytime and nighttime scenes.

A complete material definition links a base color texture to a MERS map (or a legacy MER map) and either a normal map or a heightmap. The MERS channels correspond to Metalness (Red), Emissive (Green), Roughness (Blue), and Subsurface Scattering (Alpha). When using the newer subsurface scattering channel, format version 1.21.30 or higher is required in the texture set file; for early 2024 builds matching the February Q&A timeframe, format version 1.16.100 with a three-channel MER map is the standard baseline.

Channel / PropertyWhat it doesNotes
colorDefines the base albedo (diffuse) surface color without baked shadows.Supports RGB texture names or a 4-element RGBA array for uniform colors.
metalness_emissive_roughnessPacks Metalness (R), Emissive (G), and Roughness (B) into one image.Can be a texture path or a 3-element array [M, E, R] using 0-255 or 0.0-1.0 values.
metalness_emissive_roughness_subsurfaceAdds Subsurface Scattering in the Alpha channel for wax, leaves, and skin.Requires a newer format_version (such as 1.21.30) and a 32-bit RGBA PNG.
normalProvides tangent-space surface normals (OpenGL convention, +Y up) for fine relief.Mutually exclusive with heightmap in a single texture_set file.
heightmapGrayscale displacement map where white is high and black is low.Converted to normals internally by the engine; produces a crisp, pixelated bevel.
RP/textures/blocks/copper_bulb.texture_set.json
{
  "format_version": "1.16.100",
  "minecraft:texture_set": {
    "color": "copper_bulb",
    "metalness_emissive_roughness": "copper_bulb_mer",
    "normal": "copper_bulb_normal"
  }
}

Lighting, Shadows, and Point Light Constraints

A major topic in the February 2024 Q&A was how the deferred renderer handles dynamic lights, shadows, and emissive blocks. In the deferred pipeline, the sun and moon cast directional cascaded shadow maps across the terrain, while blocks such as torches, lanterns, and glowstone can act as local point light sources. Because evaluating shadow maps for dozens of local point lights every frame would overwhelm mobile GPUs, the engine enforces strict budgets on how many point lights can be active and how many can cast shadows.

Creators configure static block lighting in the resource pack under the lighting directory, while global directional light, ambient light, and sky reflections are configured through lighting and atmospheric JSON files. The Q&A highlighted a common misconception: setting the Green (emissive) channel of a MERS texture to 255 makes the block's surface pixels glow brightly on screen (and trigger bloom), but it does not automatically turn that block into an analytical point light that illuminates neighboring geometry in the world. Analytical point lights are assigned by block identifier in the pack's point light configuration.

When balancing emissive textures against point lights, creators should use the emissive texture channel for small glowing details (such as the runes on an enchanting table or the veins on sculk) and reserve point light entries for blocks that genuinely emit world-space light.

Atmospherics, Fog, and Color Grading

Beyond surface materials, the Q&A covered how the Deferred Technical Preview upgrades volumetric fog, sky shading, and post-processing. While standard Bedrock uses simple distance fog planes, the deferred pipeline uses the media and scattering parameters inside fog JSON files to calculate volumetric light shafts (god rays) as sunlight passes through trees and clouds.

To make a custom fog definition react properly to the deferred sun and atmosphere, creators combine the standard distance fog object with volumetric density and scattering coefficients. Below is a valid fog definition that configures both standard distance falloff and volumetric air density.

RP/fogs/default_fog_setting.json
{
  "format_version": "1.16.100",
  "minecraft:fog_settings": {
    "description": {
      "identifier": "custom:deferred_forest_fog"
    },
    "distance": {
      "air": {
        "fog_start": 0.0,
        "fog_end": 180.0,
        "fog_color": "#C4D8E2",
        "render_distance_type": "fixed"
      }
    },
    "volumetric": {
      "density": {
        "air": {
          "max_density": 0.02,
          "zero_density_height": 140.0,
          "max_density_height": 50.0
        }
      },
      "media_coefficients": {
        "air": {
          "scattering": [0.02, 0.03, 0.05],
          "absorption": [0.01, 0.01, 0.01]
        }
      }
    }
  }
}

Performance and Cross-Platform Considerations

Throughout the February 23 Q&A, the developers emphasized memory bandwidth and fill-rate limits on mobile and console hardware. Every texture added to a texture_set triples the texture memory footprint for that block or entity if saved at full resolution. A 512x512 base texture paired with a 512x512 normal map and a 512x512 MERS map consumes significant VRAM, which can quickly cause out-of-memory crashes or black textures on devices with 4 GB or 6 GB of shared system memory.

The recommended practice from the engineering team is to keep MERS and normal maps at the lowest resolution needed to convey the material, or to use uniform numeric arrays inside the texture_set.json file whenever a block has constant roughness and metalness across its entire face. For example, a smooth plastic or concrete block with no variation does not need a PNG file for its MERS data; passing a three-element array directly in JSON eliminates an entire texture fetch and saves memory.

Finally, creators should test their packs across multiple shadow and point-light quality tiers in the video settings menu. Because lower-end devices automatically reduce cascade resolution and disable expensive volumetric passes, a pack that relies exclusively on heavy volumetric fog or ultra-sharp shadow cascades for its visual identity may look flat on mobile hardware unless the base albedo and roughness values are balanced first.

Which versions this applies to

Applies to Minecraft Bedrock Edition 1.20.60 and later Preview/Beta builds (evolving into 1.21.x). Requires both the 'Render Dragon Features for Creators' experimental toggle in world settings and a resource pack declaring the 'pbr' capability activated before entering the world.

When it does not work

What you seeWhyThe fix
The 'Deferred Technical Preview' option in Settings > Video > Graphics Mode is grayed out and cannot be selected.Either the world does not have the 'Render Dragon Features for Creators' experimental toggle turned on, no active resource pack declares "pbr" in its manifest capabilities array, or the device GPU does not meet the minimum hardware requirements for the preview pipeline.Enable 'Render Dragon Features for Creators' in the world's Experiments menu, verify that your active resource pack's RP/manifest.json contains "capabilities": ["pbr"], and activate the pack in the world settings or global resources before loading the world.
Content Log shows an error that both 'normal' and 'heightmap' are defined in a texture_set.json file, and the block renders flat.The minecraft:texture_set specification only allows one surface relief input per material. Specifying both keys in the same JSON object causes the parser to reject the relief definition.Open the offending .texture_set.json file and remove either the "normal" property or the "heightmap" property so only one remains.
Custom blocks appear pitch black, mirror-like, or glow blindingly bright as soon as Deferred Technical Preview is switched on.The MERS texture was exported with the wrong color channels, or sRGB color-space conversion / alpha premultiplication corrupted the Red (Metalness), Green (Emissive), and Blue (Roughness) data values.Ensure the MERS PNG is exported as a clean 8-bit per channel image where Red = Metalness (0 for dielectrics, 255 for pure metals), Green = Emissive (0 for non-glowing surfaces), and Blue = Roughness (higher values for matte surfaces, lower for glossy).

Reference, straight from the game files

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