• 3D
  • Can anybody guide me or help me define a workflow for ArchViz?

Hi! after the unavoidable engines comparison (in my case Twinmotion vs Unreal vs Godot) I've also decided that Godot is a really tempting engine, Twinmotion is impressive but is a resource drainage and it doesn't have the basics for arch viz like collisions, or events system, Unreal is better but is still really heavy for arch viz workflow. Godot is almost perfect, it starts from almost zero, and the size of the project is highly manageable all the time. The render engine has all that an Arch viz model could need but it still doesn't have technical documents about how to make it work.

This is my first attempt to make an Arch Viz scene and so far it feels really nice, the import system is a little annoying but I think I can get used to it, the scene has a big low res GIprobe for the land and a smaller GIProbe for the house, the sky is an hdr with a direct Light as sun.

But I'm starting to have some troubles, when I insert the windows I have to use a lot of refraction/reflections for the glass and I've noticed a big slowdown on the FPS, I don't know if the refraction on the shader is totally solved but even without too much geometry the transparent objects needs a lot of calculation

Basically what I'm trying to do is to find a recommendation for this kind of scenes (in case is possible with Godot). The common aspects of arch viz is: - Lot of static meshes - Dynamic landscape is nice but is not fundamental - General static Light with some on/off isolated lights - High contrast between exteriors-interiors - Lot of reflections, most of them rough reflections. Reflection probes usually doesn't work well with this kind of jobs because some in general you want to see how an object interact with the space, would be better to have some kind of screen space blurry reflections ( the one in Godot is too sharp ) - Decals are very important, and decals with parallax displacement would be awesome

My first concern now is about transparent objects, is there some tip about how to use them without affecting FPS?

Thanks!

The only thing I can think of to maybe help with the refractive transparent objects is to try merging(or batching) them together, might help with draw calls, but I'm not really sure that that is the source of your problem. Might be worth a try if you are already testing things though.

I only have basic knowledge of this things so any idea is really useful, actually the house is a single mesh but all the frames are individual objects so I will merge all of them into one mesh for the windows. Thanks!

I've found that GI probes can cause performance issues in Godot for some scenes, especially those with lots of objects/nodes. Have you tried disabling the GI probe temporarily to see how much it is contributing to the FPS drop? I'm assuming, given you are doing ArchViz, that you will want the boost in visuals that a GI probe brings, but quickly testing with it disabled might help deduce if the GI probe is causing the performance loss.

Also, do you have a WorldEnvironment with post processing? Maybe a setting there is impacting performance. The only other thing I can think of that might be causing issues is if the two GI probes are overlapping, as they might be competing when it comes to applying lights (though this is speculation on my part).

The screenshots look nice though! I have not seen too many Godot ArchViz projects.


Edit: Also

Lot of reflections, most of them rough reflections. Reflection probes usually doesn't work well with this kind of jobs because some in general you want to see how an object interact with the space, would be better to have some kind of screen space blurry reflections ( the one in Godot is too sharp )

I think Godot 4.0 is getting support for rough reflections, if I recall correctly.

Decals are very important, and decals with parallax displacement would be awesome

Decal support is definitely coming in Godot 4.0! With a little shader magic, you can have something similar to decals in Godot 3.0. There are a few decal repositories/implementations in Godot if I recall correctly.

Thanks a lot for the answer, in the first and second screenshot there is only 1 node, all the house is one optimized model (quad / subdivision based modeling), only wood details, door and driveway are different nodes. I will try what you suggest about GI probes for "debugging" purposes. I also have some post process things on environment so I will do that also and.. I also have overlapping probes, in fact one is inside the other, I didn't found answers about how to use the engine for scenes like this so is great to know about overlapping limitations. The strange thing is that only when I turn on the glass the fps drops to 37 Is great to know about Godot 4 sounds amazing, in the first screenshot you will see that I've already used the decals system found on the repository but it has a little problem, when you reopen the project the decal shader is not updated and you have to manually change every parameter of every decal node to activate the "redraw event" of all decals. I still don't know how to code GDScript so I don't know how to fix it

Thanks for your opinion! I'm an architect, in fact I've already built that home and I'm looking for tools like this to show the designs, I want to push this tool to see what is capable of in this area

Hi, I followed all the suggestions: The glass material has no roughness to avoid additional passes -Putting all the glass objects together didn't worked, I also disabled windows from light baking but without any luck. -I hided both GIProbes and the scene was extremely fast with the glass included, so apparently is about refractions with GIProbes enabled. So I have two GIProbes, one for all the terrain with 256 subdivs and other for the house with 512 subdivs. When I turn on the low-res GIProbe the frames remain in 58-60 FPS but turning on only the hi-res GIProbe the frames drops to 34 when I stand in front of a glass I've deactivated the WorldEnvironment but the result is not significant Iv'e noticed that using low res GIProbes the contact between walls and floors is poor ( too biased shadows and reflections and AO didn't helped too much ) so how could I increase the quality of the "contacts" without increasing GIProbes subdivs? (trying to avoid Reflection probes, in archviz we need those reflections)

Have you tried SSAO? You can set that up in the environment resource. Reflection Probes are usually what you use for reflecting light. Are you sure that you're using them right?

Actually I'm not sure enough, I mean I'm familiarized with the concepts but I don't know if I'm using them as I should

Imagine that the cube is furniture, the reflections and color bleeding are great for what I need, is great to see the interaction with other materials but the contact with the walls is strange in all the house

If I turn on SSAO in interior ArchViz scenes is more noticeable the shadows on the perimeter, even if the settings are as lower as possible, and it stills have the strange effect on the edges

Should I do some kind of light map in the UV2 as Unreal instead of the GIProbe to have more detail on the borders? I found the GIProbe concept just awesome, because is so much user friendly than lightmaps, but I don't know about the details limitation it could have

Maybe try SSR again. They could take care of the contact issues that drive you insane.

Actually SSR is already there! but apparently is not enough, the thing is that I also need blurry reflections and in this version of Godot SSR is still too sharp. I think this engine is the one, so far is great! I just want to learn how to configure a scene like this or if is possible. Apparently the version 4 will bring a lot of answers, but I want to learn the technical part with this one until 4 is ready. Would be great to get some technical demos/info about high quality rendering

Try using the GIProbe, ReflectionProbe and SSR at the same time. They can blend with each other and help make the scene look right.

@e-Nano said: Actually I'm not sure enough, I mean I'm familiarized with the concepts but I don't know if I'm using them as I should

Imagine that the cube is furniture, the reflections and color bleeding are great for what I need, is great to see the interaction with other materials but the contact with the walls is strange in all the house

To remove the light gap by the wall, try adjusting the Normal Bias setting in the GI-Probe. If that does not help, then maybe try adjusting the Bias setting. Its been awhile since I've messed around with GI-Probes, but I think that is how you can fix the issue.

Also, combining effects like @SIsilicon28 suggested may also help, if you are not already combining them.

Should I do some kind of light map in the UV2 as Unreal instead of the GIProbe to have more detail on the borders?

I do not think UV maps are needed for the GI-Probe's in Godot, because Godot's GI uses voxel cone tracing rather than lightmaps. The BakedLightmap node would benefit from UV2 maps though.

I found the GIProbe concept just awesome, because is so much user friendly than lightmaps, but I don't know about the details limitation it could have

One of the biggest technical limitations with the GI probes in Godot is the memory usage due to storing all the voxels, and the resolution of the voxels themselves. Outside of that, I'm not really sure what technical limitations or constraints it might have. I've heard this article from the Wicked Engine is a decent explanation of voxel-based GI, though I think Godot's implementation is slightly different than the one detailed there.

Edit: Another interesting article on GI from a game called Enlisted. The GI detailed there is not what Godot uses, but an interesting read. Might be interesting if Godot did something similar.

I think GI probes is a great solution to GI in games and will eventually replace light maps, assuming another, better solution does not arrive before then. In Godot 3, GI probe performance is a bit tricky. Apparently it is getting better in Godot 4.0 though, so I'm optimistic.

7 days later

Godot 4.0 will support decals, and will also feature new GIProbe and SSR implementations. The new GIProbe supports optional anisotropy to reduce leaks (at the cost of performance). It will probably be more suited to archviz (much more so than Godot 3.2).

Thanks for the info Calinou I think that are great news! So far I've found Godot in a great but still "drafty" status about 3d render, I think is still focused in colorful and noisy platform scenarios so when you have all that info on the screen the problems are more hidden. Archviz has no big requirements, but instead it needs a couple of polished tools to show an idea. I don't know if this helps but in my opinion this tools would be awesome for archviz: - Sharper SSAO: the actual algorithm is still very blurry and it spread too much, and it takes the border of the screen for the final result - Please don't fully replace LightMaps with GIProbes: sometimes we need to show interactive spaces on small devices and lightmapping is still the better choice for that - Possibility to combine lighting techniques: if one could be able to lightmap the scene I think the results could be more precise (and lightweight) about general contact shadows, softshadows, AO and combined with GIProbes one could have the chance to solve blurry realtime reflections for rough materials. For archviz the scenes most of the time are static and confined to a building or room, so is ok for us if we have to bake things if that let us show a good work (remember that after the presentation we discard that file and we never see it again) - Would be great if one could also use several GIprobes to combine effects and to better "fit" the spaces avoiding unused voxels - could be possible to add some projection option for lights? sometimes we need to show how a luminaire lights a room, for this effect we usually use ies meshes, but with a black/white projected texture we could do the trick - Could be possible to make space independent sun shadows? the direct light shadows are highly pixelated when you need to show an entire building, is there some way to do some kind of stencil soft shadows? Thanks a lot for this tool! I think if some of this things could be solved this could be the best engine for architecture because it is highly efficient, powerful and user friendly. I can't wait for the next release

In as far as light-mapping for ArchVis is concerned, you are probably better off baking your lightmaps in your DCC of choice for best results.

@e-Nano said: - Please don't fully replace LightMaps with GIProbes: sometimes we need to show interactive spaces on small devices and lightmapping is still the better choice for that

There is still going to be baked light map support in Godot, even with light probes so dynamic meshes/nodes can benefit from the baked lighting. Here's a tweet from Reduz showing the current progress:

https://twitter.com/reduzio/status/1255956414402609152

And

https://twitter.com/reduzio/status/1256190538786770949

  • could be possible to add some projection option for lights? sometimes we need to show how a luminaire lights a room, for this effect we usually use ies meshes, but with a black/white projected texture we could do the trick

In Godot 4.0, lights will have the option to project a texture, which if I understand correctly, should be able to achieve what you are looking for. The Vulkan Progress Report 7 talks a bit about this.

  • Could be possible to make space independent sun shadows? the direct light shadows are highly pixelated when you need to show an entire building, is there some way to do some kind of stencil soft shadows?

I'm not sure if this applies or not, but the shadow mapping code in Godot 4.0 has been changed to make the bias settings better, which may help? I dunno to be honest, but in the Vulkan Progress Report 7 it mentions shadows will allow for "a very significant increase in shadowmap quality".

This is just amazing! I've also been reading about Godot 4 on the website and all will be there! I think I'll have to wait to version 4 to keep testing Thanks a lot for the answers