godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
89.11k stars 20.2k forks source link

Vulkan: VoxelGI shows artifacts on highly reflective materials #50842

Open WickedInsignia opened 3 years ago

WickedInsignia commented 3 years ago

Godot version

Godot 4 nightly build

System information

Windows 10 v20H2, Intel i7 6700, Nvidia GTX1080, 16GB RAM

Issue description

Voxel GI consistently shows a wavy lined artifact in dark reflections on highly reflective materials. This is most obvious on metallic materials with very low roughness, and far less obvious on metallic materials with average roughness and non-metallic materials with very low roughness.

Steps to reproduce

These artifacts will be visible in the darker parts of a reflection on any mirror-like material with low roughness. Here it is on a highly reflective metallic gold: VoxelGI_LinedReflections_01

It is also visible (to a far lesser degree) on rougher reflective materials (in this case a fully metallic material) with roughness+normal maps: VoxelGI_LinedReflections_02

Minimal reproduction project

A small reproduction project with 3 monkey meshes and 3 planes enclosed in a VoxelGI domain. Each plane has a differing material, from left to right:

  1. A highly reflective plastic
  2. A rough metal
  3. A highly reflective metal. The effect is most obvious here.

Please open Main_Scene first. The project can be found below: Voxel GI Reflection Artifacts.zip

Calinou commented 3 years ago

Playing around with the bias/normal bias values in VoxelGI should help, but setting them too high will increase leaking.

WickedInsignia commented 3 years ago

@Calinou I would have thought so too, but bias/bias normal values don't affect this at all. It just "pulsates" as you change those values but does not reduce in any way.

Using "2 Bounces" reduces it in some cases by filling the darker areas of the reflection with bounce light. Expanding the domain also alters its frequency so the lines are space further apart, but this also comes at the cost of resolution. In any situation it's still present enough to be an issue that didn't exist in the previous iteration.

WickedInsignia commented 2 years ago

Coming back to confirm that VoxelGI reflections still have these banding artifacts in Alpha 8.

WickedInsignia commented 11 months ago

Bumping. These banding artifacts are the major downside of VoxelGI at the moment, since most everything else seemingly works well enough to be practical for production use. Reflection probes cannot be used to resolve the issue since they overwrite the effects of a VoxelGI probe entirely. Reflections in VoxelGI also suffer from the same jitter that SDFGI reflections do, as described https://github.com/godotengine/godot/issues/74633. Most observable on the windows of the Bistro demo scene.