Minecraft PBR - Pack Bedrock RTX
Same PBR maps, Bedrock dialect — the RTX packer explained
- basecolor
- normal
- roughness
- metalness
- emission
- sss
- albedo
- normal
- mer
Bedrock Edition ray tracing speaks a different texture dialect than Java's shaders. Same four input maps, completely different packing: no smoothness conversion, no AO or height hidden in alpha, and a _mer texture Java players have never heard of. Minecraft PBR - Pack Bedrock RTX is the Bedrock side of this pack - the node you reach for when your target is Minecraft Bedrock with ray tracing (or Vibrant Visuals) instead of Iris/OptiFine.
What it does
Feed it basecolor, normal, roughness and metalness and you get three outputs: albedo, a DirectX normal (RGB only - Bedrock doesn't pack AO or height), and mer - R = metalness, G = emissive, B = roughness, all raw and linear. There's no labPBR encoding here; Bedrock stores the values directly. Wire the three into the pack's Save Bedrock RTX node and you get name.png, name_normal.png and name_mer.png ready for a resource pack.
The one twist: turn on compute_sss and the mer output gains an alpha channel, becoming _mers (A = SSS thickness). Here's the gotcha the tooltips are trying to warn you about - that SSS alpha is read only by Vibrant Visuals. Ray-traced RTX mode ignores it entirely and uses plain _mer. And either way it's never applied to metal pixels: metalness above 0.5 zeroes the SSS, because only non-metals scatter light.
Inputs that matter
- basecolor, normal, roughness, metalness - same as the labPBR packer.
roughnessandmetalnessaccept IMAGE or MASK. - flip_normal_y (default on) - Bedrock expects DirectX Y-down; flips an OpenGL Y-up normal. Disable only if your input is already DirectX.
- compute_emission (default off) - luminance-thresholds the basecolor (Rec. 709 luma) into the emissive channel, using emission_threshold (0.85) and emission_knee (0.1) for a soft cutoff.
- compute_sss (default off) - derive SSS into the MERS alpha, as above. Or skip both flags and wire your own emission / sss maps into the optional inputs.
Install
ComfyUI Manager → Install Custom Nodes → search "comfy-ui-minecraft-pbr", install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/jasonjgardner/comfy-ui-minecraft-pbr
# then restart ComfyUI
No models, no extra dependencies - it's all torch math, and torch ships with ComfyUI.
Gotchas
Decide your target before you toggle SSS. Building for RTX ray tracing? Leave compute_sss off - the alpha is dead weight that Bedrock ignores. Building for Vibrant Visuals? You want _mers, so turn it on. The threshold-based emission is a rough proxy, too: it flags any bright pixel, including baked specular highlights. If a "glowing" result looks wrong, feed the Extract Emission node's output into the optional emission input instead of trusting the auto flag. And remember the same alpha rule as its sibling: save with Save Bedrock RTX, not stock SaveImage.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| basecolor | IMAGE | — | |
| normal | IMAGE | Tangent-space normal (OpenGL Y-up). | |
| roughness | IMAGE,MASK | — | |
| metalness | IMAGE,MASK | — | |
| flip_normal_y | BOOLEAN | true | Bedrock expects DirectX Y-down; flip an OpenGL normal. |
| swap_normal_xy | BOOLEAN | false | — |
| compute_sss | BOOLEAN | false | Derive SSS -> MERS (RGBA). Read only by Vibrant Visuals; ignored by ray-traced (RTX) mode, and never applied to metal pixels. |
| compute_emission | BOOLEAN | false | — |
| emission_threshold | FLOAT | 0.850–1 | — |
| emission_knee | FLOAT | 0.100–1 | — |
| emissionopt | IMAGE,MASK | — | |
| sssopt | IMAGE,MASK | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| albedo | IMAGE | — |
| normal | IMAGE | — |
| mer | IMAGE | — |