summaryrefslogtreecommitdiff
path: root/doc/classes/VoxelGI.xml
blob: 5b395becb7696763f1bafae7287f9dee96b021ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?xml version="1.0" encoding="UTF-8" ?>
<class name="VoxelGI" inherits="VisualInstance3D" version="4.0">
	<brief_description>
		Real-time global illumination (GI) probe.
	</brief_description>
	<description>
		[VoxelGI]s are used to provide high-quality real-time indirect light to scenes. They precompute the effect of objects that emit light and the effect of static geometry to simulate the behavior of complex light in real-time. [VoxelGI]s need to be baked before using, however, once baked, dynamic objects will receive light from them. Further, lights can be fully dynamic or baked.
		Having [VoxelGI]s in a scene can be expensive, the quality of the probe can be turned down in exchange for better performance in the [ProjectSettings] using [member ProjectSettings.rendering/global_illumination/voxel_gi/quality].
		[b]Note:[/b] Meshes should have sufficiently thick walls to avoid light leaks (avoid one-sided walls). For interior levels, enclose your level geometry in a sufficiently large box and bridge the loops to close the mesh.
	</description>
	<tutorials>
		<link title="GI probes">https://docs.godotengine.org/en/latest/tutorials/3d/voxel_gi.html</link>
		<link title="Third Person Shooter Demo">https://godotengine.org/asset-library/asset/678</link>
	</tutorials>
	<methods>
		<method name="bake">
			<return type="void">
			</return>
			<argument index="0" name="from_node" type="Node" default="null">
			</argument>
			<argument index="1" name="create_visual_debug" type="bool" default="false">
			</argument>
			<description>
				Bakes the effect from all [GeometryInstance3D]s marked with [constant GeometryInstance3D.GI_MODE_BAKED] and [Light3D]s marked with either [constant Light3D.BAKE_DYNAMIC] or [constant Light3D.BAKE_STATIC]. If [code]create_visual_debug[/code] is [code]true[/code], after baking the light, this will generate a [MultiMesh] that has a cube representing each solid cell with each cube colored to the cell's albedo color. This can be used to visualize the [VoxelGI]'s data and debug any issues that may be occurring.
			</description>
		</method>
		<method name="debug_bake">
			<return type="void">
			</return>
			<description>
				Calls [method bake] with [code]create_visual_debug[/code] enabled.
			</description>
		</method>
	</methods>
	<members>
		<member name="data" type="VoxelGIData" setter="set_probe_data" getter="get_probe_data">
			The [VoxelGIData] resource that holds the data for this [VoxelGI].
		</member>
		<member name="extents" type="Vector3" setter="set_extents" getter="get_extents" default="Vector3(10, 10, 10)">
			The size of the area covered by the [VoxelGI]. If you make the extents larger without increasing the subdivisions with [member subdiv], the size of each cell will increase and result in lower detailed lighting.
		</member>
		<member name="subdiv" type="int" setter="set_subdiv" getter="get_subdiv" enum="VoxelGI.Subdiv" default="1">
			Number of times to subdivide the grid that the [VoxelGI] operates on. A higher number results in finer detail and thus higher visual quality, while lower numbers result in better performance.
		</member>
	</members>
	<constants>
		<constant name="SUBDIV_64" value="0" enum="Subdiv">
			Use 64 subdivisions. This is the lowest quality setting, but the fastest. Use it if you can, but especially use it on lower-end hardware.
		</constant>
		<constant name="SUBDIV_128" value="1" enum="Subdiv">
			Use 128 subdivisions. This is the default quality setting.
		</constant>
		<constant name="SUBDIV_256" value="2" enum="Subdiv">
			Use 256 subdivisions.
		</constant>
		<constant name="SUBDIV_512" value="3" enum="Subdiv">
			Use 512 subdivisions. This is the highest quality setting, but the slowest. On lower-end hardware this could cause the GPU to stall.
		</constant>
		<constant name="SUBDIV_MAX" value="4" enum="Subdiv">
			Represents the size of the [enum Subdiv] enum.
		</constant>
	</constants>
</class>