A lot of things can happen when trying to transfer 3D scenes between render engines and 2D/3D authoring software.
To achieve a consistent & synchronized look, we built the same scene/setup in 5 different engines:
Unity, Godot, Babylon.js, Three.js and 3ds Max.
We wanted to compare the visual difference when all parameters are properly set - same scene, light, material & shader settings...
Spoiler! The rendered scenes 👇 look almost identical.
Use this website as a quick reference to fix:
- linear/gamma 2.2 sRGB color space issues
- textures that look washed out or too bright
- very dark colors or wrong contrast
- flipped textures or normal bump map channels
- wrong reflections (environment orientation)
- multi-channel map texture issues (01)
- PBR metal workflow issues (roughness/glossiness)
- visual differences when exporting from Blender/3ds Max to Babylon.js or Three.js (WebGL)
Sphere Radius 1.0
FOV 45°
Cam Pos [0,0,5]
Light Directional
Sphere Diameter 2 ⚠️
FOV 0.785 ⚠️
Cam Pos [0,0,-5] ⚠️
Light Directional
Sphere Radius 1
FOV 45️
Cam Pos [0,0,5]
Light Directional
Sphere Radius 1.0
FOV 72.735° ⚠️
Cam Pos [0,-5,0] ⚠️
Light Distant ⚠️
Sphere Radius 1.0
FOV 45°
Cam Pos [0,-5,0]
To give you an idea: Compared to Babylon.js, the Godot default sphere is twice as big!
There are different coordinate systems, wordings, gamma values, orientations and default settings we have to deal with.
In order to guarantee consistent results when comparing across all engines we need to carefully setup the same test scene.
⚠️ If you want to avoid potential traps, pay attention to the warning sign in the box (bottom left).
Let's start with a white sphere, a neutral background and always identical viewport size.
Shader Standard
Smoothness 0.75 ⚠️
Light Rotation [145,-45,0]
Light Intensity 1.0
Shader SpatialMaterial
Roughness 0.25
Light Rotation [-35,45,0]
Light Energy 1.0
Light Specular 1.0 ⚠️
Shader PBRMaterial
Roughness 0.25
Light Vector [-5,-5,5]
Light Intensity 3.1415 ⚠️
Shader MeshPhysicalMat
Roughness 0.25
Light Energy 1.0
Shader Physical Material
Roughness 0.25
Light Targeted [0,0,0]
Clear Color (55,55,55) ⚠️
Shader pbr
Roughness 0.25
Light Matrix [0,0,0]
Light Energy 1.0
Albedo leather_albedo.png
Metallic leather_metallicsmooth.png ⚠️
Normal leather_normal.png
Albedo leather_albedo.png
Roughness leather_roughness.png
Normal Map leather_normal.png
Flip UVs (uscale/vscale) ⚠️
Albedo leather_albedo.png
Metallic leather_metallicrough.png ⚠️
Bump leather_normal.png (Invert X/Y)⚠️
Map leather_albedo.png
Rough. Map leather_roughness.png
Normal Map leather_normal.png
Sphere UV Phi Length 180⚠️
Albedo leather_albedo.png
Roughness leather_roughness.png - Gamma 1.0⚠️
Normal Bump leather_normal.png - Gamma 1.0⚠️
Normal Map leather_normal.png - Flip Green (Y)⚠️
Scene rotation [0,90,0]⚠️
Albedo RGB(255,195,86)
Smoothness 0.85⚠️
Color RGB(255,195,86)
Roughness 0.15
Color (1, 0.55, 0.09)⚠️
Roughness 0.15
Scene rotation [0,90,0]
Color RGB(255,140,23)⚠️
Roughness 0.15
Scene rotation [0,90,0]
Base Color (1, 0.55, 0.09)⚠️
Roughness 0.15