<?xml version="1.0" encoding="UTF-8" ?>
<class name="ReflectionProbe" inherits="VisualInstance" version="3.2">
	<brief_description>
		Captures its surroundings to create reflections.
	</brief_description>
	<description>
		Capture its surroundings as a dual paraboloid image, and stores versions of it with increasing levels of blur to simulate different material roughnesses.
		The [ReflectionProbe] is used to create high-quality reflections at the cost of performance. It can be combined with [GIProbe]s and Screen Space Reflections to achieve high quality reflections. [ReflectionProbe]s render all objects within their [member cull_mask], so updating them can be quite expensive. It is best to update them once with the important static objects and then leave them.
		Note: By default Godot will only render 16 reflection probes. If you need more, increase the number of atlas subdivisions. This setting can be found in [member ProjectSettings.rendering/quality/reflections/atlas_subdiv].
	</description>
	<tutorials>
		<link>https://docs.godotengine.org/en/latest/tutorials/3d/reflection_probes.html</link>
	</tutorials>
	<methods>
	</methods>
	<members>
		<member name="box_projection" type="bool" setter="set_enable_box_projection" getter="is_box_projection_enabled" default="false">
			If [code]true[/code], enables box projection. This makes reflections look more correct in rectangle-shaped rooms by offsetting the reflection center depending on the camera's location.
		</member>
		<member name="cull_mask" type="int" setter="set_cull_mask" getter="get_cull_mask" default="1048575">
			Sets the cull mask which determines what objects are drawn by this probe. Every [VisualInstance] with a layer included in this cull mask will be rendered by the probe. It is best to only include large objects which are likely to take up a lot of space in the reflection in order to save on rendering cost.
		</member>
		<member name="enable_shadows" type="bool" setter="set_enable_shadows" getter="are_shadows_enabled" default="false">
			If [code]true[/code], computes shadows in the reflection probe. This makes the reflection probe slower to render; you may want to disable this if using the [constant UPDATE_ALWAYS] [member update_mode].
		</member>
		<member name="extents" type="Vector3" setter="set_extents" getter="get_extents" default="Vector3( 1, 1, 1 )">
			The size of the reflection probe. The larger the extents the more space covered by the probe which will lower the perceived resolution. It is best to keep the extents only as large as you need them.
		</member>
		<member name="intensity" type="float" setter="set_intensity" getter="get_intensity" default="1.0">
			Defines the reflection intensity. Intensity modulates the strength of the reflection.
		</member>
		<member name="interior_ambient_color" type="Color" setter="set_interior_ambient" getter="get_interior_ambient" default="Color( 0, 0, 0, 1 )">
			Sets the ambient light color to be used when this probe is set to [member interior_enable].
		</member>
		<member name="interior_ambient_contrib" type="float" setter="set_interior_ambient_probe_contribution" getter="get_interior_ambient_probe_contribution" default="0.0">
			Sets the contribution value for how much the reflection affects the ambient light for this reflection probe when set to [member interior_enable]. Useful so that ambient light matches the color of the room.
		</member>
		<member name="interior_ambient_energy" type="float" setter="set_interior_ambient_energy" getter="get_interior_ambient_energy" default="1.0">
			Sets the energy multiplier for this reflection probe's ambient light contribution when set to [member interior_enable].
		</member>
		<member name="interior_enable" type="bool" setter="set_as_interior" getter="is_set_as_interior" default="false">
			If [code]true[/code], reflections will ignore sky contribution. Ambient lighting is then controlled by the [code]interior_ambient_*[/code] properties.
		</member>
		<member name="max_distance" type="float" setter="set_max_distance" getter="get_max_distance" default="0.0">
			Sets the max distance away from the probe an object can be before it is culled.
		</member>
		<member name="origin_offset" type="Vector3" setter="set_origin_offset" getter="get_origin_offset" default="Vector3( 0, 0, 0 )">
			Sets the origin offset to be used when this reflection probe is in box project mode.
		</member>
		<member name="update_mode" type="int" setter="set_update_mode" getter="get_update_mode" enum="ReflectionProbe.UpdateMode" default="0">
			Sets how frequently the probe is updated. Can be [constant UPDATE_ONCE] or [constant UPDATE_ALWAYS].
		</member>
	</members>
	<constants>
		<constant name="UPDATE_ONCE" value="0" enum="UpdateMode">
			Update the probe once on the next frame.
		</constant>
		<constant name="UPDATE_ALWAYS" value="1" enum="UpdateMode">
			Update the probe every frame. This is needed when you want to capture dynamic objects. However, it results in an increased render time. Use [constant UPDATE_ONCE] whenever possible.
		</constant>
	</constants>
</class>
