<?xml version="1.0" encoding="utf-8"?>
<Filter>
	<CustomClasses>
		<ScriptMap name="ScriptMap01">
			<Color name="CEILING" display_name="Ceiling"/>
			<Color name="FLOOR" display_name="Floor"/>
			<Color name="BACK_WALL" display_name="Back Wall"/>
			<Color name="FRONT_WALL" display_name="Front Wall"/>
			<Color name="LEFT_WALL" display_name="Left Wall"/>
			<Color name="RIGHT_WALL" display_name="Right Wall"/>
			<Slider name="CAMERA_X" display_name="Camera X"/>
			<Slider name="CAMERA_Y" display_name="Camera Y"/>
			<Slider name="CAMERA_Z" display_name="Camera Z"/>
			<Slider name="SPHERE1_HEIGHT" display_name="Sphere1 Height"/>
			<Slider name="SPHERE2_HEIGHT" display_name="Sphere2 Height"/>
		</ScriptMap>
	</CustomClasses>
	<Components>
		<Result id="result">
			<Source source="scriptmap01 01"/>
			<FilterType value="0"/>
			<Lighting>
				<Height value="0.20000000000000001"/>
				<Environment>
					<Source value=""/>
					<Brightness value="1"/>
					<Saturation value="1"/>
					<Rotation value="0"/>
					<RotationAxis x="0" y="0" z="0"/>
				</Environment>
				<Ambience>
					<AmbientLight red="0" green="0" blue="0"/>
					<Shadowing value="0"/>
					<CurrentOcclusionSettings>
						<RayDirections value="4"/>
						<TraceDistance value="0.20000000000000001"/>
						<RayJittering value="true"/>
						<RayBounce value="true"/>
						<AvoidStreaks value="true"/>
						<DirectSamples value="0"/>
						<ROQuality value="3"/>
					</CurrentOcclusionSettings>
					<CustomOcclusionSettings>
						<RayDirections value="16"/>
						<TraceDistance value="0.29999999999999999"/>
						<RayJittering value="true"/>
						<RayBounce value="true"/>
						<AvoidStreaks value="true"/>
						<DirectSamples value="1"/>
						<ROQuality value="10"/>
					</CustomOcclusionSettings>
					<ArtisticSettings>
						<BlackPoint value="0"/>
						<Midtones value="0.5"/>
						<WhitePoint value="1"/>
					</ArtisticSettings>
				</Ambience>
			</Lighting>
		</Result>
		<ScriptMap01 id="scriptmap01 01">
			<Script value="function prepare()\[br]\[tb]--\[tb]Threshold for correct collision detection\[br]\[tb]SKIN = 1e-10\[br]\[tb]--\[tb]Max reflection/refraction iterations\[br]\[tb]MAX_ITERATIONS = 4\[br]\[tb]--\[tb]Min value of material reflection\[br]\[tb]MIN_REFLECTION = 0\[br]\[br]\[tb]--\[tb]Spheres\[br]\[tb]NUMBER_OF_SPHERES = 2\[br]\[tb]spheres = {\[br]\[tb]\[tb]{center = {0.8;  1.2 - 2 * get_slider_input(SPHERE1_HEIGHT);  0.7}; radius = 0.8; color = {1; 1; 1; 1}; refl = 1; ior = 1.50; fresnel_refl = false};\[br]\[tb]\[tb]{center = {-0.8; 1.2 - 2 * get_slider_input(SPHERE2_HEIGHT); -0.5}; radius = 0.8; color = {1; 1; 1; 0}; refl = 1; ior = 1.52; fresnel_refl = true};\[br]\[tb]}\[br]\[br]\[tb]--\[tb]Planes\[br]\[tb]NUMBER_OF_PLANES = 6\[br]\[tb]planes = { \[br]\[tb]\[tb]{point = {-2; 0; 0}; normal = {1; 0; 0}; tangent1 = {0; 0; 0}; tangent2 = {0; 0; 0}; color = {1; 0; 0; 1}; refl = 0; fresnel_refl = false};\[br]\[tb]\[tb]{point = {2; 0; 0}; normal = {-1; 0; 0}; tangent1 = {0; 0; 0}; tangent2 = {0; 0; 0}; color = {0; 1; 0; 1}; refl = 0; fresnel_refl = false};\[br]\[tb]\[tb]{point = {0; 2; 0}; normal = {0; -1; 0}; tangent1 = {0; 0; 0}; tangent2 = {0; 0; 0}; color = {1; 1; 1; 1}; refl = 0; fresnel_refl = false};\[br]\[tb]\[tb]{point = {0; -2; 0}; normal = {0; 1; 0}; tangent1 = {0; 0; 0}; tangent2 = {0; 0; 0}; color = {1; 1; 1; 1}; refl = 0; fresnel_refl = false};\[br]\[tb]\[tb]{point = {0; 0; 2}; normal = {0; 0; -1}; tangent1 = {0; 0; 0}; tangent2 = {0; 0; 0}; color = {1; 1; 1; 1}; refl = 0; fresnel_refl = false};\[br]\[tb]\[tb]{point = {0; 0; -4}; normal = {0; 0; 1}; tangent1 = {0; 0; 0}; tangent2 = {0; 0; 0}; color = {0; 0; 0; 1}; refl = 0; fresnel_refl = false};\[br]\[tb]}\[br]\[br]\[tb]local plane_ind = 1\[br]\[tb]while (plane_ind &lt;= NUMBER_OF_PLANES) do\[br]\[tb]\[tb]planes[plane_ind].tangent1, planes[plane_ind].tangent2 = get_tangent_vectors(planes[plane_ind].normal)\[br]\[tb]\[tb]plane_ind = plane_ind + 1\[br]\[tb]end \[br]\[br]\[tb]--\[tb]Lights\[br]\[tb]NUMBER_OF_LIGHTS = 1\[br]\[tb]lights = {\[br]\[tb]\[tb]{position = {0, -1.6, -1}; color = {1; 1; 1}; shadow_density = 0.8}\[br]\[tb]}\[br]\[tb]\[br]\[tb]--\[tb]Camera parameters\[br]\[tb]--\[tb]\[tb]Field of view\[br]\[tb]FOV = math.pi / 4\[br]\[tb]half_fov_tan = math.tan(FOV / 2)\[br]\[tb]camera_pos = {0, 0, -6.5}\[br]end;\[br]\[br]function dot_product(vector1, vector2)\[br]    return vector1[1] * vector2[1] + vector1[2] * vector2[2] + vector1[3] * vector2[3]\[br]end;\[br]\[br]function cross_product(vector1, vector2)\[br]    return \[br]      {vector1[2] * vector2[3] - vector1[3] * vector2[2];\[br]      vector1[3] * vector2[1] - vector1[1] * vector2[3];\[br]      vector1[1] * vector2[2] - vector1[2] * vector2[1]}\[br]end;\[br]\[br]function get_tangent_vectors(normal)\[br]\[tb]local up_vector = {0, -1, 0}\[br]\[tb]if (normal[2] == 1) or (normal[2] == -1) then\[br]\[tb]\[tb]up_vector = {1, 0, 0}\[br]\[tb]end\[br]\[tb]local tangent1 = cross_product(normal, up_vector)\[br]\[tb]tangent1 = get_normalized(tangent1)\[br]\[tb]local tangent2 = get_normalized(cross_product(normal, tangent1))\[br]\[tb]return tangent1, tangent2\[br]end;\[br]\[br]function get_length(vector)\[br]\[tb]return math.sqrt(vector[1] ^ 2 + vector[2] ^ 2 + vector[3] ^ 2)\[br]end\[br]\[br]function get_length_sq(vector)\[br]\[tb]return vector[1] ^ 2 + vector[2] ^ 2 + vector[3] ^ 2\[br]end\[br]\[br]function get_normalized(vector)\[br]    local length = get_length(vector)\[br]    return {vector[1] / length;  vector[2] / length; vector[3] / length}\[br]end;\[br]\[br]function get_reflected_ray(ray, normal)\[br]\[tb]local d = -2 * dot_product(ray, normal)\[br]\[tb]local result = {ray[1] + d * normal[1], ray[2] + d * normal[2], ray[3] + d * normal[3]}\[br]\[tb]return get_normalized(result)\[br]end;\[br]\[br]function get_refracted_ray(ray, normal, ior1, ior2)\[br]\[tb]local n = ior1 / ior2\[br]\[tb]local dot = dot_product(ray, normal)\[br]\[tb]local sine_sq = n * n * (1 - dot ^ 2)\[br]\[tb]if (sine_sq &gt; 1) then\[br]\[tb]\[tb]return nil\[br]\[tb]end\[br]\[tb]local coeff = n * dot + math.sqrt(1 - sine_sq)\[br]\[tb]return get_normalized({\[br]\[tb]\[tb]n * ray[1] - coeff * normal[1],\[br]\[tb]\[tb]n * ray[2] - coeff * normal[2],\[br]\[tb]\[tb]n * ray[3] - coeff * normal[3]})\[br]end;\[br]\[br]function get_schlick_approx(n_dot_l)\[br]\[tb]return MIN_REFLECTION + (1 - MIN_REFLECTION) * (1 - n_dot_l) ^ 5\[br]end;\[br]\[br]function sphere_intersection(origin, ray, center, radius)\[br]\[tb]local to_center = {\[br]\[tb]\[tb]center[1] - origin[1];\[br]\[tb]\[tb]center[2] - origin[2];\[br]\[tb]\[tb]center[3] - origin[3];\[br]\[tb]}\[br]\[tb]local dot = dot_product(ray, to_center)\[br]\[tb]local dist = radius^2 - get_length_sq(to_center) + dot^2\[br]\[tb]if (dist &lt; 0) then\[br]\[tb]\[tb]return -1\[br]\[tb]else\[br]\[tb]\[tb]dist = dot - math.sqrt(dist)\[br]\[tb]\[tb]local normal = {\[br]\[tb]\[tb]\[tb]dist * ray[1] - to_center[1]; \[br]\[tb]\[tb]\[tb]dist * ray[2] - to_center[2];\[br]\[tb]\[tb]\[tb]dist * ray[3] - to_center[3]}\[br]\[tb]\[tb]return dist, get_normalized(normal)\[br]\[tb]end\[br]end;\[br]\[br]function sphere_refraction(sphere_point, ray, normal, center, radius, ior)\[br]\[tb]local to_center = {\[br]\[tb]\[tb]center[1] - sphere_point[1],\[br]\[tb]\[tb]center[2] - sphere_point[2],\[br]\[tb]\[tb]center[3] - sphere_point[3]}\[br]\[tb]local refracted_ray = get_refracted_ray(ray, normal, 1, ior)\[br]\[tb]if (refracted_ray == nil) then\[br]\[tb]\[tb]return nil\[br]\[tb]end\[br]\[tb]local distance_to_out =  2 * dot_product(refracted_ray, to_center) + SKIN\[br]\[tb]local out_point = {\[br]\[tb]sphere_point[1] + refracted_ray[1] * distance_to_out;\[br]\[tb]sphere_point[2] + refracted_ray[2] * distance_to_out;\[br]\[tb]sphere_point[3] + refracted_ray[3] * distance_to_out}\[br]\[br]\[tb]local out_normal = get_normalized({\[br]\[tb]\[tb]-(out_point[1] - center[1]); \[br]\[tb]\[tb]-(out_point[2] - center[2]);\[br]\[tb]\[tb]-(out_point[3] - center[3])})\[br]\[br]\[tb]local out_ray = get_refracted_ray(refracted_ray, out_normal, ior, 1)\[br]\[tb]if (out_ray == nil) then\[br]\[tb]\[tb]return nil\[br]\[tb]end\[br]\[tb]return out_point, out_ray\[br]end;\[br]\[br]function plane_indntersection(origin, ray, plane_point, normal)\[br]\[tb]local to_plane = {\[br]\[tb]\[tb]plane_point[1] - origin[1];\[br]\[tb]\[tb]plane_point[2] - origin[2];\[br]\[tb]\[tb]plane_point[3] - origin[3]\[br]\[tb]}\[br]\[tb]local proj = -dot_product(ray, normal)\[br]\[tb]if (proj &lt;= 0) then \[br]\[tb]\[tb]return -1\[br]\[tb]end\[br]\[tb]local dist = -dot_product(normal, to_plane) / proj\[br]\[br]\[tb]if (dist &lt; 0) then\[br]\[tb]\[tb]return -1\[br]\[tb]else\[br]\[tb]\[tb]return dist, normal\[br]\[tb]end\[br]end;\[br]\[br]function cast_ray(origin, ray, edge)\[br]\[tb]local dist = nil\[br]\[tb]local normal = {0; 0; 0}\[br]\[tb]local color = {0, 0, 0, 0}\[br]\[tb]local refl\[br]\[br]\[tb]local refr_origin = nil\[br]\[tb]local refr_ray = nil\[br]\[tb]local fresnel_refl = false\[br]\[br]\[tb]local aa_zone = 0\[br]\[tb]local sphere_i = 1\[br]\[tb]while sphere_i &lt;= NUMBER_OF_SPHERES do\[br]\[tb]\[tb]local cur_dist, cur_normal = sphere_intersection(\[br]\[tb]\[tb]origin, ray, spheres[sphere_i].center, spheres[sphere_i].radius)\[br]\[tb]\[tb]if (cur_dist &gt; 0) then\[br]\[tb]\[tb]\[tb]cur_dist = cur_dist - SKIN\[br]\[tb]\[tb]\[tb]if (dist == nil) or (cur_dist &lt; dist) then\[br]\[tb]\[tb]\[tb]\[tb]dist = cur_dist\[br]\[tb]\[tb]\[tb]\[tb]normal = cur_normal\[br]\[tb]\[tb]\[tb]\[tb]color, refl, fresnel_refl, ior = \[br]\[tb]\[tb]\[tb]\[tb]\[tb]spheres[sphere_i].color, spheres[sphere_i].refl, spheres[sphere_i].fresnel_refl, spheres[sphere_i].ior\[br]\[tb]\[tb]\[tb]\[tb]\[tb]\[br]\[tb]\[tb]\[tb]\[tb]if (color[4] &lt; 1) then\[br]\[tb]\[tb]\[tb]\[tb]\[tb]refr_origin, refr_ray = sphere_refraction(\[br]\[tb]\[tb]\[tb]\[tb]\[tb]\[tb]{origin[1] + dist * ray[1], origin[2] + dist * ray[2], origin[3] + dist * ray[3]},\[br]\[tb]\[tb]\[tb]\[tb]\[tb]\[tb]ray, normal,\[br]\[tb]\[tb]\[tb]\[tb]\[tb]\[tb]spheres[sphere_i].center, spheres[sphere_i].radius, ior)\[br]\[tb]\[tb]\[tb]\[tb]\[tb]aa_zone = sphere_i\[br]\[tb]\[tb]\[tb]\[tb]end\[br]\[tb]\[tb]\[tb]end\[br]\[tb]\[tb]end\[br]\[tb]\[tb]sphere_i = sphere_i + 1\[br]\[tb]end\[br]\[br]\[tb]local nearest_plane = 0\[br]\[tb]local plane_ind = 1\[br]\[tb]while (plane_ind &lt;= NUMBER_OF_PLANES) do\[br]\[tb]\[tb]local cur_dist, cur_normal = \[br]\[tb]\[tb]\[tb]plane_indntersection(origin, ray, planes[plane_ind].point, planes[plane_ind].normal)\[br]\[tb]\[tb]if (cur_dist &gt; 0) then\[br]\[tb]\[tb]\[tb]cur_dist = cur_dist - SKIN\[br]\[tb]\[tb]if (dist == nil) or (cur_dist &lt; dist) then\[br]\[tb]\[tb]\[tb]dist = cur_dist\[br]\[tb]\[tb]\[tb]normal = cur_normal\[br]\[tb]\[tb]\[tb]nearest_plane = plane_ind\[br]\[tb]\[tb]\[tb]aa_zone = NUMBER_OF_SPHERES + plane_ind\[br]\[tb]\[tb]end\[br]\[tb]end\[br]\[tb]plane_ind = plane_ind + 1\[br]end\[br] \[br]\[tb]if (nearest_plane ~= 0) then\[br]\[tb]\[tb]local point = {\[br]\[tb]\[tb]\[tb]origin[1] + dist * ray[1] - planes[nearest_plane].point[1];\[br]\[tb]\[tb]\[tb]origin[2] + dist * ray[2] - planes[nearest_plane].point[2];\[br]\[tb]\[tb]\[tb]origin[3] + dist * ray[3] - planes[nearest_plane].point[3]}\[br]\[tb]\[tb]local u, v = dot_product(planes[nearest_plane].tangent1, point) / 4 + 0.5, dot_product(planes[nearest_plane].tangent2, point) / 4 + 0.5\[br]\[tb]\[tb]refl, fresnel_refl = planes[nearest_plane].refl, planes[nearest_plane].fresnel_refl\[br]\[tb]\[tb]color[4] = 1\[br]\[tb]\[tb]if (nearest_plane == 1) then\[br]\[tb]\[tb]\[tb]color[1], color[2], color[3] = get_sample_map(u, v, LEFT_WALL)\[br]\[tb]\[tb]elseif (nearest_plane == 2) then\[br]\[tb]\[tb]\[tb]color[1], color[2], color[3] = get_sample_map(u, v, RIGHT_WALL)\[br]\[tb]\[tb]elseif (nearest_plane == 3) then\[br]\[tb]\[tb]\[tb]color[1], color[2], color[3] = get_sample_map(u, v, FLOOR)\[br]\[tb]\[tb]elseif (nearest_plane == 4) then\[br]\[tb]\[tb]\[tb]color[1], color[2], color[3] = get_sample_map(u, v, CEILING)\[br]\[tb]\[tb]elseif (nearest_plane == 5) then\[br]\[tb]\[tb]\[tb]color[1], color[2], color[3] = get_sample_map(u, v, BACK_WALL)\[br]\[tb]\[tb]elseif (nearest_plane == 6) then\[br]\[tb]\[tb]\[tb]color[1], color[2], color[3] = get_sample_map(u, v, FRONT_WALL)\[br]\[tb]\[tb]end   \[br]\[tb]end\[br] \[br]\[tb]return dist, normal, color, refl, fresnel_refl, refr_origin, refr_ray, combine_aa_zones(edge, aa_zone)\[br]end;\[br]\[br]function get_light_visibility(origin, to_light_ray, light_dist, edge)\[br]\[tb]local visibility = 1\[br]\[tb]local sphere_i = 1\[br]\[tb]while sphere_i &lt;= NUMBER_OF_SPHERES do\[br]\[tb]\[tb]local dist = sphere_intersection(origin, to_light_ray, \[br]\[tb]\[tb]spheres[sphere_i].center, spheres[sphere_i].radius)\[br]\[tb]\[tb]if (dist &gt; 0) and (dist &lt; light_dist) then\[br]\[tb]\[tb]\[tb]edge = combine_aa_zones(edge, sphere_i)\[br]\[tb]\[tb]\[tb]visibility = visibility * math.min(0.5, 1.0 - spheres[sphere_i].color[4])\[br]\[tb]\[tb]\[tb]if (visibility == 0) then\[br]\[tb]\[tb]\[tb]\[tb]return visibility, edge\[br]\[tb]\[tb]\[tb]end\[br]\[tb]\[tb]end\[br]\[tb]\[tb]sphere_i = sphere_i + 1\[br]\[tb]end\[br]\[br]\[tb]local plane_ind = 1\[br]\[tb]while plane_ind &lt;= NUMBER_OF_PLANES do\[br]\[tb]\[tb]local dist = plane_indntersection(origin, to_light_ray, \[br]\[tb]\[tb]planes[plane_ind].point, planes[plane_ind].normal)\[br]\[tb]\[tb]if (dist &gt; 0) and (dist &lt; light_dist) then\[br]\[tb]\[tb]\[tb]edge = combine_aa_zones(edge, NUMBER_OF_SPHERES + plane_ind)\[br]\[tb]\[tb]\[tb]visibility = visibility * (1.0 - planes[plane_ind].color[4])\[br]\[tb]\[tb]\[tb]if (visibility == 0) then\[br]\[tb]\[tb]\[tb]\[tb]return visibility, edge\[br]\[tb]\[tb]\[tb]end\[br]\[tb]\[tb]end\[br]\[tb]\[tb]plane_ind = plane_ind + 1\[br]\[tb]end\[br]\[tb]return visibility, edge\[br]end;\[br]\[br]function trace_ray(origin, ray, iteration, edge)\[br]\[tb]local dist, normal, color, refl, fresnel_refl, refr_origin, refr_ray, current_edge = cast_ray(origin, ray, edge)\[br]\[tb]if (dist == nil) then\[br]\[tb]\[tb]return 0, 0, 0, 1\[br]\[tb]end\[br]\[tb]local result = {0, 0, 0}\[br]\[tb]local hit = {\[br]\[tb]\[tb]origin[1] + dist * ray[1]; \[br]\[tb]\[tb]origin[2] + dist * ray[2]; \[br]\[tb]\[tb]origin[3] + dist * ray[3]}\[br]\[br]\[tb]local refl_normal = get_reflected_ray(ray, normal)\[br]\[tb]if (fresnel_refl) then\[br]\[tb]\[tb]refl = refl * get_schlick_approx(dot_product(refl_normal, normal))\[br]\[tb]end\[br]\[br]\[tb]if (refl &gt; 0) and (iteration &lt; MAX_ITERATIONS) then\[br]\[tb]\[tb]local refl_r, refl_g, refl_b\[br]\[tb]\[tb]refl_r, refl_g, refl_b, current_edge = trace_ray(hit, refl_normal, iteration + 1, current_edge)\[br]\[tb]\[tb]result[1] = result[1] + refl * refl_r\[br]\[tb]\[tb]result[2] = result[2] + refl * refl_g\[br]\[tb]\[tb]result[3] = result[3] + refl * refl_b\[br]\[tb]end\[br]\[br]\[tb]if (color[4] &lt; 1) and (iteration &lt; MAX_ITERATIONS) and (refr_origin ~= nil) then\[br]\[tb]\[tb]local refr_r, refr_g, refr_b\[br]\[tb]\[tb]refr_r, refr_g, refr_b, current_edge = trace_ray(refr_origin, refr_ray, iteration + 1, current_edge)\[br]\[tb]\[tb]local refr_scale = (1 - refl) * (1.0 - color[4])\[br]\[tb]\[tb]result[1] = result[1] + refr_scale * refr_r\[br]\[tb]\[tb]result[2] = result[2] + refr_scale * refr_g\[br]\[tb]\[tb]result[3] = result[3] + refr_scale * refr_b\[br]\[tb]end\[br]\[br]\[tb]local light_i = 1\[br]\[tb]while (light_i &lt;= NUMBER_OF_LIGHTS) do\[br]\[tb]\[tb]local to_light = {\[br]\[tb]\[tb]lights[light_i].position[1]- hit[1]; \[br]\[tb]\[tb]lights[light_i].position[2] - hit[2]; \[br]\[tb]\[tb]lights[light_i].position[3] - hit[3]}\[br]\[tb]\[tb]local light_dist = get_length(to_light)\[br]\[tb]\[tb]to_light[1] = to_light[1] / light_dist\[br]\[tb]\[tb]to_light[2] = to_light[2] / light_dist\[br]\[tb]\[tb]to_light[3] = to_light[3] / light_dist\[br]\[br]\[tb]\[tb]local dot = dot_product(to_light, normal)\[br]\[tb]\[tb]local light_diff = (1 - refl) * color[4]\[br]\[br]\[tb]\[tb]local light_visibility\[br]\[tb]\[tb]light_visibility, current_edge = get_light_visibility(hit, to_light, light_dist, current_edge)\[br]\[tb]\[tb]if (dot &gt; 0) then\[br]\[tb]\[tb]\[tb]local light_color = lights[light_i].color\[br]\[tb]\[tb]\[tb]local shadow = 1.0 - lights[light_i].shadow_density * (1.0 - light_visibility)\[br]\[tb]\[tb]\[tb]local diff_scale = light_diff * dot * color[4] * shadow\[br]\[tb]\[tb]\[tb]result[1] = result[1] + color[1] * light_color[1] * diff_scale\[br]\[tb]\[tb]\[tb]result[2] = result[2] + color[2] * light_color[2] * diff_scale\[br]\[tb]\[tb]\[tb]result[3] = result[3] + color[3] * light_color[3] * diff_scale\[br]\[tb]\[tb]end\[br]\[tb]\[tb]light_i = light_i + 1\[br]\[tb]end\[br]\[tb]return result[1], result[2], result[3], current_edge\[br]end;\[br]\[br]function get_sample(x, y, t)\[br]\[tb]local ray = {(x * 2 - 1) * half_fov_tan, (y * 2 - 1) * half_fov_tan, 1}\[br]\[tb]ray = get_normalized(ray)\[br]\[tb]local r, g, b, edge = trace_ray(camera_pos, ray, 0, 0)\[br]\[tb]return r, g, b, 1, edge\[br]end;"/>
			<Settings>
				<OutputType value="2"/>
				<Discrete value="false"/>
				<HDR value="true"/>
				<Sizable value="false"/>
				<Randomizable value="false"/>
				<SafeScript value="true"/>
			</Settings>
			<CEILING source="colorcontrol 02" red="0.78431372549019607" green="1" blue="0.62745098039215685" alpha="1"/>
			<FLOOR source="checker2 02" red="0.78431372549019607" green="1" blue="0.62745098039215685" alpha="1"/>
			<BACK_WALL source="colorcontrol 01" red="0.78431372549019607" green="1" blue="0.62745098039215685" alpha="1"/>
			<FRONT_WALL source="colorcontrol 03" red="0.78431372549019607" green="1" blue="0.62745098039215685" alpha="1"/>
			<LEFT_WALL source="colorcontrol 04" red="0.78431372549019607" green="1" blue="0.62745098039215685" alpha="1"/>
			<RIGHT_WALL source="colorcontrol 05" red="0.78431372549019607" green="1" blue="0.62745098039215685" alpha="1"/>
			<CAMERA_X value="0.5"/>
			<CAMERA_Y value="0.5"/>
			<CAMERA_Z value="0.34000000000000002"/>
			<SPHERE1_HEIGHT source="slidercontrol 01" value="0.68000000000000005">
				<Minimum value="0"/>
				<Maximum value="1"/>
			</SPHERE1_HEIGHT>
			<SPHERE2_HEIGHT source="slidercontrol 02" value="0">
				<Minimum value="0"/>
				<Maximum value="1"/>
			</SPHERE2_HEIGHT>
		</ScriptMap01>
		<Checker2 id="checker2 02">
			<Color1 source="colorcontrol 07" red="0.059999999999999998" green="0.16" blue="0.77000000000000002" alpha="1"/>
			<Color2 source="colorcontrol 06" red="1" green="1" blue="1" alpha="1"/>
			<RepeatH value="3"/>
			<RepeatV value="3"/>
			<SolidFill value="false"/>
			<Inclined value="false"/>
		</Checker2>
		<ColorControl id="colorcontrol 01">
			<Name value-en="Back Wall"/>
			<UseRemapping value="false"/>
			<Color red="1" green="1" blue="1" alpha="1"/>
		</ColorControl>
		<ColorControl id="colorcontrol 02">
			<Name value-en="Ceiling"/>
			<UseRemapping value="false"/>
			<Color red="1" green="1" blue="1" alpha="1"/>
		</ColorControl>
		<ColorControl id="colorcontrol 03">
			<Name value-en="Front Wall"/>
			<UseRemapping value="false"/>
			<Color red="0.32558139534883701" green="0.32558139534883701" blue="0.32558139534883701" alpha="1"/>
		</ColorControl>
		<ColorControl id="colorcontrol 04">
			<Name value-en="Left Wall"/>
			<UseRemapping value="false"/>
			<Color red="1" green="0.21011673151751001" blue="0.050000000000000003" alpha="1"/>
		</ColorControl>
		<ColorControl id="colorcontrol 05">
			<Name value-en="Right Wall"/>
			<UseRemapping value="false"/>
			<Color red="0.46999999999999997" green="1" blue="0.17000000000000001" alpha="1"/>
		</ColorControl>
		<ColorControl id="colorcontrol 06">
			<Name value-en="Floor Color 2"/>
			<UseRemapping value="false"/>
			<Color red="1" green="1" blue="1" alpha="1"/>
		</ColorControl>
		<ColorControl id="colorcontrol 07">
			<Name value-en="Floor Color 1"/>
			<UseRemapping value="false"/>
			<Color red="0" green="0.40147859922179069" blue="0.77000000000000002" alpha="1"/>
		</ColorControl>
		<SliderControl id="slidercontrol 01">
			<Name value-en="Sphere1 Height"/>
			<UseRemapping value="false"/>
			<Value value="0"/>
		</SliderControl>
		<SliderControl id="slidercontrol 02">
			<Name value-en="Sphere2 Height"/>
			<UseRemapping value="false"/>
			<Value value="0"/>
		</SliderControl>
	</Components>
	<SettingsOverride>
		<Size value="1"/>
		<Variation value="0"/>
		<Seamless value="1"/>
		<ResultBlending value="0"/>
	</SettingsOverride>
	<Presets>
		<DefaultPreset>
			<Settings size_factor="1" variation="1" seamless="false" antialiasing="2" map_type="0" edges_only="true" clip_hdr_for_result="true"/>
			<Lighting>
				<Height value="0.20000000000000001"/>
				<Environment>
					<Source value=""/>
					<Brightness value="1"/>
					<Saturation value="1"/>
					<Rotation value="0"/>
					<RotationAxis x="0" y="0" z="0"/>
				</Environment>
				<Ambience>
					<AmbientLight red="0" green="0" blue="0"/>
					<Shadowing value="0"/>
					<CurrentOcclusionSettings>
						<RayDirections value="4"/>
						<TraceDistance value="0.20000000000000001"/>
						<RayJittering value="true"/>
						<RayBounce value="true"/>
						<AvoidStreaks value="true"/>
						<DirectSamples value="0"/>
						<ROQuality value="3"/>
					</CurrentOcclusionSettings>
					<CustomOcclusionSettings>
						<RayDirections value="16"/>
						<TraceDistance value="0.29999999999999999"/>
						<RayJittering value="true"/>
						<RayBounce value="true"/>
						<AvoidStreaks value="true"/>
						<DirectSamples value="1"/>
						<ROQuality value="10"/>
					</CustomOcclusionSettings>
					<ArtisticSettings>
						<BlackPoint value="0"/>
						<Midtones value="0.5"/>
						<WhitePoint value="1"/>
					</ArtisticSettings>
				</Ambience>
			</Lighting>
			<Controls>
				<ColorControl id="colorcontrol 01">
					<Color red="1" green="1" blue="1" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 02">
					<Color red="1" green="1" blue="1" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 03">
					<Color red="0.32558139534883701" green="0.32558139534883701" blue="0.32558139534883701" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 04">
					<Color red="1" green="0.21011673151751001" blue="0.050000000000000003" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 05">
					<Color red="0.46999999999999997" green="1" blue="0.17000000000000001" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 06">
					<Color red="1" green="1" blue="1" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 07">
					<Color red="0" green="0.40147859922179069" blue="0.77000000000000002" alpha="1"/>
				</ColorControl>
				<SliderControl id="slidercontrol 01">
					<Value value="0"/>
				</SliderControl>
				<SliderControl id="slidercontrol 02">
					<Value value="0"/>
				</SliderControl>
			</Controls>
		</DefaultPreset>
		<Preset>
			<Settings size_factor="1" variation="1" seamless="false" antialiasing="2" map_type="0" edges_only="true" clip_hdr_for_result="true"/>
			<Lighting>
				<Height value="0.20000000000000001"/>
				<Environment>
					<Source value=""/>
					<Brightness value="1"/>
					<Saturation value="1"/>
					<Rotation value="0"/>
					<RotationAxis x="0" y="0" z="0"/>
				</Environment>
				<Ambience>
					<AmbientLight red="0" green="0" blue="0"/>
					<Shadowing value="0"/>
					<CurrentOcclusionSettings>
						<RayDirections value="4"/>
						<TraceDistance value="0.20000000000000001"/>
						<RayJittering value="true"/>
						<RayBounce value="true"/>
						<AvoidStreaks value="true"/>
						<DirectSamples value="0"/>
						<ROQuality value="3"/>
					</CurrentOcclusionSettings>
					<CustomOcclusionSettings>
						<RayDirections value="16"/>
						<TraceDistance value="0.29999999999999999"/>
						<RayJittering value="true"/>
						<RayBounce value="true"/>
						<AvoidStreaks value="true"/>
						<DirectSamples value="1"/>
						<ROQuality value="10"/>
					</CustomOcclusionSettings>
					<ArtisticSettings>
						<BlackPoint value="0"/>
						<Midtones value="0.5"/>
						<WhitePoint value="1"/>
					</ArtisticSettings>
				</Ambience>
			</Lighting>
			<Controls>
				<ColorControl id="colorcontrol 01">
					<Color red="1" green="1" blue="1" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 02">
					<Color red="1" green="1" blue="1" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 03">
					<Color red="0.32558139534883701" green="0.32558139534883701" blue="0.32558139534883701" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 04">
					<Color red="1" green="0.21011673151751001" blue="0.050000000000000003" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 05">
					<Color red="0" green="0.40147859922179069" blue="0.77000000000000002" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 06">
					<Color red="1" green="1" blue="1" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 07">
					<Color red="0.47732809731806258" green="0.77131782945736438" blue="0.31091881497506163" alpha="1"/>
				</ColorControl>
				<SliderControl id="slidercontrol 01">
					<Value value="0"/>
				</SliderControl>
				<SliderControl id="slidercontrol 02">
					<Value value="0.83000000000000007"/>
				</SliderControl>
			</Controls>
		</Preset>
		<Preset>
			<Settings size_factor="1" variation="1" seamless="false" antialiasing="2" map_type="0" edges_only="true" clip_hdr_for_result="true"/>
			<Lighting>
				<Height value="0.20000000000000001"/>
				<Environment>
					<Source value=""/>
					<Brightness value="1"/>
					<Saturation value="1"/>
					<Rotation value="0"/>
					<RotationAxis x="0" y="0" z="0"/>
				</Environment>
				<Ambience>
					<AmbientLight red="0" green="0" blue="0"/>
					<Shadowing value="0"/>
					<CurrentOcclusionSettings>
						<RayDirections value="4"/>
						<TraceDistance value="0.20000000000000001"/>
						<RayJittering value="true"/>
						<RayBounce value="true"/>
						<AvoidStreaks value="true"/>
						<DirectSamples value="0"/>
						<ROQuality value="3"/>
					</CurrentOcclusionSettings>
					<CustomOcclusionSettings>
						<RayDirections value="16"/>
						<TraceDistance value="0.29999999999999999"/>
						<RayJittering value="true"/>
						<RayBounce value="true"/>
						<AvoidStreaks value="true"/>
						<DirectSamples value="1"/>
						<ROQuality value="10"/>
					</CustomOcclusionSettings>
					<ArtisticSettings>
						<BlackPoint value="0"/>
						<Midtones value="0.5"/>
						<WhitePoint value="1"/>
					</ArtisticSettings>
				</Ambience>
			</Lighting>
			<Controls>
				<ColorControl id="colorcontrol 01">
					<Color red="1" green="1" blue="1" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 02">
					<Color red="1" green="1" blue="1" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 03">
					<Color red="0.32558139534883701" green="0.32558139534883701" blue="0.32558139534883701" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 04">
					<Color red="1" green="0.21011673151751001" blue="0.050000000000000003" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 05">
					<Color red="0.46999999999999997" green="1" blue="0.17000000000000001" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 06">
					<Color red="1" green="1" blue="1" alpha="1"/>
				</ColorControl>
				<ColorControl id="colorcontrol 07">
					<Color red="0" green="0.40147859922179069" blue="0.77000000000000002" alpha="1"/>
				</ColorControl>
				<SliderControl id="slidercontrol 01">
					<Value value="0.81000000000000005"/>
				</SliderControl>
				<SliderControl id="slidercontrol 02">
					<Value value="0.17999999999999999"/>
				</SliderControl>
			</Controls>
		</Preset>
	</Presets>
	<Information author="Egret" name-en="Raytracing" url="" description="" keywords="" update_notes="" major_version="2" minor_version="6"/>
	<ControlsOrder>
		<Automatic value="true"/>
	</ControlsOrder>
	<FilterEditor>
		<ThumbnailSize value="1"/>
		<Canvas left="-13" top="-170" zoom_factor="0"/>
		<Viewport left="19" top="0" zoom_factor="-2"/>
		<LockPreview>
			<Locked value="true"/>
			<LockedComponent name="scriptmap01 01"/>
		</LockPreview>
		<Item id="checker2 02">
			<Position left="496" top="0"/>
		</Item>
		<Item id="colorcontrol 01">
			<Position left="736" top="144"/>
		</Item>
		<Item id="colorcontrol 02">
			<Position left="736" top="208"/>
		</Item>
		<Item id="colorcontrol 03">
			<Position left="736" top="272"/>
		</Item>
		<Item id="colorcontrol 04">
			<Position left="736" top="336"/>
		</Item>
		<Item id="colorcontrol 05">
			<Position left="736" top="400"/>
		</Item>
		<Item id="colorcontrol 06">
			<Position left="736" top="80"/>
		</Item>
		<Item id="colorcontrol 07">
			<Position left="736" top="16"/>
		</Item>
		<Item id="result">
			<Position left="48" top="0"/>
		</Item>
		<Item id="scriptmap01 01">
			<Position left="240" top="0"/>
		</Item>
		<Item id="slidercontrol 01">
			<Position left="736" top="480"/>
		</Item>
		<Item id="slidercontrol 02">
			<Position left="736" top="544"/>
		</Item>
	</FilterEditor>
</Filter>

