diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/atom_renderer/CMakeLists.txt
index 729da64e57..3510048109 100644
--- a/AutomatedTesting/Gem/PythonTests/atom_renderer/CMakeLists.txt
+++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/CMakeLists.txt
@@ -9,33 +9,18 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#
-#
-# All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-# its licensors.
-#
-# For complete copyright and license terms please see the LICENSE at the root of this
-# distribution (the "License"). All use of this software is governed by the License,
-# or, if provided, by the license below or the license accompanying this file. Do not
-# remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-#
-
################################################################################
-# Atom Renderer Automated Tests
-# Runs EditorPythonBindings scripts inside the Editor to verify test results.
+# Atom Renderer: Automated Tests
+# Runs EditorPythonBindings (hydra) scripts inside the Editor to verify test results for the Atom renderer.
+# Utilizes a combination of screenshot comparisons and log files to verify test results.
################################################################################
-add_subdirectory(atom_python_scripts)
-add_subdirectory(atom_utils)
-add_subdirectory(epb_utils)
-add_subdirectory(epb_scripts)
-
if(PAL_TRAIT_BUILD_HOST_TOOLS AND PAL_TRAIT_BUILD_TESTS_SUPPORTED AND AutomatedTesting IN_LIST LY_PROJECTS)
ly_add_pytest(
- NAME AtomRenderer::HydraEPBTestsMain
+ NAME AtomRenderer::HydraTestsMain
TEST_REQUIRES gpu
TEST_SUITE main
- PATH ${CMAKE_CURRENT_LIST_DIR}/atom_python_scripts/test_Atom_MainSuite.py
+ PATH ${CMAKE_CURRENT_LIST_DIR}/test_Atom_MainSuite.py
TEST_SERIAL
TIMEOUT 1200
RUNTIME_DEPENDENCIES
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/__init__.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/__init__.py
new file mode 100644
index 0000000000..79f8fa4422
--- /dev/null
+++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/__init__.py
@@ -0,0 +1,10 @@
+"""
+All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+its licensors.
+
+For complete copyright and license terms please see the LICENSE at the root of this
+distribution (the "License"). All use of this software is governed by the License,
+or, if provided, by the license below or the license accompanying this file. Do not
+remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+"""
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/__init__.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/__init__.py
new file mode 100644
index 0000000000..79f8fa4422
--- /dev/null
+++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/__init__.py
@@ -0,0 +1,10 @@
+"""
+All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+its licensors.
+
+For complete copyright and license terms please see the LICENSE at the root of this
+distribution (the "License"). All use of this software is governed by the License,
+or, if provided, by the license below or the license accompanying this file. Do not
+remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+"""
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AllLevels_OpenClose.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AllLevels_OpenClose.py
new file mode 100644
index 0000000000..2b7fcd6cc6
--- /dev/null
+++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_hydra_scripts/hydra_AllLevels_OpenClose.py
@@ -0,0 +1,105 @@
+"""
+All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+its licensors.
+
+For complete copyright and license terms please see the LICENSE at the root of this
+distribution (the "License"). All use of this software is governed by the License,
+or, if provided, by the license below or the license accompanying this file. Do not
+remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+
+This hydra/EPB script opens and closes every possible Atom level.
+"""
+import os
+import sys
+
+import azlmbr.legacy.general as general
+import azlmbr.paths
+
+sys.path.append(os.path.join(azlmbr.paths.devroot, 'AutomatedTesting', 'Gem', 'PythonTests'))
+
+from automatedtesting_shared.editor_test_helper import EditorTestHelper
+
+LEVELS = os.listdir(os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Levels", "AtomLevels"))
+
+
+class TestAllLevelsOpenClose(EditorTestHelper):
+ """Tests that all expected Atom levels can be opened and load successfully."""
+ def __init__(self):
+ EditorTestHelper.__init__(self, log_prefix="Atom_TestAllLevelsOpenClose", args=["level"])
+
+ def run(self):
+ """
+ 1. Open & close all valid test levels in the Editor.
+ 2. Every time a level is opened, verify it loads correctly and the Editor remains stable.
+ """
+
+ def after_level_load():
+ """Function to call after creating/opening a level to ensure it loads."""
+ # Give everything a second to initialize.
+ general.idle_enable(True)
+ general.update_viewport()
+ general.idle_wait(0.5) # half a second is more than enough for updating the viewport.
+
+ # Close out problematic windows, FPS meters, and anti-aliasing.
+ if general.is_helpers_shown(): # Turn off the helper gizmos if visible
+ general.toggle_helpers()
+ if general.is_pane_visible("Error Report"): # Close Error Report windows that block focus.
+ general.close_pane("Error Report")
+ if general.is_pane_visible("Error Log"): # Close Error Log windows that block focus.
+ general.close_pane("Error Log")
+ general.run_console("r_displayInfo=0")
+ general.run_console("r_antialiasingmode=0")
+
+ return True
+
+ # Create a new level.
+ heightmap_resolution = 512
+ heightmap_meters_per_pixel = 1
+ terrain_texture_resolution = 412
+ use_terrain = False
+
+ # Return codes are ECreateLevelResult defined in CryEdit.h
+ return_code = general.create_level_no_prompt(
+ self.args['level'],
+ heightmap_resolution,
+ heightmap_meters_per_pixel,
+ terrain_texture_resolution,
+ use_terrain
+ )
+ if return_code == 1:
+ general.log(f"{self.args['level']} level already exists")
+ elif return_code == 2:
+ general.log("Failed to create directory")
+ elif return_code == 3:
+ general.log("Directory length is too long")
+ elif return_code != 0:
+ general.log("Unknown error, failed to create level")
+ else:
+ general.log(f"{self.args['level']} level created successfully")
+ after_level_load()
+
+ # Open all valid test levels.
+ failed_to_open = []
+ LEVELS.append(self.args['level']) # Update LEVELS constant for created level.
+ for level in LEVELS:
+ if general.is_idle_enabled() and (general.get_current_level_name() == level):
+ general.log(f"Level {level} already open.")
+ else:
+ general.log(f"Opening level {level}")
+ general.open_level_no_prompt(level)
+ self.wait_for_condition(function=lambda: general.get_current_level_name() == level,
+ timeout_in_seconds=2.0)
+ result = (general.get_current_level_name() == level) and after_level_load()
+ if result:
+ general.log(f"Successfully opened {level}")
+ else:
+ general.log(f"{level} failed to open")
+ failed_to_open.append(level)
+
+ if failed_to_open:
+ general.log(f"The following levels failed to open: {failed_to_open}")
+
+
+test = TestAllLevelsOpenClose()
+test.run()
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_utils/automated_test_utils.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_utils/automated_test_utils.py
deleted file mode 100644
index 6e5b12982a..0000000000
--- a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_utils/automated_test_utils.py
+++ /dev/null
@@ -1,266 +0,0 @@
-"""
-All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-its licensors.
-
-For complete copyright and license terms please see the LICENSE at the root of this
-distribution (the "License"). All use of this software is governed by the License,
-or, if provided, by the license below or the license accompanying this file. Do not
-remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-"""
-import time
-import azlmbr.legacy.general as general
-import azlmbr.atom
-
-
-class FailFast(BaseException):
- """
- Raise to stop proceeding through test steps.
- """
-
- pass
-
-
-class TestHelper:
- @staticmethod
- def init_idle():
- general.idle_enable(True)
- general.idle_wait_frames(1)
-
- @staticmethod
- def open_level(level):
- # type: (str, ) -> None
- """
- :param level: the name of the level folder in MestTest\\
-
- :return: None
- """
- result = general.open_level(level) # TO-DO: Check if success opening level
- if result:
- Report.info("Open level {}".format(level))
- else:
- Report.failure("Assert: failed to open level {}".format(level))
- general.idle_wait_frames(1)
-
- @staticmethod
- def enter_game_mode(msgtuple_success_fail):
- # type: (tuple) -> None
- """
- :param msgtuple_success_fail: The tuple with the expected/unexpected messages for entering game mode.
-
- :return: None
- """
- Report.info("Entering game mode")
- general.enter_game_mode()
- general.idle_wait_frames(1)
- Report.critical_result(msgtuple_success_fail, general.is_in_game_mode())
-
- @staticmethod
- def exit_game_mode(msgtuple_success_fail):
- # type: (tuple) -> None
- """
- :param msgtuple_success_fail: The tuple with the expected/unexpected messages for exiting game mode.
-
- :return: None
- """
- general.exit_game_mode()
- general.idle_wait_frames(1)
- Report.critical_result(msgtuple_success_fail, not general.is_in_game_mode())
-
- @staticmethod
- def close_editor():
- general.exit_no_prompt()
-
- @staticmethod
- def fail_fast(message=None):
- # type: (str) -> None
- """
- A state has been reached where progressing in the test is not viable.
- raises FailFast
- :return: None
- """
- Report.info("Failing fast. Raising an exception and shutting down the editor.")
- if message:
- Report.info("Fail fast message: {}".format(message))
- TestHelper.close_editor()
- raise FailFast()
-
- @staticmethod
- def wait_for_condition(function, timeout_in_seconds=2.0):
- # type: (function, float) -> bool
- """
- **** Will be replaced by a function of the same name exposed in the Engine*****
- a function to run until it returns True or timeout is reached
- the function can have no parameters and
- waiting idle__wait_* is handled here not in the function
-
- :param function: a function that returns a boolean indicating a desired condition is achieved
- :param timeout_in_seconds: when reached, function execution is abandoned and False is returned
- """
-
- with Timeout(timeout_in_seconds) as t:
- while True:
- general.idle_wait(1.0)
- if t.timed_out:
- return False
-
- ret = function()
- if not isinstance(ret, bool):
- raise TypeError("return value for wait_for_condition function must be a bool")
- if ret:
- return True
-
- @staticmethod
- def find_entities(entity_name):
- search_filter = azlmbr.entity.SearchFilter()
- search_filter.names = [entity_name]
- searched_entities = azlmbr.entity.SearchBus(azlmbr.bus.Broadcast, 'SearchEntities', search_filter)
- return searched_entities
-
- @staticmethod
- def attach_component_to_entity(entityId, componentName):
- # type: (azlmbr.entity.EntityId, str) -> azlmbr.entity.EntityComponentIdPair
- """
- Adds the component if not added already.
- If successful, returns the EntityComponentIdPair, otherwise returns None.
- """
- typeIdsList = azlmbr.editor.EditorComponentAPIBus(azlmbr.bus.Broadcast, 'FindComponentTypeIdsByEntityType',
- [componentName], 0)
- general.log("Components found = {}".format(len(typeIdsList)))
- if len(typeIdsList) < 1:
- general.log(f"ERROR: A component class with name {componentName} doesn't exist")
- return None
- elif len(typeIdsList) > 1:
- general.log(f"ERROR: Found more than one component classes with same name: {componentName}")
- return None
- # Before adding the component let's check if it is already attached to the entity.
- componentOutcome = azlmbr.editor.EditorComponentAPIBus(azlmbr.bus.Broadcast, 'GetComponentOfType', entityId,
- typeIdsList[0])
- if componentOutcome.IsSuccess():
- return componentOutcome.GetValue() # In this case the value is not a list.
- componentOutcome = azlmbr.editor.EditorComponentAPIBus(azlmbr.bus.Broadcast, 'AddComponentsOfType', entityId,
- typeIdsList)
- if componentOutcome.IsSuccess():
- general.log(f"{componentName} Component added to entity.")
- return componentOutcome.GetValue()[0]
- general.log(f"ERROR: Failed to add component [{componentName}] to entity")
- return None
-
- @staticmethod
- def get_component_property(component, propertyPath):
- return azlmbr.editor.EditorComponentAPIBus(
- azlmbr.bus.Broadcast,
- 'GetComponentProperty',
- component,
- propertyPath)
-
- @staticmethod
- def set_component_property(component, propertyPath, value):
- azlmbr.editor.EditorComponentAPIBus(
- azlmbr.bus.Broadcast,
- 'SetComponentProperty',
- component,
- propertyPath,
- value)
-
- @staticmethod
- def get_property_list(Component):
- property_list = azlmbr.editor.EditorComponentAPIBus(azlmbr.bus.Broadcast, 'BuildComponentPropertyList',
- Component)
- return property_list
-
- @staticmethod
- def compare_property_list(Component, PropertyList):
- property_list = TestHelper.get_property_list(Component)
- if set(property_list) == set(PropertyList):
- general.log("Property list of component is correct.")
-
- @staticmethod
- def isclose(a: float, b: float, rel_tol: float = 1e-9, abs_tol: float = 0.0) -> bool:
- return abs(a - b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)
-
-
-class Timeout:
- # type: (float) -> None
- """
- contextual timeout
- :param seconds: float seconds to allow before timed_out is True
- """
-
- def __init__(self, seconds):
- self.seconds = seconds
-
- def __enter__(self):
- self.die_after = time.time() + self.seconds
- return self
-
- def __exit__(self, type, value, traceback):
- pass
-
- @property
- def timed_out(self):
- return time.time() > self.die_after
-
-
-# NOTE: implementation of reports will be changed to use a better mechanism rather than print
-
-
-class Report:
- @staticmethod
- def info(msg):
- print("Info: {}".format(msg))
-
- @staticmethod
- def success(msgtuple_success_fail):
- print("Success: {}".format(msgtuple_success_fail[0]))
-
- @staticmethod
- def failure(msgtuple_success_fail):
- print("Failure: {}".format(msgtuple_success_fail[1]))
-
- @staticmethod
- def result(msgtuple_success_fail, condition):
- if not isinstance(condition, bool):
- raise TypeError("condition argument must be a bool")
-
- if condition:
- Report.success(msgtuple_success_fail)
- else:
- Report.failure(msgtuple_success_fail)
- return condition
-
- @staticmethod
- def critical_result(msgtuple_success_fail, condition, fast_fail_message=None):
- # type: (tuple, bool, str) -> None
- """
- if condition is False we will fail fast
-
- :param msgtuple_success_fail: messages to print based on the condition
- :param condition: success (True) or failure (False)
- :param fast_fail_message: [optional] message to include on fast fail
- """
- if not isinstance(condition, bool):
- raise TypeError("condition argument must be a bool")
-
- if not Report.result(msgtuple_success_fail, condition):
- TestHelper.fail_fast(fast_fail_message)
-
- @staticmethod
- def info_vector3(vector3, label="", magnitude=None):
- # type: (azlmbr.math.Vector3, str, float) -> None
- """
- prints the vector to the Report.info log. If applied, label will print first,
- followed by the vector's values (x, y, z,) to 2 decimal places. Lastly if the
- magnitude is supplied, it will print on the third line.
-
- :param vector3: a azlmbr.math.Vector3 object to print
- prints in [x: , y: , z: ] format.
- :param label: [optional] A string to print before printing the vector3's contents
- :param magnitude: [optional] the vector's magnitude to print after the vector's contents
- :return: None
- """
- if label != "":
- Report.info(label)
- Report.info(" x: {:.2f}, y: {:.2f}, z: {:.2f}".format(vector3.x, vector3.y, vector3.z))
- if magnitude is not None:
- Report.info(" magnitude: {:.2f}".format(magnitude))
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_utils/hydra_test_utils.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_utils/hydra_test_utils.py
deleted file mode 100644
index 30aa320ab6..0000000000
--- a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_utils/hydra_test_utils.py
+++ /dev/null
@@ -1,166 +0,0 @@
-"""
-All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-its licensors.
-
-For complete copyright and license terms please see the LICENSE at the root of this
-distribution (the "License"). All use of this software is governed by the License,
-or, if provided, by the license below or the license accompanying this file. Do not
-remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-"""
-import logging
-import os
-
-import ly_test_tools.log.log_monitor
-import ly_test_tools.environment.process_utils as process_utils
-import ly_test_tools.environment.waiter as waiter
-from ly_remote_console.remote_console_commands import (
- send_command_and_expect_response as send_command_and_expect_response,
-)
-from automatedtesting_shared.network_utils import check_for_listening_port
-
-logger = logging.getLogger(__name__)
-
-
-def teardown_editor(editor):
- """
- :param editor: Configured editor object
- :return:
- """
- process_utils.kill_processes_named("AssetProcessor.exe")
- logger.debug("Ensuring Editor is stopped")
- editor.ensure_stopped()
-
-
-def launch_and_validate_results(
- request,
- test_directory,
- editor,
- editor_script,
- expected_lines,
- unexpected_lines=[],
- halt_on_unexpected=False,
- log_file_name="Editor.log",
- cfg_args=[],
- timeout=60,
-):
- """
- Creates a temporary config file for Hydra execution, runs the Editor with the specified script, and monitors for
- expected log lines.
- :param request: Special fixture providing information of the requesting test function.
- :param test_directory: Path to test directory that editor_script lives in.
- :param editor: Configured editor object to run test against.
- :param editor_script: Name of script that will execute in the Editor.
- :param expected_lines: Expected lines to search log for.
- :param unexpected_lines: Unexpected lines to search log for. Defaults to none.
- :param halt_on_unexpected: Halts test if unexpected lines are found. Defaults to False.
- :param log_file_name: Name of the log file created by the editor. Defaults to 'Editor.log'
- :param cfg_args: Additional arguments for CFG, such as LevelName.
- :param timeout: Length of time for test to run. Default is 60.
- """
- test_case = os.path.join(test_directory, editor_script)
- request.addfinalizer(lambda: teardown_editor(editor))
- logger.debug("Running automated test: {}".format(editor_script))
- if editor_script != "":
- editor.args.extend(
- [
- "--skipWelcomeScreenDialog",
- "--autotest_mode",
- "--runpython",
- test_case,
- "--runpythonargs",
- ]
- )
- editor.args.extend([" ".join(cfg_args)])
- with editor.start():
- editorlog_file = os.path.join(editor.workspace.paths.project_log(), log_file_name)
- # Log monitor requires the file to exist.
- logger.debug("Waiting until log file <{}> exists...".format(editorlog_file))
- waiter.wait_for(
- lambda: os.path.exists(editorlog_file),
- timeout=60,
- exc=("Log file '{}' was never created by another process.".format(editorlog_file)),
- interval=1,
- )
- logger.debug("Done! log file <{}> exists.".format(editorlog_file))
- log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=editor, log_file_path=editorlog_file)
- log_monitor.monitor_log_for_lines(
- expected_lines=expected_lines,
- unexpected_lines=unexpected_lines,
- halt_on_unexpected=halt_on_unexpected,
- timeout=timeout,
- )
-
-
-def launch_and_validate_results_launcher(
- launcher,
- level,
- remote_console_instance,
- expected_lines,
- unexpected_lines=[],
- halt_on_unexpected=False,
- port_listener_timeout=120,
- log_monitor_timeout=60,
- remote_console_port=4600,
-):
- """
- Runs the launcher with the specified level, and monitors Game.log for expected lines.
- :param launcher: Configured launcher object to run test against.
- :param level: The level to load in the launcher.
- :param remote_console_instance: Configured Remote Console object.
- :param expected_lines: Expected lines to search log for.
- :param unexpected_lines: Unexpected lines to search log for. Defaults to none.
- :param halt_on_unexpected: Halts test if unexpected lines are found. Defaults to False.
- :param port_listener_timeout: Timeout for verifying successful connection to Remote Console.
- :param log_monitor_timeout: Timeout for monitoring for lines in Game.log
- :param remote_console_port: The port used to communicate with the Remote Console.
- """
-
- with launcher.start():
- gamelog_file = os.path.join(launcher.workspace.paths.project_log(), "Game.log")
-
- # Ensure Remote Console can be reached
- waiter.wait_for(
- lambda: check_for_listening_port(remote_console_port),
- port_listener_timeout,
- exc=AssertionError("Port {} not listening.".format(remote_console_port)),
- )
- remote_console_instance.start(timeout=30)
-
- # Load the specified level in the launcher
- send_command_and_expect_response(remote_console_instance, f"map {level}", "LEVEL_LOAD_COMPLETE", timeout=30)
-
- # Log monitor requires the file to exist
- logger.debug("Waiting until log file <{}> exists...".format(gamelog_file))
- waiter.wait_for(
- lambda: os.path.exists(gamelog_file),
- timeout=60,
- exc=("Log file '{}' was never created by another process.".format(gamelog_file)),
- interval=1,
- )
- logger.debug("Done! log file <{}> exists.".format(gamelog_file))
- log_monitor = ly_test_tools.log.log_monitor.LogMonitor(launcher=launcher, log_file_path=gamelog_file)
- # Workaround for LY-110925 - Wait for log file to be opened before checking for expected lines. This is done in
- # monitor_log_for_lines as well, but has a low timeout with no way to currently override
- logger.debug("Waiting for log file '{}' to be opened by another process.".format(gamelog_file))
- # Check for expected/unexpected lines
- log_monitor.monitor_log_for_lines(
- expected_lines=expected_lines,
- unexpected_lines=unexpected_lines,
- halt_on_unexpected=halt_on_unexpected,
- timeout=log_monitor_timeout,
- )
-
-
-def remove_files(artifact_path, suffix):
- """
- Removes files with the specified suffix from the specified path
- :param artifact_path: Path to search for files
- :param suffix: File extension to remove
- """
- if not os.path.isdir(artifact_path):
- return
-
- for file_name in os.listdir(artifact_path):
- if file_name.endswith(suffix):
- os.remove(os.path.join(artifact_path, file_name))
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/epb_scripts/epb_AllLevels_OpenClose.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/epb_scripts/epb_AllLevels_OpenClose.py
deleted file mode 100644
index 7d6b2744de..0000000000
--- a/AutomatedTesting/Gem/PythonTests/atom_renderer/epb_scripts/epb_AllLevels_OpenClose.py
+++ /dev/null
@@ -1,102 +0,0 @@
-"""
-All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
-its licensors.
-
-For complete copyright and license terms please see the LICENSE at the root of this
-distribution (the "License"). All use of this software is governed by the License,
-or, if provided, by the license below or the license accompanying this file. Do not
-remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-
-This hydra/EPB script opens and closes every possible Atom level.
-"""
-import os
-import sys
-
-import azlmbr.legacy.general as general
-import azlmbr.legacy.settings as settings
-import azlmbr.paths
-
-sys.path.append(os.path.join(azlmbr.paths.devroot, 'AutomatedTesting', 'Gem', 'PythonTests'))
-
-from atom_renderer.atom_utils.automated_test_utils import TestHelper as helper
-
-LEVELS = os.listdir(os.path.join(azlmbr.paths.devroot, "AutomatedTesting", "Levels", "AtomLevels"))
-
-
-class TestAllLevelsOpenClose(object):
- """Reserved for the test name."""
- pass
-
-
-def run():
- """
- 1. Open & close all valid test levels in the Editor.
- 2. Every time a level is opened, verify it loads correctly and the Editor remains stable.
- """
-
- def after_level_load():
- """Function to call after creating/opening a level to ensure it loads."""
- # Give everything a second to initialize.
- general.idle_enable(True)
- general.update_viewport()
- general.idle_wait(0.5) # half a second is more than enough for updating the viewport.
-
- # Close out problematic windows, FPS meters, and anti-aliasing.
- if general.is_helpers_shown(): # Turn off the helper gizmos if visible
- general.toggle_helpers()
- if general.is_pane_visible("Error Report"): # Close Error Report windows that block focus.
- general.close_pane("Error Report")
- if general.is_pane_visible("Error Log"): # Close Error Log windows that block focus.
- general.close_pane("Error Log")
- general.run_console("r_displayInfo=0")
- general.run_console("r_antialiasingmode=0")
-
- return True
-
- # Create a new level.
- new_level_name = "tmp_level" # Specified in AllLevelsOpenClose_test.py
- heightmap_resolution = 512
- heightmap_meters_per_pixel = 1
- terrain_texture_resolution = 412
- use_terrain = False
-
- # Return codes are ECreateLevelResult defined in CryEdit.h
- return_code = general.create_level_no_prompt(
- new_level_name, heightmap_resolution, heightmap_meters_per_pixel, terrain_texture_resolution, use_terrain)
- if return_code == 1:
- general.log(f"{new_level_name} level already exists")
- elif return_code == 2:
- general.log("Failed to create directory")
- elif return_code == 3:
- general.log("Directory length is too long")
- elif return_code != 0:
- general.log("Unknown error, failed to create level")
- else:
- general.log(f"{new_level_name} level created successfully")
- after_level_load()
-
- # Open all valid test levels.
- failed_to_open = []
- LEVELS.append(new_level_name) # Update LEVELS constant for created level.
- for level in LEVELS:
- if general.is_idle_enabled() and (general.get_current_level_name() == level):
- general.log(f"Level {level} already open.")
- else:
- general.log(f"Opening level {level}")
- general.open_level_no_prompt(level)
- helper.wait_for_condition(function=lambda: general.get_current_level_name() == level,
- timeout_in_seconds=2.0)
- result = (general.get_current_level_name() == level) and after_level_load()
- if result:
- general.log(f"Successfully opened {level}")
- else:
- general.log(f"{level} failed to open")
- failed_to_open.append(level)
-
- if failed_to_open:
- general.log(f"The following levels failed to open: {failed_to_open}")
-
-
-if __name__ == "__main__":
- run()
diff --git a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_python_scripts/test_Atom_MainSuite.py b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py
similarity index 89%
rename from AutomatedTesting/Gem/PythonTests/atom_renderer/atom_python_scripts/test_Atom_MainSuite.py
rename to AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py
index 056c7a4af2..6a9f86d151 100644
--- a/AutomatedTesting/Gem/PythonTests/atom_renderer/atom_python_scripts/test_Atom_MainSuite.py
+++ b/AutomatedTesting/Gem/PythonTests/atom_renderer/test_Atom_MainSuite.py
@@ -18,11 +18,11 @@ import pytest
pytest.importorskip("ly_test_tools")
import ly_test_tools.environment.file_system as file_system
-from atom_renderer.atom_utils import hydra_test_utils as hydra
+import automatedtesting_shared.hydra_test_utils as hydra
logger = logging.getLogger(__name__)
EDITOR_TIMEOUT = 60
-TEST_DIRECTORY = os.path.dirname(__file__)
+TEST_DIRECTORY = os.path.join(os.path.dirname(__file__), "atom_hydra_scripts")
# Go to the project root directory
PROJECT_DIRECTORY = PurePath(TEST_DIRECTORY)
@@ -34,7 +34,7 @@ if len(PROJECT_DIRECTORY.parents) > 5:
@pytest.mark.parametrize("project", ["AutomatedTesting"])
@pytest.mark.parametrize("launcher_platform", ['windows_editor'])
@pytest.mark.parametrize("level", ["tmp_level"])
-class TestAllLevelsOpenClose(object):
+class TestAtomLevels(object):
@pytest.fixture(autouse=True)
def setup_teardown(self, request, workspace, project, level):
# Cleanup our temp level
@@ -64,7 +64,7 @@ class TestAllLevelsOpenClose(object):
"C34428175",
)
- def test_AllLevelsOpenClose(self, request, editor, level, workspace, project, launcher_platform):
+ def test_AllLevels_OpenClose(self, request, editor, level, workspace, project, launcher_platform):
cfg_args = [level]
test_levels = os.path.join(str(PROJECT_DIRECTORY), "Levels", "AtomLevels")
@@ -82,7 +82,7 @@ class TestAllLevelsOpenClose(object):
request,
TEST_DIRECTORY,
editor,
- "AllLevelsOpenClose_test_case.py",
+ "hydra_AllLevels_OpenClose.py",
timeout=EDITOR_TIMEOUT,
expected_lines=expected_lines,
unexpected_lines=unexpected_lines,
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/ActorTest_100Actors.ly b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/ActorTest_100Actors.ly
new file mode 100644
index 0000000000..abd015a380
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/ActorTest_100Actors.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:830ce7490fea796988129908e5e18fa0ab9fb9a9e7213ae21d300cfbca8ea9d2
+size 9450
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/BURT_Crouch.layer b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/BURT_Crouch.layer
new file mode 100644
index 0000000000..bc658afa99
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/BURT_Crouch.layer
@@ -0,0 +1,5816 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer BURT_CrouchIdle.layer b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer BURT_CrouchIdle.layer
new file mode 100644
index 0000000000..8a55a57a61
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer BURT_CrouchIdle.layer
@@ -0,0 +1,5816 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer BURT_Idle.layer b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer BURT_Idle.layer
new file mode 100644
index 0000000000..b664b4ce93
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer BURT_Idle.layer
@@ -0,0 +1,5816 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer BURT_Idle_alt_a.layer b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer BURT_Idle_alt_a.layer
new file mode 100644
index 0000000000..b1e80b9acf
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer BURT_Idle_alt_a.layer
@@ -0,0 +1,5816 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer Burt_jump_up.layer b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer Burt_jump_up.layer
new file mode 100644
index 0000000000..54b3f67c02
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/Layers/Layer Burt_jump_up.layer
@@ -0,0 +1,5816 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..84d6900a7b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:437c47cd8b398769cd88043f01102d44b9e853e5539391f67f74f40634058915
+size 8389548
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..e3136a7454
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/TerrainTexture.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..1579a06732
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/filelist.xml b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/filelist.xml
new file mode 100644
index 0000000000..93fcffd48a
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/level.pak b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/level.pak
new file mode 100644
index 0000000000..02d7ea78fa
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5cb431dae976d6f7082ed7b391ef990a57357c255573d6911a581f6655af2e08
+size 11638
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/tags.txt b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_100Actors/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/ActorTest_MultipleActors.ly b/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/ActorTest_MultipleActors.ly
new file mode 100644
index 0000000000..4747cad548
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/ActorTest_MultipleActors.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e02279c2ddbd6f009311a4f20a9aebc5c8a6c4420cda3457d1a5482deb9497df
+size 12789
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..f132a4b870
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f700877e64f96a3025f2decf15b095d9f0da5c8aafaaf1b0b89a2a78ebd884ea
+size 8389548
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/level.pak b/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/level.pak
new file mode 100644
index 0000000000..dcd9b813ba
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_MultipleActors/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:59f3f0704e2f6655372348e7d590fcd61f4f1112cbcd2f08c803fc52440bb6b0
+size 9519
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/ActorTest_SingleActor.ly b/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/ActorTest_SingleActor.ly
new file mode 100644
index 0000000000..41e8357adb
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/ActorTest_SingleActor.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a9e6d1c66c32cf0708e3fa5e1ff9d545cfa38635271f037fb4bd117100276ed
+size 6586
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..84d6900a7b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:437c47cd8b398769cd88043f01102d44b9e853e5539391f67f74f40634058915
+size 8389548
diff --git a/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/level.pak b/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/level.pak
new file mode 100644
index 0000000000..0cc067735e
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ActorTest_SingleActor/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:901d4d8b2592230c42e8fc8a01c88b8552681adc8772f0873a48afcb383bc334
+size 8538
diff --git a/AutomatedTesting/Levels/AtomLevels/EmptyLevel/EmptyLevel.ly b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/EmptyLevel.ly
new file mode 100644
index 0000000000..6491668b58
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/EmptyLevel.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:04455a1a8b21f5320a72a931e878f0d28797cbfe85b740a5251689582e8e2eaa
+size 4729
diff --git a/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..c73de54f1d
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e4169cb1fc0d81d9c6b5b7e25c21dd76462dcaa3c6188a30ca46dbb0335833ec
+size 8389396
diff --git a/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..f43df05b22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..6ea168cc6b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/EmptyLevel/TerrainTexture.pak b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/TerrainTexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/TerrainTexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/EmptyLevel/level.pak b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/level.pak
new file mode 100644
index 0000000000..9b8a377173
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d817f8d9a901f36b52561939cbc63d41e1c84249c6f5abd81c11ee074cad04b3
+size 5198
diff --git a/AutomatedTesting/Levels/AtomLevels/EmptyLevel/terrain/cover.ctc b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/terrain/cover.ctc
new file mode 100644
index 0000000000..98dd90ae5e
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/EmptyLevel/terrain/cover.ctc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce6bf6129174493d7fe8b19518085b8f740843fd4c401686e858860833c69d00
+size 1310792
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/ExampleLevel.ly b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/ExampleLevel.ly
new file mode 100644
index 0000000000..5324f1964f
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/ExampleLevel.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d713a0d4fc697eacc9f9bf7faf89eb22f081b62e8780fd062c47aa011ab2a5cb
+size 5102
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/Layers/DefaultLayer.layer b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/Layers/DefaultLayer.layer
new file mode 100644
index 0000000000..59dcd0d5a3
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/Layers/DefaultLayer.layer
@@ -0,0 +1,1177 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..64b6645976
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:246f823c6e73b68828888ac2c969d876fad5c978f9d6b573e4d1d70dd5b4ea67
+size 8389396
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..f43df05b22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..6ea168cc6b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/filelist.xml b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/filelist.xml
new file mode 100644
index 0000000000..70fd515ab9
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/level.pak b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/level.pak
new file mode 100644
index 0000000000..4fd1632337
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0581f9a8a68d02d2663a40a936d9596ba4b87174fcf856fa45ed8e79acf4e872
+size 6112
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/tags.txt b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/ExampleLevel/terraintexture.pak b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/terraintexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ExampleLevel/terraintexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..5961d17499
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cdaf4d31756be0f8c52cc2e448507385b54bed6df34f62c886625c30d372568
+size 8389548
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..f43df05b22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..456d609b8a
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/Lucy.ly b/AutomatedTesting/Levels/AtomLevels/Lucy/Lucy.ly
new file mode 100644
index 0000000000..b92b18b59b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/Lucy.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d527ff81e054276cbe3b4bd25f757d5a6f28ca02ec8a618d330e180a99c590ae
+size 8187
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/TerrainTexture.pak b/AutomatedTesting/Levels/AtomLevels/Lucy/TerrainTexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/TerrainTexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/filelist.xml b/AutomatedTesting/Levels/AtomLevels/Lucy/filelist.xml
new file mode 100644
index 0000000000..603bdab1ef
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/level.pak b/AutomatedTesting/Levels/AtomLevels/Lucy/level.pak
new file mode 100644
index 0000000000..aaa5e794fb
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a89c9baf1f802bb09b5f871667ca2143127774dd1bb7c430c45423f8f73e528
+size 7739
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/tags.txt b/AutomatedTesting/Levels/AtomLevels/Lucy/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/Lucy/terrain/cover.ctc b/AutomatedTesting/Levels/AtomLevels/Lucy/terrain/cover.ctc
new file mode 100644
index 0000000000..5c869c6533
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Lucy/terrain/cover.ctc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdab340ad6c6dc6c1167e31afa061684be083360fc4108fa9f1fa4b15fe95d8c
+size 1310792
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/Environment.xml
new file mode 100644
index 0000000000..5fa3664cd4
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..aaba406daa
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18aa31d4a12de43c410045baeb21d3c9911dbb8f2c99b752acd585355cf2d3bc
+size 272907
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..426ca0f541
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..c5b404318e
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/MeshTest.ly b/AutomatedTesting/Levels/AtomLevels/MeshTest/MeshTest.ly
new file mode 100644
index 0000000000..1fa206d9ee
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/MeshTest.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:287a6d35cf5edb1690f1757e7234506f1d6dabb4c48e69d085674f749365e490
+size 9299
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/TerrainTexture.pak b/AutomatedTesting/Levels/AtomLevels/MeshTest/TerrainTexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/TerrainTexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/filelist.xml b/AutomatedTesting/Levels/AtomLevels/MeshTest/filelist.xml
new file mode 100644
index 0000000000..35b601e678
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/level.pak b/AutomatedTesting/Levels/AtomLevels/MeshTest/level.pak
new file mode 100644
index 0000000000..b6b5acc760
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6c21e9714220b4fd8b51c3bd6dc584e2a87e96bb9ffc77ac547b7d0bf982ef4
+size 24708
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/tags.txt b/AutomatedTesting/Levels/AtomLevels/MeshTest/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/MeshTest/terrain/cover.ctc b/AutomatedTesting/Levels/AtomLevels/MeshTest/terrain/cover.ctc
new file mode 100644
index 0000000000..78c2ab6ed5
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/MeshTest/terrain/cover.ctc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d4bb4e2ab7876994431f3e6e78a004ea5718e057077b37db14ea8a52637338be
+size 262184
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..19331ecb69
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:55bcf3590d0a7f206e66f8ff53e8dd39ca03ccb37eec3e1e8ae4c3228fc564ee
+size 17407562
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..0fa8b16c50
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/TerrainTexture.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..c5b404318e
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/NormalMapping.ly b/AutomatedTesting/Levels/AtomLevels/NormalMapping/NormalMapping.ly
new file mode 100644
index 0000000000..7b4ef00f1c
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/NormalMapping.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e332f75c1bd177d6505a4732aa82f05b14c79977af333d986756619af3189ad
+size 21083
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/TestNormalMapping.azsl b/AutomatedTesting/Levels/AtomLevels/NormalMapping/TestNormalMapping.azsl
new file mode 100644
index 0000000000..0ae2ea97ef
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/TestNormalMapping.azsl
@@ -0,0 +1,101 @@
+
+/*
+* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+* its licensors.
+*
+* For complete copyright and license terms please see the LICENSE at the root of this
+* distribution (the "License"). All use of this software is governed by the License,
+* or, if provided, by the license below or the license accompanying this file. Do not
+* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*
+*/
+
+#include
+
+#include "../../Shaders/CommonVS.azsli"
+#include
+
+ShaderResourceGroup MaterialSrg : SRG_PerMaterial
+{
+ Texture2D m_diffuseMap;
+
+ Texture2D m_normalMap;
+ float m_normalFactor;
+
+ float3 m_defaultLightDir;
+
+ Sampler m_sampler
+ {
+ MaxAnisotropy = 16;
+ AddressU = Wrap;
+ AddressV = Wrap;
+ AddressW = Wrap;
+ };
+}
+
+enum class Mode
+{
+ Raw,
+ Normal,
+ Lit
+};
+
+option Mode o_mode;
+
+struct PixelOutput
+{
+ float4 m_color : SV_Target0;
+};
+
+VertexOutput MainVS(VertexInput input)
+{
+ VertexOutput output = CommonVS(input);
+
+ // We don't have a utility function for scaling normals because the process is so simple. Still, the "NormalMapping" test level does test the
+ // use of this common pattern. Other materials can do the same thing to scale normal maps: just multiply the final tangent and bitangent in the vertex shader.
+ // Note, this assumes that we are using a tangent space algorithm that does not normalize the TBN basis vectors in the pixel shader (e.g. MikkT).
+ output.m_tangent *= MaterialSrg::m_normalFactor;
+ output.m_bitangent *= MaterialSrg::m_normalFactor;
+
+ output.m_bitangent *= -1; // The test normal map was baked opposite of what Atom expects
+
+ return output;
+}
+
+
+PixelOutput MainPS(VertexOutput input)
+{
+ PixelOutput output;
+
+ float4 normalMapSample = MaterialSrg::m_normalMap.Sample(MaterialSrg::m_sampler, input.m_uv);
+
+ if (o_mode == Mode::Raw)
+ {
+ output.m_color = float4(normalMapSample.xyz * 0.5 + 0.5, 1);
+ return output;
+ }
+
+ float3 normal = GetWorldSpaceNormal(normalMapSample, input.m_normal, input.m_tangent, input.m_bitangent);
+
+ if (o_mode == Mode::Normal)
+ {
+ output.m_color = float4(normal.xyz * 0.5 + 0.5, 1);
+ return output;
+ }
+
+ float3 lightDir = -SceneSrg::m_directionalLights[0].m_direction;
+ if (length(lightDir) == 0)
+ {
+ lightDir = normalize(MaterialSrg::m_defaultLightDir);
+ }
+
+ float NdotL = max(0.0, dot(normal, lightDir));
+
+ float4 baseColor = MaterialSrg::m_diffuseMap.Sample(MaterialSrg::m_sampler, input.m_uv);
+ float3 diffuse = (0.1 + saturate(NdotL)) * baseColor.xyz;
+
+ output.m_color = float4(diffuse, 1);
+
+ return output;
+}
\ No newline at end of file
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/TestNormalMapping.materialtype b/AutomatedTesting/Levels/AtomLevels/NormalMapping/TestNormalMapping.materialtype
new file mode 100644
index 0000000000..570643ad4e
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/TestNormalMapping.materialtype
@@ -0,0 +1,60 @@
+{
+ "description": "Specialized material for testing normal map calculation utility functions.",
+ "propertyLayout": {
+ "version": 1,
+ "properties": {
+ "general": [
+ {
+ "id": "m_diffuseMap",
+ "type": "image",
+ "defaultValue": "EngineAssets/Textures/grey.dds",
+ "connection": {
+ "type": "shaderInput",
+ "id": "m_diffuseMap"
+ }
+ },
+ {
+ "id": "m_normalMap",
+ "type": "image",
+ "defaultValue": "Levels/NormalMapping/test_ddn.tif",
+ "connection": {
+ "type": "shaderInput",
+ "id": "m_normalMap"
+ }
+ },
+ {
+ "id": "m_normalFactor",
+ "type": "float",
+ "defaultValue": 1.0,
+ "connection": {
+ "type": "shaderInput",
+ "id": "m_normalFactor"
+ }
+ },
+ {
+ "id": "m_defaultLightDir",
+ "type": "vector3",
+ "defaultValue": [ 0.0, 0.0, 1.0 ],
+ "connection": {
+ "type": "shaderInput",
+ "id": "m_defaultLightDir"
+ }
+ },
+ {
+ "id": "o_mode",
+ "type": "int",
+ "defaultValue": 2,
+ "connection": {
+ "type": "shaderOption",
+ "id": "o_mode"
+ }
+ }
+ ]
+ }
+ },
+ "shaders": [
+ {
+ "file": "TestNormalMapping.shader"
+ }
+ ]
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/TestNormalMapping.shader b/AutomatedTesting/Levels/AtomLevels/NormalMapping/TestNormalMapping.shader
new file mode 100644
index 0000000000..ac2b94824f
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/TestNormalMapping.shader
@@ -0,0 +1,26 @@
+{
+ "Source": "TestNormalMapping",
+
+ "DepthStencilState": {
+ "Depth": {
+ "Enable": true,
+ "CompareFunc": "GreaterEqual"
+ }
+ },
+
+ // Using auxgeom draw list to avoid tonemapping
+ "DrawList": "auxgeom",
+
+ "ProgramSettings": {
+ "EntryPoints": [
+ {
+ "name": "MainVS",
+ "type": "Vertex"
+ },
+ {
+ "name": "MainPS",
+ "type": "Fragment"
+ }
+ ]
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile.material b/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile.material
new file mode 100644
index 0000000000..9b4c9c7865
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile.material
@@ -0,0 +1,13 @@
+{
+ "description": "Draws a realistic diffuse/normal pair. We use a non-1 m_normalFactor to regression-test the normal scaling feature.",
+ "materialType": "TestNormalMapping.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "general": {
+ "m_diffuseMap": "Levels/NormalMapping/am_floor_tile_diff.tif",
+ "m_normalMap": "Levels/NormalMapping/am_floor_tile_ddn.tif",
+ "o_mode": 2,
+ "m_normalFactor": 2.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile_ddn.tif b/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile_ddn.tif
new file mode 100644
index 0000000000..97726e35fa
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile_ddn.tif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bd322f4b4618bae92407956b53031f841f4c1c6195365a534e7f0dbb912ee8a2
+size 50367786
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile_diff.tif b/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile_diff.tif
new file mode 100644
index 0000000000..b4c00d3d7c
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile_diff.tif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:30e53cdb999bafaa6c4cf8e2626e476a8a4ce8a1f498ed436de9349bc066d6f9
+size 50367786
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile_normals.material b/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile_normals.material
new file mode 100644
index 0000000000..3ad98512db
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/am_floor_tile_normals.material
@@ -0,0 +1,12 @@
+{
+ "description": "Draws the normals for a realistic normal map. We use a non-1 m_normalFactor to regression-test the normal scaling feature.",
+ "materialType": "TestNormalMapping.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "general": {
+ "m_normalMap": "Levels/NormalMapping/am_floor_tile_ddn.tif",
+ "o_mode": 1,
+ "m_normalFactor": 2.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/level.pak b/AutomatedTesting/Levels/AtomLevels/NormalMapping/level.pak
new file mode 100644
index 0000000000..cd414e8074
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a1726064c26ebe6116fc1afe338dd0b03f248ced6fe4ecefc0b5047a29d188e
+size 43048
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/lit_0.material b/AutomatedTesting/Levels/AtomLevels/NormalMapping/lit_0.material
new file mode 100644
index 0000000000..ff593e80d2
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/lit_0.material
@@ -0,0 +1,11 @@
+{
+ "description": "Uses normals to light the object, with low normal factor.",
+ "materialType": "TestNormalMapping.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "general": {
+ "o_mode": 2,
+ "m_normalFactor": 0.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/lit_1.material b/AutomatedTesting/Levels/AtomLevels/NormalMapping/lit_1.material
new file mode 100644
index 0000000000..6bb8a2c1d4
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/lit_1.material
@@ -0,0 +1,11 @@
+{
+ "description": "Uses normals to light the object, with medium normal factor.",
+ "materialType": "TestNormalMapping.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "general": {
+ "o_mode": 2,
+ "m_normalFactor": 0.5
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/lit_2.material b/AutomatedTesting/Levels/AtomLevels/NormalMapping/lit_2.material
new file mode 100644
index 0000000000..c1df1bfb4a
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/lit_2.material
@@ -0,0 +1,11 @@
+{
+ "description": "Uses normals to light the object, with high normal factor.",
+ "materialType": "TestNormalMapping.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "general": {
+ "o_mode": 2,
+ "m_normalFactor": 1.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/normals_0.material b/AutomatedTesting/Levels/AtomLevels/NormalMapping/normals_0.material
new file mode 100644
index 0000000000..63296f9326
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/normals_0.material
@@ -0,0 +1,11 @@
+{
+ "description": "Draws normals with low normal factor.",
+ "materialType": "TestNormalMapping.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "general": {
+ "o_mode": 1,
+ "m_normalFactor": 0.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/normals_1.material b/AutomatedTesting/Levels/AtomLevels/NormalMapping/normals_1.material
new file mode 100644
index 0000000000..050138fb73
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/normals_1.material
@@ -0,0 +1,11 @@
+{
+ "description": "Draws normals with medium normal factor.",
+ "materialType": "TestNormalMapping.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "general": {
+ "o_mode": 1,
+ "m_normalFactor": 0.5
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/normals_2.material b/AutomatedTesting/Levels/AtomLevels/NormalMapping/normals_2.material
new file mode 100644
index 0000000000..355a37690b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/normals_2.material
@@ -0,0 +1,11 @@
+{
+ "description": "Draws normals with high normal factor.",
+ "materialType": "TestNormalMapping.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "general": {
+ "o_mode": 1,
+ "m_normalFactor": 1.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/raw_normal_map.material b/AutomatedTesting/Levels/AtomLevels/NormalMapping/raw_normal_map.material
new file mode 100644
index 0000000000..369e7139f0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/raw_normal_map.material
@@ -0,0 +1,11 @@
+{
+ "description": "Draws the raw sampled normal map.",
+ "materialType": "TestNormalMapping.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "general": {
+ "o_mode": 0,
+ "m_normalFactor": 0.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/NormalMapping/test_ddn.tif b/AutomatedTesting/Levels/AtomLevels/NormalMapping/test_ddn.tif
new file mode 100644
index 0000000000..2510ad7966
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/NormalMapping/test_ddn.tif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d66439e57f4088d37bc85672a3ece5a2149a9f7b3541ee53fd0736f6e59206ef
+size 210308
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/PbrMaterialChart.ly b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/PbrMaterialChart.ly
new file mode 100644
index 0000000000..7c8318951b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/PbrMaterialChart.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:813ab68b68e2662b0b2bd333770678ee3bd290e4f55754c32cb8554c13a79cf8
+size 32876
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/filelist.xml b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/filelist.xml
new file mode 100644
index 0000000000..2057c46e8c
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/level.pak b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/level.pak
new file mode 100644
index 0000000000..9969827618
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:948b10a3c2f75a68f307cbc4f510ddd77337cd33f680f6fef07568280c44edb7
+size 11311
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/Environment.xml b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/Heightmap.dat
new file mode 100644
index 0000000000..f773bbb4bf
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fb99fe93d16ff959e3265d157ec0e6030bd0d44e9f00b6749ca6104c51e5536
+size 8389602
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/TerrainTexture.xml
new file mode 100644
index 0000000000..0fa8b16c50
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/TerrainTexture.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/TimeOfDay.xml
new file mode 100644
index 0000000000..456d609b8a
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/leveldata/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic.material
new file mode 100644
index 0000000000..32ac8dfd10
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic.material
@@ -0,0 +1,32 @@
+{
+ "materialType": "Materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "baseColor": {
+ "color": [ 1.0, 1.0, 1.0 ],
+ "factor": 0.75,
+ "useTexture": false,
+ "textureMap": ""
+ },
+ "metallic": {
+ "factor": 0.0,
+ "useTexture": false,
+ "textureMap": ""
+ },
+ "roughness": {
+ "factor": 0.0,
+ "useTexture": false,
+ "textureMap": ""
+ },
+ "specularF0": {
+ "factor": 0.5,
+ "useTexture": false,
+ "textureMap": ""
+ },
+ "normal": {
+ "factor": 1.0,
+ "useTexture": false,
+ "textureMap": ""
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r00.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r00.material
new file mode 100644
index 0000000000..dcadcb9bfe
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r00.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r01.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r01.material
new file mode 100644
index 0000000000..0c2b3e62b3
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r01.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.1
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r02.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r02.material
new file mode 100644
index 0000000000..8d29890384
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r02.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.2
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r03.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r03.material
new file mode 100644
index 0000000000..bb9557241b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r03.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.3
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r04.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r04.material
new file mode 100644
index 0000000000..e14e2899fa
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r04.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.4
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r05.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r05.material
new file mode 100644
index 0000000000..344ce084e5
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r05.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.5
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r06.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r06.material
new file mode 100644
index 0000000000..0f8195653f
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r06.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.6
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r07.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r07.material
new file mode 100644
index 0000000000..d5d95ff285
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r07.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.7
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r08.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r08.material
new file mode 100644
index 0000000000..801b138831
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r08.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.8
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r09.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r09.material
new file mode 100644
index 0000000000..0710a320cb
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r09.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 0.9
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r10.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r10.material
new file mode 100644
index 0000000000..d1cc781c61
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m00_r10.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 0.0
+ },
+ "roughness": {
+ "factor": 1.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r00.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r00.material
new file mode 100644
index 0000000000..945cd1e9eb
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r00.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r01.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r01.material
new file mode 100644
index 0000000000..85f6008782
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r01.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.1
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r02.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r02.material
new file mode 100644
index 0000000000..5abedc34e2
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r02.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.2
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r03.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r03.material
new file mode 100644
index 0000000000..50b37a647d
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r03.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.3
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r04.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r04.material
new file mode 100644
index 0000000000..ad74ddf08b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r04.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.4
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r05.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r05.material
new file mode 100644
index 0000000000..f7f3260b97
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r05.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.5
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r06.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r06.material
new file mode 100644
index 0000000000..fc982f9c22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r06.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.6
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r07.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r07.material
new file mode 100644
index 0000000000..c4526dfd2c
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r07.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.7
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r08.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r08.material
new file mode 100644
index 0000000000..f756a36ded
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r08.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.8
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r09.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r09.material
new file mode 100644
index 0000000000..a853979d6d
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r09.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 0.9
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r10.material b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r10.material
new file mode 100644
index 0000000000..e4528d45fd
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/materials/basic_m10_r10.material
@@ -0,0 +1,13 @@
+{
+ "parentMaterial": "./basic.material",
+ "materialType": "materials/Types/StandardPBR.materialtype",
+ "propertyLayoutVersion": 1,
+ "properties": {
+ "metallic": {
+ "factor": 1.0
+ },
+ "roughness": {
+ "factor": 1.0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/tags.txt b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/PbrMaterialChart/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..64818fea5e
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d465a67ec0ab266090626014cc06552e7db57236e637b4c43451e1eea790b2f
+size 8389396
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..f43df05b22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..3a083a6882
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/Peccy_example_dcc_materials.ly b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/Peccy_example_dcc_materials.ly
new file mode 100644
index 0000000000..d5cd02b05c
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/Peccy_example_dcc_materials.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:33bee47eaeae1de709a39048581b8217797f6bd1b4f2b0b1db78aeb42cc12944
+size 11088
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/TerrainTexture.pak b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/TerrainTexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/TerrainTexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/filelist.xml b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/filelist.xml
new file mode 100644
index 0000000000..fccdd73af5
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/level.pak b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/level.pak
new file mode 100644
index 0000000000..9355e4df99
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b68e869cd3819cb72d9a9d45556b88b18631a282ca7c5908d2a9ae4265226e79
+size 6118
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/tags.txt b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_dcc_materials/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..64818fea5e
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d465a67ec0ab266090626014cc06552e7db57236e637b4c43451e1eea790b2f
+size 8389396
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..f43df05b22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..e4106ce437
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/Peccy_example_no_materials.ly b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/Peccy_example_no_materials.ly
new file mode 100644
index 0000000000..a5d8235a30
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/Peccy_example_no_materials.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3559a804d8781d891807de2add711545f5e1866ef5cc48ff6a19e319a57c282d
+size 10517
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/TerrainTexture.pak b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/TerrainTexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/TerrainTexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/filelist.xml b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/filelist.xml
new file mode 100644
index 0000000000..fccdd73af5
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/level.pak b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/level.pak
new file mode 100644
index 0000000000..9355e4df99
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b68e869cd3819cb72d9a9d45556b88b18631a282ca7c5908d2a9ae4265226e79
+size 6118
diff --git a/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/tags.txt b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Peccy_example_no_materials/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..2bb3c003f3
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8859eeafde418ffe71a29da14f5419439f9cdd598517b0de51bf1049770de44
+size 8389396
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..f43df05b22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..e4106ce437
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/ShadowTest.ly b/AutomatedTesting/Levels/AtomLevels/ShadowTest/ShadowTest.ly
new file mode 100644
index 0000000000..beff8c20be
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/ShadowTest.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:725691047a558edf3d3f443a86d401d0bfa388053f72c2c794813a22096e249f
+size 8628
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/TerrainTexture.pak b/AutomatedTesting/Levels/AtomLevels/ShadowTest/TerrainTexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/TerrainTexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/filelist.xml b/AutomatedTesting/Levels/AtomLevels/ShadowTest/filelist.xml
new file mode 100644
index 0000000000..502f2b5af5
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/level.pak b/AutomatedTesting/Levels/AtomLevels/ShadowTest/level.pak
new file mode 100644
index 0000000000..34ec3a3cb3
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3fc101d03df12328e2a1ddf817628963c60d3999dfd08aceb843c5e2bd0c16f7
+size 41574
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/tags.txt b/AutomatedTesting/Levels/AtomLevels/ShadowTest/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/ShadowTest/terrain/cover.ctc b/AutomatedTesting/Levels/AtomLevels/ShadowTest/terrain/cover.ctc
new file mode 100644
index 0000000000..5c869c6533
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/ShadowTest/terrain/cover.ctc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdab340ad6c6dc6c1167e31afa061684be083360fc4108fa9f1fa4b15fe95d8c
+size 1310792
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/Layers/Geo.Lighting.layer b/AutomatedTesting/Levels/AtomLevels/Sponza/Layers/Geo.Lighting.layer
new file mode 100644
index 0000000000..c987b392c5
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/Layers/Geo.Lighting.layer
@@ -0,0 +1,913 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/Layers/Geo.layer b/AutomatedTesting/Levels/AtomLevels/Sponza/Layers/Geo.layer
new file mode 100644
index 0000000000..d690387d66
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/Layers/Geo.layer
@@ -0,0 +1,1389 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/Layers/Lighting.layer b/AutomatedTesting/Levels/AtomLevels/Sponza/Layers/Lighting.layer
new file mode 100644
index 0000000000..a3e61a2143
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/Layers/Lighting.layer
@@ -0,0 +1,770 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/Sponza.ly b/AutomatedTesting/Levels/AtomLevels/Sponza/Sponza.ly
new file mode 100644
index 0000000000..5ef743c1b7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/Sponza.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f4629bdef3a7407912f1aab55048e5d2f9ab114171eae77c3d4a0135a74eeb53
+size 5517
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/filelist.xml b/AutomatedTesting/Levels/AtomLevels/Sponza/filelist.xml
new file mode 100644
index 0000000000..1d3a50b8e5
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/level.pak b/AutomatedTesting/Levels/AtomLevels/Sponza/level.pak
new file mode 100644
index 0000000000..2b38c0658f
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:159409b567476761e785d464505847a761dfee3749fb636fa55a0f366dbcf287
+size 6109
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/Environment.xml b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/Heightmap.dat
new file mode 100644
index 0000000000..ab03edd5bf
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0951676ccfe5654b114572e39c5b15d9000f43719c47a6eefcf194209c548338
+size 8389396
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/TerrainTexture.xml
new file mode 100644
index 0000000000..f43df05b22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/TimeOfDay.xml
new file mode 100644
index 0000000000..6ea168cc6b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/leveldata/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/tags.txt b/AutomatedTesting/Levels/AtomLevels/Sponza/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/terrain/cover.ctc b/AutomatedTesting/Levels/AtomLevels/Sponza/terrain/cover.ctc
new file mode 100644
index 0000000000..5c869c6533
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/terrain/cover.ctc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdab340ad6c6dc6c1167e31afa061684be083360fc4108fa9f1fa4b15fe95d8c
+size 1310792
diff --git a/AutomatedTesting/Levels/AtomLevels/Sponza/terraintexture.pak b/AutomatedTesting/Levels/AtomLevels/Sponza/terraintexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/Sponza/terraintexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/Layers/Geometry.layer b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/Layers/Geometry.layer
new file mode 100644
index 0000000000..3d73f166e1
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/Layers/Geometry.layer
@@ -0,0 +1,782 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/Layers/Lights.layer b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/Layers/Lights.layer
new file mode 100644
index 0000000000..2b4eaf2a32
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/Layers/Lights.layer
@@ -0,0 +1,1059 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/LevelData/Environment.xml
new file mode 100644
index 0000000000..4ba36f66ae
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..6ea168cc6b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/SponzaDiffuseGI.ly b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/SponzaDiffuseGI.ly
new file mode 100644
index 0000000000..3faeb4babd
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/SponzaDiffuseGI.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:08eec76c840629dedd9134b8c65e7d70d8e72f8d71903464fb8750b92a39bbe3
+size 6478
diff --git a/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/filelist.xml b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/filelist.xml
new file mode 100644
index 0000000000..da3a2ede43
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/level.pak b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/level.pak
new file mode 100644
index 0000000000..bf28249944
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ae607dcf477bc0d8585ea7117722264df9782fd6fe58878f0b4266ccfaef88d9
+size 3977
diff --git a/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/tags.txt b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/SponzaDiffuseGI/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/TangentSpace.ly b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TangentSpace.ly
new file mode 100644
index 0000000000..7a405de6b9
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TangentSpace.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98825e8c69f5dec5b5f71a5dde0d64d5bdf8017f7898cac9e7b2bd00e5c5db97
+size 38475
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace.azsl b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace.azsl
new file mode 100644
index 0000000000..00bfdccb04
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace.azsl
@@ -0,0 +1,49 @@
+
+/*
+* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
+* its licensors.
+*
+* For complete copyright and license terms please see the LICENSE at the root of this
+* distribution (the "License"). All use of this software is governed by the License,
+* or, if provided, by the license below or the license accompanying this file. Do not
+* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+*
+*/
+
+#include "../../Shaders/CommonVS.azsli"
+#include
+
+enum class Axis
+{
+ Tangent,
+ Bitangent,
+ Normal
+};
+
+option Axis o_axis;
+
+struct PixelOutput
+{
+ float4 m_color : SV_Target0;
+};
+
+PixelOutput MainPS(VertexOutput input)
+{
+ PixelOutput output;
+
+ if (o_axis == Axis::Tangent)
+ {
+ output.m_color = float4(input.m_tangent * 0.5 + 0.5, 1);
+ }
+ else if (o_axis == Axis::Bitangent)
+ {
+ output.m_color = float4(input.m_bitangent * 0.5 + 0.5, 1);
+ }
+ else
+ {
+ output.m_color = float4(input.m_normal * 0.5 + 0.5, 1);
+ }
+
+ return output;
+}
\ No newline at end of file
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace.materialtype b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace.materialtype
new file mode 100644
index 0000000000..f68f7c6b32
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace.materialtype
@@ -0,0 +1,22 @@
+{
+ "propertyLayout": {
+ "version": 1,
+ "properties": {
+ "general": [
+ {
+ "id": "o_axis",
+ "type": "int",
+ "connection": {
+ "type": "shaderOption",
+ "id": "o_axis"
+ }
+ }
+ ]
+ }
+ },
+ "shaders": [
+ {
+ "file": "TestTangentSpace.shader"
+ }
+ ]
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace.shader b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace.shader
new file mode 100644
index 0000000000..5ac7eff206
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace.shader
@@ -0,0 +1,26 @@
+{
+ "Source": "TestTangentSpace.azsl",
+
+ "DepthStencilState": {
+ "Depth": {
+ "Enable": true,
+ "CompareFunc": "GreaterEqual"
+ }
+ },
+
+ // Using auxgeom draw list to avoid tonemapping
+ "DrawList": "auxgeom",
+
+ "ProgramSettings": {
+ "EntryPoints": [
+ {
+ "name": "CommonVS",
+ "type": "Vertex"
+ },
+ {
+ "name": "MainPS",
+ "type": "Fragment"
+ }
+ ]
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace_B.material b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace_B.material
new file mode 100644
index 0000000000..414175fd40
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace_B.material
@@ -0,0 +1,8 @@
+{
+ "materialType": "TestTangentSpace.materialtype",
+ "properties": {
+ "general": {
+ "o_axis": 1
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace_N.material b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace_N.material
new file mode 100644
index 0000000000..bda8aa489b
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace_N.material
@@ -0,0 +1,8 @@
+{
+ "materialType": "TestTangentSpace.materialtype",
+ "properties": {
+ "general": {
+ "o_axis": 2
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace_T.material b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace_T.material
new file mode 100644
index 0000000000..7980476181
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/TestTangentSpace_T.material
@@ -0,0 +1,8 @@
+{
+ "materialType": "TestTangentSpace.materialtype",
+ "properties": {
+ "general": {
+ "o_axis": 0
+ }
+ }
+}
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/cylinder_faceted.fbx b/AutomatedTesting/Levels/AtomLevels/TangentSpace/cylinder_faceted.fbx
new file mode 100644
index 0000000000..989f4240e9
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/cylinder_faceted.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f22d389a7a7187103306e31fdd8ee451b4100a98a92c2321fb259c2aa9ac9b7
+size 14680
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/cylinder_faceted_rotated_uvs.fbx b/AutomatedTesting/Levels/AtomLevels/TangentSpace/cylinder_faceted_rotated_uvs.fbx
new file mode 100644
index 0000000000..616b39c6ec
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/cylinder_faceted_rotated_uvs.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:41b4cd04c1931c90b4dc732fb627602d39e064096f6370d81eacc037c5a87008
+size 14671
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/cylinder_lowres.fbx b/AutomatedTesting/Levels/AtomLevels/TangentSpace/cylinder_lowres.fbx
new file mode 100644
index 0000000000..528cc81f33
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/cylinder_lowres.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:49cd54041f03da6ece73eec49862625df1afa7aaba7beefecdfe66af5cd3ba11
+size 13910
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/filelist.xml b/AutomatedTesting/Levels/AtomLevels/TangentSpace/filelist.xml
new file mode 100644
index 0000000000..52b3bd08cf
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/level.pak b/AutomatedTesting/Levels/AtomLevels/TangentSpace/level.pak
new file mode 100644
index 0000000000..0e713c0bf7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:438e6f0ab1675ab65a4aea6e170f0aeb9ac7cccb9b13683d2764cd5b9a1838cc
+size 45292
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/Environment.xml b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/Heightmap.dat
new file mode 100644
index 0000000000..9f482e6fad
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e263e20aa06bac2dd0008db8a68790b882716fc87cd48d818c2cc244f54a1ce1
+size 17407562
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/TerrainTexture.xml
new file mode 100644
index 0000000000..0fa8b16c50
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/TerrainTexture.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/TimeOfDay.xml
new file mode 100644
index 0000000000..c5b404318e
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/leveldata/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/TangentSpace/plane_zup.fbx b/AutomatedTesting/Levels/AtomLevels/TangentSpace/plane_zup.fbx
new file mode 100644
index 0000000000..1337082a83
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/TangentSpace/plane_zup.fbx
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5d9bd1a1a2d87c061fa45b6089fc57dea182d3c4b65765882bbb30aa0f633fe9
+size 15196
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..5f09eef86c
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9996f86f94d15b8a2a59353653bc8f0e24a326dc63bd3480980c45aec6ec5596
+size 8389548
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..f43df05b22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..456d609b8a
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/filelist.xml b/AutomatedTesting/Levels/AtomLevels/lucy_high/filelist.xml
new file mode 100644
index 0000000000..603bdab1ef
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/level.pak b/AutomatedTesting/Levels/AtomLevels/lucy_high/level.pak
new file mode 100644
index 0000000000..aaa5e794fb
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a89c9baf1f802bb09b5f871667ca2143127774dd1bb7c430c45423f8f73e528
+size 7739
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/lucy_high.ly b/AutomatedTesting/Levels/AtomLevels/lucy_high/lucy_high.ly
new file mode 100644
index 0000000000..320f9cc313
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/lucy_high.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:552809b2d95a43f5aa2386550a94e8e3b3bc6bfe2e4e8b118416445fe9ab271e
+size 9435
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/tags.txt b/AutomatedTesting/Levels/AtomLevels/lucy_high/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/terrain/cover.ctc b/AutomatedTesting/Levels/AtomLevels/lucy_high/terrain/cover.ctc
new file mode 100644
index 0000000000..5c869c6533
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/terrain/cover.ctc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdab340ad6c6dc6c1167e31afa061684be083360fc4108fa9f1fa4b15fe95d8c
+size 1310792
diff --git a/AutomatedTesting/Levels/AtomLevels/lucy_high/terraintexture.pak b/AutomatedTesting/Levels/AtomLevels/lucy_high/terraintexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/lucy_high/terraintexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/Environment.xml b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/Environment.xml
new file mode 100644
index 0000000000..c8398b6257
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/Environment.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/Heightmap.dat b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/Heightmap.dat
new file mode 100644
index 0000000000..e5a126f793
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/Heightmap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32b3c3b6a44f979f0dddec02fa52a0f643a03e9ac587d73d1843d914edab7cfa
+size 8389548
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/TerrainTexture.xml b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/TerrainTexture.xml
new file mode 100644
index 0000000000..f43df05b22
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/TerrainTexture.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/TimeOfDay.xml b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/TimeOfDay.xml
new file mode 100644
index 0000000000..3a083a6882
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/TimeOfDay.xml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/VegetationMap.dat b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/VegetationMap.dat
new file mode 100644
index 0000000000..dce5631cd0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/LevelData/VegetationMap.dat
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9
+size 63
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/TerrainTexture.pak b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/TerrainTexture.pak
new file mode 100644
index 0000000000..fe3604a050
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/TerrainTexture.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
+size 22
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/filelist.xml b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/filelist.xml
new file mode 100644
index 0000000000..8ebd8dd6fd
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/filelist.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/level.pak b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/level.pak
new file mode 100644
index 0000000000..acff6441d0
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/level.pak
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:febe6437673cab6732d7eee3df6155e670043ec10047f2c20dbf417f2e499a76
+size 7710
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/macbeth_shaderballs.ly b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/macbeth_shaderballs.ly
new file mode 100644
index 0000000000..59009f27c1
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/macbeth_shaderballs.ly
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:772448438ccb225129ea21024117b204f6f4ccf8b470a6a4d668ea7cc7ebabfe
+size 19600
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/tags.txt b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/tags.txt
new file mode 100644
index 0000000000..0d6c1880e7
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/tags.txt
@@ -0,0 +1,12 @@
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
+0,0,0,0,0,0
diff --git a/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/terrain/cover.ctc b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/terrain/cover.ctc
new file mode 100644
index 0000000000..5c869c6533
--- /dev/null
+++ b/AutomatedTesting/Levels/AtomLevels/macbeth_shaderballs/terrain/cover.ctc
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdab340ad6c6dc6c1167e31afa061684be083360fc4108fa9f1fa4b15fe95d8c
+size 1310792