Visual slot reserved
The future image should compare believable material families under neutral lighting: stone, metal, painted plastic, wood, and rough/clean variants.
UE5 / Recipe / Realistic Surface
A baseline realistic material recipe for albedo, roughness, normal, metalness, packed masks, scale reference, and production-safe material instances.
The future image should compare believable material families under neutral lighting: stone, metal, painted plastic, wood, and rough/clean variants.
01
Realistic material work starts with boring discipline: correct values, correct scale, and predictable instances.
02
03
The material should respond predictably when the lighting changes. Baked shadows, fake highlights, or over-painted contrast inside albedo break that contract.
A realistic master should not rescue broken scans or hand-painted maps. It should expose small, safe corrections that help assets fit the level.
Realism is not raw data dumped into a shader. Scale, value range, roughness response, and detail intensity still need taste and review.
04
Check texel density, UV scale, and real-world material size. A good scan at the wrong scale will look fake no matter how clean the shader is.
Beginner check: compare the material next to a known prop size, door, wall tile, or character height.
Keep base color free of baked shadows, direct highlights, and extreme values unless the material is intentionally stylized. The lighting should come from the scene.
Senior note: albedo mistakes often hide until the asset moves from neutral preview lighting into a real level.
Follow project convention for ORM or packed utility masks. Document whether red is AO, green is roughness, blue is metalness, or if the project uses a different order.
Roughness is not just a contrast map. It controls reflection spread and material identity. Review roughness under moving camera and different light sizes.
Expose normal intensity, detail normal amount, and macro variation separately. Do not let detail normals overpower the sculpt or create noisy silhouettes.
Check indoor, outdoor, warm, cool, bright, and low-light setups. A robust PBR material should not collapse when the lighting changes.
05
06
float3 albedo = Texture2DSample(albedoTex, albedoSampler, uv).rgb;
float3 orm = Texture2DSample(ormTex, ormSampler, uv).rgb;
float3 normalTS = UnpackNormal(Texture2DSample(normalTex, normalSampler, uv));
float occlusion = orm.r;
float roughness = saturate(orm.g + roughnessBias);
float metalness = saturate(orm.b);
albedo = lerp(albedo, albedo * tintColor, tintStrength);
normalTS = normalize(lerp(float3(0, 0, 1), normalTS, normalIntensity));
return float4(albedo * occlusion, 1.0);07
A realistic master still needs art direction controls. The difference is that controls should preserve plausible ranges instead of hiding broken source maps.
A good PBR master needs to handle rough wood, painted metal, stone, plastic, and clean/dirty variants without becoming a parameter graveyard.
Texture resolution, packed masks, streaming behavior, and duplicate material instances can cost more than a few scalar operations. Audit texture use as part of material review.
08