Best Practices for High-Quality Architectural Rendering in Godot?

Hello everyone,

I’m working on architectural visualization projects at MR Rendering, where we mainly use offline renderers. Recently, I’ve been exploring Godot for creating real-time architectural walkthroughs and interactive presentations.

I’d like to ask:

  • What are the best practices for achieving high-quality, realistic rendering in Godot for architectural projects?
  • How should we optimize large 3D models (like detailed buildings and interiors) for smooth performance?
  • Are there recommended workflows or plugins for PBR materials, lighting setups, and real-time GI that balance realism with performance?

Any advice, tutorials, or case studies would be greatly appreciated.

Thanks in advance!
— MR Rendering Team

See more: https://mrrendering.com/

the best option (for non changing geometry) is LightmapGI, it bakes fast, creates small images, and has good results.
but the more complex the geometry, the bigger the file will be, and this is also affected by the size of the map.


(if there is a terrain, it is best to set its lighting from baked or dynamic to disabled, as this will reduce the size of the shadow-map. GI is used mostly for interiors and vertical geometry where the light could bounce)

the next option in VoxelGI. VoxelGI is the best looking option, but looses quality with size. the larger the map, the lower the quality. it is also limited to a square area, so if the building is on a square, it will work fine, but if there’s terrain further away, the illumination will cutout outside the VoxelGI.
but VoxelGI is not limited by quality and can be made realtime. baking time is also much faster.

then there is reflection probes, you need one per room, they work best if all rooms are square, and there’s some cutout visual artifacts between rooms. they can be used on their own or combined with LightmapGI.
there might be a limit, but would be somewhat high. 10-20 would work fine, I haven’t tested with more but there should not be a problem.

then there’s the shaders (SSAO, SSR, SSIL), these can be used in combination with the other methods or on their own. they are lightweight and fully real-time.

there’s one more option which is to bake the lighting into a single mega-texture used by the whole map. you would do this in a 3D software like blender. this is similar to what is done with photogrammetry. it would be fully static but good looking enough.

there is no limit to the number of polys a model can have, it is best if there’s a single mesh than a hundred separate ones.
but for interior objects you can keep them separate and use occlusion culling (check the docs).

I don’t think a building could have too many polygons, it is important that these should not be smaller than a pixel. a general rule is to make sure they have a similar size, instead of having giant tris alongside very tiny ones. Texel size is also important.
Godot’s LightmapGI also works best if it does the UV wrapping of the UV2 itself instead of using one provided by the 3D model.

If your material has a roughness map and metallic, it is best to use a ORM material. and also if you are going to use a AO map.
you would use a ORM texture instead of 3 separate textures.
StandardMaterial if you only have a roughness map.

I would avoid SDFGI as it gives bad results and is slow, and its main advantage is realtime GI on large open worlds, which most games don’t need.

you can check out my tutorial on lighting in godot, where I explain how to setup scenes in different times of day and weather:

3 Likes