move deprecated harnesses to deprecated folder (#5)

This commit is contained in:
Derek Hirotsu
2023-09-14 11:48:00 -07:00
committed by GitHub
parent 5c3a6e67cf
commit 7f47dc38a3
149 changed files with 0 additions and 0 deletions

View File

@@ -1,74 +0,0 @@
[OSD]
EnableOSD=1
EnableBgnd=1
EnableFill=0
EnableStat=0
BaseColor=00FF8000
BgndColor=00000000
FillColor=80000000
PositionX=1
PositionY=1
ZoomRatio=2
CoordinateSpace=0
EnableFrameColorBar=0
FrameColorBarMode=0
RefreshPeriod=500
IntegerFramerate=1
MaximumFrametime=0
EnableFrametimeHistory=0
FrametimeHistoryWidth=-32
FrametimeHistoryHeight=-4
FrametimeHistoryStyle=0
ScaleToFit=0
[Statistics]
FramerateAveragingInterval=1000
PeakFramerateCalc=0
PercentileCalc=0
FrametimeCalc=0
PercentileBuffer=0
[Framerate]
Limit=900
LimitDenominator=1
LimitTime=0
LimitTimeDenominator=1
SyncScanline0=0
SyncScanline1=0
SyncPeriods=0
SyncLimiter=0
PassiveWait=1
[Hooking]
EnableHooking=1
EnableFloatingInjectionAddress=0
EnableDynamicOffsetDetection=0
HookLoadLibrary=0
HookDirectDraw=0
HookDirect3D8=1
HookDirect3D9=1
HookDirect3DSwapChain9Present=1
HookDXGI=1
HookDirect3D12=1
HookOpenGL=1
HookVulkan=1
InjectionDelay=15000
UseDetours=0
[Font]
Height=-9
Weight=400
Face=Unispace
Load=
[RendererDirect3D8]
Implementation=2
[RendererDirect3D9]
Implementation=2
[RendererDirect3D10]
Implementation=2
[RendererDirect3D11]
Implementation=2
[RendererDirect3D12]
Implementation=2
[RendererOpenGL]
Implementation=2
[RendererVulkan]
Implementation=2
[Info]
Timestamp=19-04-2023, 16:58:10

View File

@@ -1,41 +0,0 @@
# Forza Horizon 5
## Prerequisites
- Python 3.10+
- Forza Horizon 5 installed.
## Setup
1. Follow the setup instructions for the framework. If you have done so, all required python dependencies *should* be installed.
2. Install Forza Horizon 5 from steam.
1. Location does not matter, this harness uses Steam command to launch the game.
## Configuration
Below is an example use of this harness as a test in a benchmark configuration.
```yaml
...
...
tests:
- name: forza5
executable: "forza5.py"
process_name: "ForzaHorizon5.exe"
output_dir:
- 'harness/forza5/run'
```
__name__ : _(required)_ name of the test. This much match the name of a directory in the harness folder so the framework
can find the executable and any supplementary files.
__executable__ : _(required)_ the entry point to the test harness. In this case a python script.
__process_name__ : _(required)_ The process name that should be the target for FPS recording (ex: PresentMon).
__output_dir__: _(optional)_ Directory containing files to aggregate copies of after a successful test run. If a directory path is
given, the contents are copied.
## Common Issues
1. "Login to Microsoft" modal pops up
- This game will not let you pass into the menu if you are not signed into Xbox. If you run this game at least once before running you can login then, or pre-login before running the harness.

View File

@@ -1,219 +0,0 @@
import logging
import os
import time
from enum import Enum
import cv2
import imutils
import numpy as np
import pyautogui as gui
import mss
import pydirectinput as user
DEFAULT_MATCH_THRESHOLD = 0.80 #
DEFAULT_INTERVAL = 2 # seconds
DEFAULT_TIMEOUT = 60 # seconds
# path relative to script
script_dir = os.path.dirname(os.path.realpath(__file__))
images_dir = os.path.join(script_dir, "images")
dir16x9 = os.path.join(images_dir, "16x9")
dir16x10 = os.path.join(images_dir, "16x10")
templates = {
"settings": {
"16x10": cv2.imread(os.path.join(dir16x10, "settings.png"), cv2.IMREAD_UNCHANGED),
"16x9": cv2.imread(os.path.join(dir16x9, "settings.png"), cv2.IMREAD_UNCHANGED)
},
"graphics": {
"16x10": cv2.imread(os.path.join(dir16x10, "graphics.png"), cv2.IMREAD_UNCHANGED),
"16x9": cv2.imread(os.path.join(dir16x9, "graphics.png"), cv2.IMREAD_UNCHANGED)
},
"benchmark_mode": {
"16x10": cv2.imread(os.path.join(dir16x10, "benchmark_mode.png"), cv2.IMREAD_UNCHANGED),
"16x9": cv2.imread(os.path.join(dir16x9, "benchmark_mode.png"), cv2.IMREAD_UNCHANGED)
},
"benchmark_mode_pink": {
"16x10": cv2.imread(os.path.join(dir16x10, "benchmark_mode_pink.png"), cv2.IMREAD_UNCHANGED),
"16x9": cv2.imread(os.path.join(dir16x9, "benchmark_mode_pink.png"), cv2.IMREAD_UNCHANGED)
},
"results": {
"16x10": cv2.imread(os.path.join(dir16x10, "results.png"), cv2.IMREAD_UNCHANGED),
"16x9": cv2.imread(os.path.join(dir16x9, "results.png"), cv2.IMREAD_UNCHANGED)
},
"accessibility": {
"16x10": cv2.imread(os.path.join(dir16x9, "accessibility2.png"), cv2.IMREAD_UNCHANGED),
"16x9": cv2.imread(os.path.join(dir16x9, "accessibility2.png"), cv2.IMREAD_UNCHANGED)
}
}
def get_template(name, set="16x9"):
return templates[name][set]
class ClickType(Enum):
SINGLE = 0 # uses .click()
DOUBLE = 1 # uses .doubleclick()
HARD = 2 # uses mouse.down() and mouse.up()
AUTO_GUI = 3 # uses pyautogui instead of pydirectinput
def get_middle_of_rect(top_left_corner, height, width):
x = top_left_corner[0] + (width / 2)
y = top_left_corner[1] + (height / 2)
return int(x), int(y) # round to avoid fractional pixels
def move_mouse_to(img, timeout):
top_left_corner = wait_for_image_on_screen(img, DEFAULT_TIMEOUT)
move_loc = get_middle_of_rect(top_left_corner, img.shape[0], img.shape[1])
user.moveTo(move_loc[0], move_loc[1])
user.move(xOffset=5)
def click(top_left_corner, img):
click_loc = get_middle_of_rect(top_left_corner, img.shape[0], img.shape[1])
logging.info(f"Clicking {click_loc}")
user.click(click_loc[0], click_loc[1])
def double_click(top_left_corner, img):
click_loc = get_middle_of_rect(top_left_corner, img.shape[0], img.shape[1])
logging.info(f"Double clicking {click_loc}")
user.doubleClick(click_loc[0], click_loc[1])
def hard_click(top_left_corner, img):
click_loc = get_middle_of_rect(top_left_corner, img.shape[0], img.shape[1])
logging.info(f"Hard Clicking {click_loc}")
user.moveTo(click_loc[0], click_loc[1])
user.move(xOffset=5)
user.mouseDown()
time.sleep(0.2)
user.mouseUp()
def autogui_click(top_left_corner, img):
click_loc = get_middle_of_rect(top_left_corner, img.shape[0], img.shape[1])
logging.info(f"Using AutoGui Clicking {click_loc}")
user.moveTo(click_loc[0], click_loc[1])
gui.click()
def wait_and_click(template_name, name, click_type: ClickType = ClickType.SINGLE, timeout=DEFAULT_TIMEOUT,
threshold=DEFAULT_MATCH_THRESHOLD):
logging.info(f"Waiting to find and click on {name}")
img, img_loc = wait_for_image_on_screen(template_name, timeout=timeout)
if click_type == ClickType.SINGLE:
click(img_loc, img)
elif click_type == ClickType.DOUBLE:
double_click(img_loc, img)
elif click_type == ClickType.HARD:
hard_click(img_loc, img)
elif click_type == ClickType.AUTO_GUI:
autogui_click(img_loc, img)
else:
raise ValueError("Unknown click type")
class ImageNotFoundTimeout(Exception):
pass
class ImageNotFound(Exception):
pass
def gcd(a, b):
return a if b == 0 else gcd(b, a % b)
def aspect_ratio(w, h):
denom = int(gcd(w, h))
x = int(w / denom)
y = int(h / denom)
if x == 8 and y == 5:
return "16x10"
elif x == 16 and y == 9:
return "16x9"
def locate_on_screen(template_name, threshold=DEFAULT_MATCH_THRESHOLD, debug=0):
with mss.mss() as sct:
monitor_1 = sct.monitors[1] # Identify the display to capture
screen = np.array(sct.grab(monitor_1))
screen = cv2.cvtColor(screen, cv2.COLOR_RGB2BGR)
screen = cv2.cvtColor(screen, cv2.COLOR_BGR2RGB)
(h, w) = screen.shape[:2]
r = aspect_ratio(w, h)
needle = get_template(template_name, r)
return needle, locate_in_image(needle, screen, threshold=DEFAULT_MATCH_THRESHOLD, debug=0)
# This approach was largely inspired by the article
# https://pyimagesearch.com/2015/01/26/multi-scale-template-matching-using-python-opencv/
def locate_in_image(needle, haystack, threshold=DEFAULT_MATCH_THRESHOLD, debug=0):
(tH, tW) = needle.shape[:2]
if debug:
cv2.imshow("Looking For", needle)
cv2.waitKey(0)
for scale in np.linspace(0.2, 1.0, 20)[::-1]:
# resize the image according to the scale, and keep track
# of the ratio of the resizing
resized = imutils.resize(haystack, width=int(haystack.shape[1] * scale), inter=cv2.INTER_NEAREST)
r = haystack.shape[1] / float(resized.shape[1])
# if the resized image is smaller than the template, then break
# from the loop
if resized.shape[0] < tH or resized.shape[1] < tW:
break
result = cv2.matchTemplate(resized, needle, cv2.TM_CCOEFF_NORMED)
(_, maxVal, _, maxLoc) = cv2.minMaxLoc(result)
if debug:
# draw a bounding box around the detected region
# clone = np.dstack([edged, edged, edged])
cv2.rectangle(resized, (maxLoc[0], maxLoc[1]),
(maxLoc[0] + tW, maxLoc[1] + tH), (0, 0, 255), 2)
cv2.imshow("Searching", resized)
cv2.waitKey(0)
if maxVal >= threshold:
found = (maxVal, maxLoc, r)
# unpack the bookkeeping variable and compute the (x, y) coordinates
# of the bounding box based on the resized ratio
(_, maxLoc, r) = found
(startX, startY) = (int(maxLoc[0] * r), int(maxLoc[1] * r))
(endX, endY) = (int((maxLoc[0] + tW) * r), int((maxLoc[1] + tH) * r))
if debug:
# draw a bounding box around the detected result and display the image
cv2.rectangle(haystack, (startX, startY), (endX, endY), (0, 0, 255), 2)
cv2.imshow("Found", haystack)
cv2.waitKey(0)
return startX, startY
raise ImageNotFound("Image not found on screen")
def wait_for_image_on_screen(template_name, match_threshold=DEFAULT_MATCH_THRESHOLD, interval=DEFAULT_INTERVAL,
timeout=DEFAULT_TIMEOUT):
"""Function that will wait for an image to appear on screen. This function will check every
interval for a match that meets is greater than the match threshold. The function will raise
an error if the image is not found within the timeout given. Will return the location
of the image if found"""
t0 = time.time()
t1 = t0
while not t1 - t0 > timeout:
try:
img, loc = locate_on_screen(template_name, match_threshold)
return img, loc
except ImageNotFound:
pass
time.sleep(interval)
t1 = time.time()
raise ImageNotFoundTimeout("Could not find image on screen within timeout")

View File

@@ -1,107 +0,0 @@
import logging
from subprocess import Popen
import sys
from cv2_utils import *
from forza5_utils import read_resolution
sys.path.insert(1, os.path.join(sys.path[0], '..'))
from harness_utils.logging import *
from harness_utils.process import terminate_processes
from harness_utils.rtss import start_rtss_process, copy_rtss_profile
from harness_utils.steam import get_run_game_id_command, DEFAULT_EXECUTABLE_PATH as steam_path
STEAM_GAME_ID = 1551360
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
LOG_DIRECTORY = os.path.join(SCRIPT_DIR, "run")
APPDATALOCAL = os.getenv("LOCALAPPDATA")
CONFIG_LOCATION = f"{APPDATALOCAL}\\ForzaHorizon5\\User_SteamLocalStorageDirectory\\ConnectedStorage\\ForzaUserConfigSelections"
CONFIG_FILENAME = "UserConfigSelections"
PROCESSES = ["ForzaHorizon5.exe", "RTSS.exe"]
def start_rtss():
profile_path = os.path.join(SCRIPT_DIR, "ForzaHorizon5.exe.cfg")
copy_rtss_profile(profile_path)
return start_rtss_process()
def start_game():
steam_run_arg = get_run_game_id_command(STEAM_GAME_ID)
logging.info(steam_path + " " + steam_run_arg)
return Popen([steam_path, steam_run_arg])
def run_benchmark():
start_rtss()
# Give RTSS time to start
time.sleep(10)
start_game()
t1 = time.time()
# Wait for menu to load
time.sleep(60)
user.press("x")
time.sleep(2)
try:
wait_for_image_on_screen("accessibility", 0.70, 1, 5)
user.press("escape")
user.press("down")
user.press("down")
user.press("enter")
except ImageNotFoundTimeout:
pass
wait_and_click("graphics", "graphics menu", ClickType.HARD)
try:
wait_and_click("benchmark_mode_pink", "run benchmark", ClickType.HARD)
except:
wait_and_click("benchmark_mode", "run benchmark", ClickType.HARD)
time.sleep(1)
user.press("down")
user.press("enter")
t2 = time.time()
logging.info(f"Harness setup took {round((t2 - t1), 2)} seconds")
start_time = time.time()
time.sleep(110) # wait for benchmark to finish 95 seconds
wait_for_image_on_screen("results", 0.70, 2, 60)
end_time = time.time()
logging.info(f"Benchmark took {round((end_time - start_time), 2)} seconds")
terminate_processes(*PROCESSES)
return start_time, end_time
setup_log_directory(LOG_DIRECTORY)
logging.basicConfig(filename=f'{LOG_DIRECTORY}/harness.log',
format=DEFAULT_LOGGING_FORMAT,
datefmt=DEFAULT_DATE_FORMAT,
level=logging.DEBUG)
console = logging.StreamHandler()
formatter = logging.Formatter(DEFAULT_LOGGING_FORMAT)
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
try:
start_time, end_time = run_benchmark()
width, height = read_resolution(f"{CONFIG_LOCATION}\\{CONFIG_FILENAME}")
result = {
"resolution": format_resolution(width, height),
"graphics_preset": "current",
"start_time": seconds_to_milliseconds(start_time),
"end_time": seconds_to_milliseconds(end_time)
}
write_report_json(LOG_DIRECTORY, "report.json", result)
except Exception as e:
logging.error("Something went wrong running the benchmark!")
logging.exception(e)
terminate_processes(*PROCESSES)
exit(1)

View File

@@ -1,18 +0,0 @@
import re
def read_resolution(config_path: str) -> tuple[int]:
height_pattern = re.compile(r"<ResolutionHeight value=\"(\d+)\"/>")
width_pattern = re.compile(r"<ResolutionWidth value=\"(\d+)\"/>")
width = 0
height = 0
with open(config_path) as f:
lines = f.readlines()
for line in lines:
height_match = height_pattern.search(line)
width_match = width_pattern.search(line)
if height_match is not None:
height = height_match.group(1)
if width_match is not None:
width = width_match.group(1)
return (width, height)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

View File

@@ -1,13 +0,0 @@
friendly_name: "Forza Horizon 5"
executable: "forza5.py"
process_name: "forzahorizon5.exe"
# default recording delay to reduce capturing menus during setup, this should be revisited every test bench as loading times may be different
recording_delay: 75
output_dir: "run"
options:
- name: preset
type: select
# removing preset options in favor of manual process for now
# values: [current, verylow, low, medium, high, ultra, extreme]
values: [current]
tooltip: Don't forget to set game graphics!

View File

@@ -1,105 +0,0 @@
<UserConfig Version="30" HardwareHash="0">
<settings>
<PresentInterval value="2"/>
<MonitorRefreshPeriod value="refreshreplace"/>
<CollidableShadows isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<UIScale value="1.000000"/>
<CarSpecularCubemapResolution isDynamic="1" dynamicValue="High"/>
<GlobalSpecularCubemapResolution isDynamic="0" dynamicValue="Default" name="Default" value="512"/>
<UseCarSpecularCubemapInCockpit isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarSpecularCubemapMSAA isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CubemapDrawDistanceScalar isDynamic="0" dynamicValue="Default" name="Default" value="3.000000"/>
<CubemapMeshSizeThresholdScalar isDynamic="0" dynamicValue="Default" name="Default" value="0.143000"/>
<ParticleRateScale isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<EnvMapFrequencyScale isDynamic="1" dynamicValue="Ultra"/>
<CarReflectionLOD isDynamic="1" dynamicValue="Ultra"/>
<TilingScenario isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<CollidablesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<MaxCarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="16"/>
<LOD3CarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<HalfRateMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<ParticlesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<CarLODThresholds isDynamic="0" dynamicValue="Default" name="Default" lod1="3" lod2="6" lod3="9" count="30"/>
<CarFocusLODMinMax isDynamic="1" dynamicValue="Ultra"/>
<CarNonFocusLODMinMax isDynamic="0" dynamicValue="Default" name="Default" min="1" max="5"/>
<CarLODTransDist isDynamic="0" dynamicValue="Default" name="Default" near="22.500000" far="37.500000" veryFar="75.000000" farthest="112.500000" lodproxy="125.000000" lodproxyfade="20.000000"/>
<CarTextureMIPsDropped isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<ShadowMapUpdateRateWhenReduced isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<AllowScreenTearing isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<EnableWindshieldReflections isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<WindshieldReflectionResolution isDynamic="0" dynamicValue="Default" name="Default" value="512"/>
<MirrorResolution isDynamic="0" dynamicValue="Default" name="Default" value="320"/>
<MirrorFarDistance isDynamic="0" dynamicValue="Default" name="Default" value="2000"/>
<ResolutionWidth value="1920"/>
<ResolutionHeight value="1080"/>
<Fullscreen value="1"/>
<ShowFPS isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UseDynamicOptimization value="1"/>
<DeformableSnowQuality isDynamic="0" dynamicValue="" Active="1" TessellationLOD0Dist="12.000000" TessellationLOD0EdgeLength="0.250000" TessellationLOD1Dist="20.000000" TessellationLOD1EdgeLength="1.000000" TessellationLOD2Dist="35.000000" TessellationLOD2EdgeLength="2.000000" VertexModifyMinDist="20.000000" VertexModifyMaxDist="35.000000"/>
<SSRQuality isDynamic="1" dynamicValue="High"/>
<MasterVolume value="1.000000"/>
<ParticlesQuality isDynamic="0" dynamicValue="" name="Default" value="Medium"/>
<PlayerCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="4096"/>
<OpponentCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="1024"/>
<PlayerCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<OpponentCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<PlayerCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<OpponentCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<LiveryHighResolutionDecals isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<UIHUDGlassCaptureEnabled isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<MegaTextureLowSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.025000"/>
<MegaTextureHighSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.003000"/>
<FollowLowFOV value="48.500000"/>
<FollowHighFOV value="58.000000"/>
<DriverFOV value="48.000000"/>
<DriverNoWheelFOV value="48.000000"/>
<HoodFOV value="66.000000"/>
<BumperHighFOV value="58.000000"/>
<DepthPrePass isDynamic="0" dynamicValue="" TrackCullDistanceDefault="0.000000" TrackCullDistanceReduced="200.000000"/>
<ScreenAreaTestsMain isDynamic="0" dynamicValue="Default" MainScene="200.000000" Depth="60.000000" Cinematic="130.000000" GroundReflection="23.000000"/>
<ScreenAreaTestsShadow isDynamic="0" dynamicValue="Default" name="Default" value="100.000000"/>
<ScreenAreaTestsCubemap isDynamic="0" dynamicValue="Default" name="Default" value="100.000000"/>
<ScreenAreaTestsMirror isDynamic="0" dynamicValue="Default" name="Default" value="5.000000"/>
<FWDPlusQuality isDynamic="1" dynamicValue="High"/>
<UseGlobalSpecularCubemapForCar isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<KeepCarsClean isDynamic="0" dynamicValue="" name="Default" value="0"/>
<EnablePCHDR isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<DXRQuality value="0"/>
<UseLowQualityAIDrivers isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<TAASharpness value="5.000000"/>
<DLC1FollowLowFOV value="65.000000"/>
<DLC1FollowHighFOV value="65.000000"/>
<DLC1DriverFOV value="45.000000"/>
<DLC1DriverNoWheelFOV value="45.000000"/>
<DLC1HoodFOV value="53.000000"/>
<DLC1BumperHighFOV value="53.000000"/>
</settings>
<selections>
<option id="UseDynamicOptimization" value="0"/>
<option id="FrameRate" value="4"/>
<option id="VSync" value="0"/>
<option id="EnableHDR" value="0"/>
<option id="MotionBlurAmount" value="1"/>
<option id="ShowFPS" value="0"/>
<option id="ResolutionScaling" value="0"/>
<option id="Anisotropic" value="2"/>
<option id="ShadowQuality" value="4"/>
<option id="NightShadows" value="1"/>
<option id="MotionBlurQuality" value="3"/>
<option id="EnvStreamingTex" value="4"/>
<option id="GeometryQuality" value="5"/>
<option id="MSAA" value="1"/>
<option id="FXAA" value="0"/>
<option id="TAA" value="0"/>
<option id="SSAO" value="1"/>
<option id="ReflectionQuality" value="4"/>
<option id="CarLOD" value="4"/>
<option id="DeformableSnowQuality" value="4"/>
<option id="SSRQuality" value="3"/>
<option id="LensEffects" value="3"/>
<option id="ShaderQuality" value="4"/>
<option id="ParticlesSettings" value="4"/>
<option id="DXRQuality" value="2"/>
</selections>
</UserConfig>

View File

@@ -1,105 +0,0 @@
<UserConfig Version="30" HardwareHash="0">
<settings>
<PresentInterval value="2"/>
<MonitorRefreshPeriod value="refreshreplace"/>
<CollidableShadows isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<UIScale value="1.000000"/>
<CarSpecularCubemapResolution isDynamic="1" dynamicValue="High"/>
<GlobalSpecularCubemapResolution isDynamic="0" dynamicValue="Default" name="Default" value="512"/>
<UseCarSpecularCubemapInCockpit isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarSpecularCubemapMSAA isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CubemapDrawDistanceScalar isDynamic="0" dynamicValue="Default" name="Default" value="3.000000"/>
<CubemapMeshSizeThresholdScalar isDynamic="0" dynamicValue="Default" name="Default" value="0.143000"/>
<ParticleRateScale isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<EnvMapFrequencyScale isDynamic="1" dynamicValue="High"/>
<CarReflectionLOD isDynamic="1" dynamicValue="High"/>
<TilingScenario isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<CollidablesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<MaxCarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="7"/>
<LOD3CarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<HalfRateMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<ParticlesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarLODThresholds isDynamic="0" dynamicValue="Default" name="Default" lod1="3" lod2="6" lod3="9" count="30"/>
<CarFocusLODMinMax isDynamic="1" dynamicValue="Medium"/>
<CarNonFocusLODMinMax isDynamic="0" dynamicValue="Default" name="Default" min="1" max="5"/>
<CarLODTransDist isDynamic="0" dynamicValue="Default" name="Default" near="20.000000" far="30.000000" veryFar="60.000000" farthest="100.000000" lodproxy="120.000000" lodproxyfade="20.000000"/>
<CarTextureMIPsDropped isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<ShadowMapUpdateRateWhenReduced isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<AllowScreenTearing isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<EnableWindshieldReflections isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<WindshieldReflectionResolution isDynamic="0" dynamicValue="Default" name="Default" value="512"/>
<MirrorResolution isDynamic="0" dynamicValue="Default" name="Default" value="320"/>
<MirrorFarDistance isDynamic="0" dynamicValue="Default" name="Default" value="2000"/>
<ResolutionWidth value="1920"/>
<ResolutionHeight value="1080"/>
<Fullscreen value="1"/>
<ShowFPS isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UseDynamicOptimization value="1"/>
<DeformableSnowQuality isDynamic="0" dynamicValue="" Active="1" TessellationLOD0Dist="12.000000" TessellationLOD0EdgeLength="0.250000" TessellationLOD1Dist="20.000000" TessellationLOD1EdgeLength="1.000000" TessellationLOD2Dist="35.000000" TessellationLOD2EdgeLength="2.000000" VertexModifyMinDist="20.000000" VertexModifyMaxDist="35.000000"/>
<SSRQuality isDynamic="1" dynamicValue="High"/>
<MasterVolume value="1.000000"/>
<ParticlesQuality isDynamic="0" dynamicValue="" name="Default" value="Medium"/>
<PlayerCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="2048"/>
<OpponentCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="1024"/>
<PlayerCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<OpponentCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<PlayerCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="4"/>
<OpponentCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<LiveryHighResolutionDecals isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UIHUDGlassCaptureEnabled isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<MegaTextureLowSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.025000"/>
<MegaTextureHighSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.003000"/>
<FollowLowFOV value="48.500000"/>
<FollowHighFOV value="58.000000"/>
<DriverFOV value="48.000000"/>
<DriverNoWheelFOV value="48.000000"/>
<HoodFOV value="66.000000"/>
<BumperHighFOV value="58.000000"/>
<DepthPrePass isDynamic="0" dynamicValue="" TrackCullDistanceDefault="0.000000" TrackCullDistanceReduced="200.000000"/>
<ScreenAreaTestsMain isDynamic="0" dynamicValue="Default" MainScene="200.000000" Depth="60.000000" Cinematic="130.000000" GroundReflection="23.000000"/>
<ScreenAreaTestsShadow isDynamic="0" dynamicValue="Default" name="Default" value="100.000000"/>
<ScreenAreaTestsCubemap isDynamic="0" dynamicValue="Default" name="Default" value="70.000000"/>
<ScreenAreaTestsMirror isDynamic="0" dynamicValue="Default" name="Default" value="5.000000"/>
<FWDPlusQuality isDynamic="1" dynamicValue="High"/>
<UseGlobalSpecularCubemapForCar isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<KeepCarsClean isDynamic="0" dynamicValue="" name="Default" value="0"/>
<EnablePCHDR isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<DXRQuality value="0"/>
<UseLowQualityAIDrivers isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<TAASharpness value="5.000000"/>
<DLC1FollowLowFOV value="65.000000"/>
<DLC1FollowHighFOV value="65.000000"/>
<DLC1DriverFOV value="45.000000"/>
<DLC1DriverNoWheelFOV value="45.000000"/>
<DLC1HoodFOV value="53.000000"/>
<DLC1BumperHighFOV value="53.000000"/>
</settings>
<selections>
<option id="UseDynamicOptimization" value="0"/>
<option id="FrameRate" value="4"/>
<option id="VSync" value="0"/>
<option id="EnableHDR" value="0"/>
<option id="MotionBlurAmount" value="1"/>
<option id="ShowFPS" value="0"/>
<option id="ResolutionScaling" value="0"/>
<option id="Anisotropic" value="2"/>
<option id="ShadowQuality" value="2"/>
<option id="NightShadows" value="0"/>
<option id="MotionBlurQuality" value="2"/>
<option id="EnvStreamingTex" value="2"/>
<option id="GeometryQuality" value="3"/>
<option id="MSAA" value="1"/>
<option id="FXAA" value="0"/>
<option id="TAA" value="0"/>
<option id="SSAO" value="0"/>
<option id="ReflectionQuality" value="3"/>
<option id="CarLOD" value="2"/>
<option id="DeformableSnowQuality" value="2"/>
<option id="SSRQuality" value="3"/>
<option id="LensEffects" value="2"/>
<option id="ShaderQuality" value="2"/>
<option id="ParticlesSettings" value="2"/>
<option id="DXRQuality" value="1"/>
</selections>
</UserConfig>

View File

@@ -1,105 +0,0 @@
<UserConfig Version="30" HardwareHash="0">
<settings>
<PresentInterval value="2"/>
<MonitorRefreshPeriod value="refreshreplace"/>
<CollidableShadows isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UIScale value="1.000000"/>
<CarSpecularCubemapResolution isDynamic="1" dynamicValue="Low"/>
<GlobalSpecularCubemapResolution isDynamic="0" dynamicValue="Default" name="Default" value="128"/>
<UseCarSpecularCubemapInCockpit isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarSpecularCubemapMSAA isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CubemapDrawDistanceScalar isDynamic="0" dynamicValue="Default" name="Default" value="1.000000"/>
<CubemapMeshSizeThresholdScalar isDynamic="0" dynamicValue="Default" name="Default" value="1.000000"/>
<ParticleRateScale isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<EnvMapFrequencyScale isDynamic="1" dynamicValue="Low"/>
<CarReflectionLOD isDynamic="1" dynamicValue="Low"/>
<TilingScenario isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CollidablesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<MaxCarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="3"/>
<LOD3CarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<HalfRateMirror isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<ParticlesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarLODThresholds isDynamic="0" dynamicValue="Default" name="Default" lod1="0" lod2="0" lod3="4" count="12"/>
<CarFocusLODMinMax isDynamic="1" dynamicValue="VeryLow"/>
<CarNonFocusLODMinMax isDynamic="0" dynamicValue="Default" name="Default" min="3" max="5"/>
<CarLODTransDist isDynamic="0" dynamicValue="Default" name="Default" near="10.000000" far="18.000000" veryFar="35.000000" farthest="55.000000" lodproxy="75.000000" lodproxyfade="20.000000"/>
<CarTextureMIPsDropped isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<ShadowMapUpdateRateWhenReduced isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<AllowScreenTearing isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<EnableWindshieldReflections isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<WindshieldReflectionResolution isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<MirrorResolution isDynamic="0" dynamicValue="Default" name="Default" value="160"/>
<MirrorFarDistance isDynamic="0" dynamicValue="Default" name="Default" value="500"/>
<ResolutionWidth value="1920"/>
<ResolutionHeight value="1080"/>
<Fullscreen value="1"/>
<ShowFPS isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UseDynamicOptimization value="1"/>
<DeformableSnowQuality isDynamic="0" dynamicValue="" Active="1" TessellationLOD0Dist="12.000000" TessellationLOD0EdgeLength="0.250000" TessellationLOD1Dist="20.000000" TessellationLOD1EdgeLength="1.000000" TessellationLOD2Dist="35.000000" TessellationLOD2EdgeLength="2.000000" VertexModifyMinDist="20.000000" VertexModifyMaxDist="35.000000"/>
<SSRQuality isDynamic="1" dynamicValue="Low"/>
<MasterVolume value="1.000000"/>
<ParticlesQuality isDynamic="0" dynamicValue="" name="Default" value="Medium"/>
<PlayerCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="1024"/>
<OpponentCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="1024"/>
<PlayerCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<OpponentCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<PlayerCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<OpponentCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<LiveryHighResolutionDecals isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UIHUDGlassCaptureEnabled isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<MegaTextureLowSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.025000"/>
<MegaTextureHighSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.003000"/>
<FollowLowFOV value="48.500000"/>
<FollowHighFOV value="58.000000"/>
<DriverFOV value="48.000000"/>
<DriverNoWheelFOV value="48.000000"/>
<HoodFOV value="66.000000"/>
<BumperHighFOV value="58.000000"/>
<DepthPrePass isDynamic="0" dynamicValue="" TrackCullDistanceDefault="0.000000" TrackCullDistanceReduced="200.000000"/>
<ScreenAreaTestsMain isDynamic="0" dynamicValue="Default" MainScene="120.000000" Depth="25.000000" Cinematic="80.000000" GroundReflection="23.000000"/>
<ScreenAreaTestsShadow isDynamic="0" dynamicValue="Default" name="Default" value="40.000000"/>
<ScreenAreaTestsCubemap isDynamic="0" dynamicValue="Default" name="Default" value="25.000000"/>
<ScreenAreaTestsMirror isDynamic="0" dynamicValue="Default" name="Default" value="3.000000"/>
<FWDPlusQuality isDynamic="1" dynamicValue="Low"/>
<UseGlobalSpecularCubemapForCar isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<KeepCarsClean isDynamic="0" dynamicValue="" name="Default" value="0"/>
<EnablePCHDR isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<DXRQuality value="0"/>
<UseLowQualityAIDrivers isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<TAASharpness value="5.000000"/>
<DLC1FollowLowFOV value="65.000000"/>
<DLC1FollowHighFOV value="65.000000"/>
<DLC1DriverFOV value="45.000000"/>
<DLC1DriverNoWheelFOV value="45.000000"/>
<DLC1HoodFOV value="53.000000"/>
<DLC1BumperHighFOV value="53.000000"/>
</settings>
<selections>
<option id="UseDynamicOptimization" value="0"/>
<option id="FrameRate" value="4"/>
<option id="VSync" value="0"/>
<option id="EnableHDR" value="0"/>
<option id="MotionBlurAmount" value="1"/>
<option id="ShowFPS" value="0"/>
<option id="ResolutionScaling" value="0"/>
<option id="Anisotropic" value="1"/>
<option id="ShadowQuality" value="1"/>
<option id="NightShadows" value="0"/>
<option id="MotionBlurQuality" value="0"/>
<option id="EnvStreamingTex" value="0"/>
<option id="GeometryQuality" value="1"/>
<option id="MSAA" value="0"/>
<option id="FXAA" value="0"/>
<option id="TAA" value="0"/>
<option id="SSAO" value="0"/>
<option id="ReflectionQuality" value="1"/>
<option id="CarLOD" value="0"/>
<option id="DeformableSnowQuality" value="0"/>
<option id="SSRQuality" value="1"/>
<option id="LensEffects" value="1"/>
<option id="ShaderQuality" value="1"/>
<option id="ParticlesSettings" value="1"/>
<option id="DXRQuality" value="0"/>
</selections>
</UserConfig>

View File

@@ -1,105 +0,0 @@
<UserConfig Version="30" HardwareHash="0">
<settings>
<PresentInterval value="2"/>
<MonitorRefreshPeriod value="refreshreplace"/>
<CollidableShadows isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<UIScale value="1.000000"/>
<CarSpecularCubemapResolution isDynamic="1" dynamicValue="Medium"/>
<GlobalSpecularCubemapResolution isDynamic="0" dynamicValue="Default" name="Default" value="256"/>
<UseCarSpecularCubemapInCockpit isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarSpecularCubemapMSAA isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CubemapDrawDistanceScalar isDynamic="0" dynamicValue="Default" name="Default" value="1.000000"/>
<CubemapMeshSizeThresholdScalar isDynamic="0" dynamicValue="Default" name="Default" value="1.000000"/>
<ParticleRateScale isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<EnvMapFrequencyScale isDynamic="1" dynamicValue="Medium"/>
<CarReflectionLOD isDynamic="1" dynamicValue="Medium"/>
<TilingScenario isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<CollidablesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<MaxCarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="7"/>
<LOD3CarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<HalfRateMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<ParticlesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarLODThresholds isDynamic="0" dynamicValue="Default" name="Default" lod1="2" lod2="4" lod3="6" count="25"/>
<CarFocusLODMinMax isDynamic="1" dynamicValue="Low"/>
<CarNonFocusLODMinMax isDynamic="0" dynamicValue="Default" name="Default" min="2" max="5"/>
<CarLODTransDist isDynamic="0" dynamicValue="Default" name="Default" near="15.000000" far="25.000000" veryFar="50.000000" farthest="75.000000" lodproxy="100.000000" lodproxyfade="20.000000"/>
<CarTextureMIPsDropped isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<ShadowMapUpdateRateWhenReduced isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<AllowScreenTearing isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<EnableWindshieldReflections isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<WindshieldReflectionResolution isDynamic="0" dynamicValue="Default" name="Default" value="256"/>
<MirrorResolution isDynamic="0" dynamicValue="Default" name="Default" value="160"/>
<MirrorFarDistance isDynamic="0" dynamicValue="Default" name="Default" value="500"/>
<ResolutionWidth value="1920"/>
<ResolutionHeight value="1080"/>
<Fullscreen value="1"/>
<ShowFPS isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UseDynamicOptimization value="1"/>
<DeformableSnowQuality isDynamic="0" dynamicValue="" Active="1" TessellationLOD0Dist="12.000000" TessellationLOD0EdgeLength="0.250000" TessellationLOD1Dist="20.000000" TessellationLOD1EdgeLength="1.000000" TessellationLOD2Dist="35.000000" TessellationLOD2EdgeLength="2.000000" VertexModifyMinDist="20.000000" VertexModifyMaxDist="35.000000"/>
<SSRQuality isDynamic="1" dynamicValue="Medium"/>
<MasterVolume value="1.000000"/>
<ParticlesQuality isDynamic="0" dynamicValue="" name="Default" value="Medium"/>
<PlayerCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="2048"/>
<OpponentCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="1024"/>
<PlayerCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<OpponentCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<PlayerCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<OpponentCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<LiveryHighResolutionDecals isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UIHUDGlassCaptureEnabled isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<MegaTextureLowSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.025000"/>
<MegaTextureHighSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.003000"/>
<FollowLowFOV value="48.500000"/>
<FollowHighFOV value="58.000000"/>
<DriverFOV value="48.000000"/>
<DriverNoWheelFOV value="48.000000"/>
<HoodFOV value="66.000000"/>
<BumperHighFOV value="58.000000"/>
<DepthPrePass isDynamic="0" dynamicValue="" TrackCullDistanceDefault="0.000000" TrackCullDistanceReduced="200.000000"/>
<ScreenAreaTestsMain isDynamic="0" dynamicValue="Default" MainScene="180.000000" Depth="50.000000" Cinematic="100.000000" GroundReflection="23.000000"/>
<ScreenAreaTestsShadow isDynamic="0" dynamicValue="Default" name="Default" value="100.000000"/>
<ScreenAreaTestsCubemap isDynamic="0" dynamicValue="Default" name="Default" value="70.000000"/>
<ScreenAreaTestsMirror isDynamic="0" dynamicValue="Default" name="Default" value="5.000000"/>
<FWDPlusQuality isDynamic="1" dynamicValue="Low"/>
<UseGlobalSpecularCubemapForCar isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<KeepCarsClean isDynamic="0" dynamicValue="" name="Default" value="0"/>
<EnablePCHDR isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<DXRQuality value="0"/>
<UseLowQualityAIDrivers isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<TAASharpness value="5.000000"/>
<DLC1FollowLowFOV value="65.000000"/>
<DLC1FollowHighFOV value="65.000000"/>
<DLC1DriverFOV value="45.000000"/>
<DLC1DriverNoWheelFOV value="45.000000"/>
<DLC1HoodFOV value="53.000000"/>
<DLC1BumperHighFOV value="53.000000"/>
</settings>
<selections>
<option id="UseDynamicOptimization" value="0"/>
<option id="FrameRate" value="4"/>
<option id="VSync" value="0"/>
<option id="EnableHDR" value="0"/>
<option id="MotionBlurAmount" value="1"/>
<option id="ShowFPS" value="0"/>
<option id="ResolutionScaling" value="0"/>
<option id="Anisotropic" value="1"/>
<option id="ShadowQuality" value="2"/>
<option id="NightShadows" value="0"/>
<option id="MotionBlurQuality" value="1"/>
<option id="EnvStreamingTex" value="1"/>
<option id="GeometryQuality" value="2"/>
<option id="MSAA" value="1"/>
<option id="FXAA" value="0"/>
<option id="TAA" value="0"/>
<option id="SSAO" value="0"/>
<option id="ReflectionQuality" value="2"/>
<option id="CarLOD" value="1"/>
<option id="DeformableSnowQuality" value="1"/>
<option id="SSRQuality" value="2"/>
<option id="LensEffects" value="1"/>
<option id="ShaderQuality" value="1"/>
<option id="ParticlesSettings" value="1"/>
<option id="DXRQuality" value="0"/>
</selections>
</UserConfig>

View File

@@ -1,105 +0,0 @@
<UserConfig Version="30" HardwareHash="0">
<settings>
<PresentInterval value="2"/>
<MonitorRefreshPeriod value="refreshreplace"/>
<CollidableShadows isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<UIScale value="1.000000"/>
<CarSpecularCubemapResolution isDynamic="1" dynamicValue="High"/>
<GlobalSpecularCubemapResolution isDynamic="0" dynamicValue="Default" name="Default" value="512"/>
<UseCarSpecularCubemapInCockpit isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarSpecularCubemapMSAA isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CubemapDrawDistanceScalar isDynamic="0" dynamicValue="Default" name="Default" value="3.000000"/>
<CubemapMeshSizeThresholdScalar isDynamic="0" dynamicValue="Default" name="Default" value="0.143000"/>
<ParticleRateScale isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<EnvMapFrequencyScale isDynamic="1" dynamicValue="High"/>
<CarReflectionLOD isDynamic="1" dynamicValue="High"/>
<TilingScenario isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<CollidablesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<MaxCarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="7"/>
<LOD3CarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<HalfRateMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<ParticlesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarLODThresholds isDynamic="0" dynamicValue="Default" name="Default" lod1="3" lod2="6" lod3="9" count="30"/>
<CarFocusLODMinMax isDynamic="1" dynamicValue="Ultra"/>
<CarNonFocusLODMinMax isDynamic="0" dynamicValue="Default" name="Default" min="1" max="5"/>
<CarLODTransDist isDynamic="0" dynamicValue="Default" name="Default" near="22.500000" far="37.500000" veryFar="75.000000" farthest="112.500000" lodproxy="125.000000" lodproxyfade="20.000000"/>
<CarTextureMIPsDropped isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<ShadowMapUpdateRateWhenReduced isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<AllowScreenTearing isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<EnableWindshieldReflections isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<WindshieldReflectionResolution isDynamic="0" dynamicValue="Default" name="Default" value="512"/>
<MirrorResolution isDynamic="0" dynamicValue="Default" name="Default" value="320"/>
<MirrorFarDistance isDynamic="0" dynamicValue="Default" name="Default" value="2000"/>
<ResolutionWidth value="1920"/>
<ResolutionHeight value="1080"/>
<Fullscreen value="1"/>
<ShowFPS isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UseDynamicOptimization value="1"/>
<DeformableSnowQuality isDynamic="0" dynamicValue="" Active="1" TessellationLOD0Dist="12.000000" TessellationLOD0EdgeLength="0.250000" TessellationLOD1Dist="20.000000" TessellationLOD1EdgeLength="1.000000" TessellationLOD2Dist="35.000000" TessellationLOD2EdgeLength="2.000000" VertexModifyMinDist="20.000000" VertexModifyMaxDist="35.000000"/>
<SSRQuality isDynamic="1" dynamicValue="High"/>
<MasterVolume value="1.000000"/>
<ParticlesQuality isDynamic="0" dynamicValue="" name="Default" value="Medium"/>
<PlayerCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="2048"/>
<OpponentCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="1024"/>
<PlayerCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<OpponentCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<PlayerCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<OpponentCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<LiveryHighResolutionDecals isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<UIHUDGlassCaptureEnabled isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<MegaTextureLowSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.025000"/>
<MegaTextureHighSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.003000"/>
<FollowLowFOV value="48.500000"/>
<FollowHighFOV value="58.000000"/>
<DriverFOV value="48.000000"/>
<DriverNoWheelFOV value="48.000000"/>
<HoodFOV value="66.000000"/>
<BumperHighFOV value="58.000000"/>
<DepthPrePass isDynamic="0" dynamicValue="" TrackCullDistanceDefault="0.000000" TrackCullDistanceReduced="200.000000"/>
<ScreenAreaTestsMain isDynamic="0" dynamicValue="Default" MainScene="200.000000" Depth="60.000000" Cinematic="130.000000" GroundReflection="23.000000"/>
<ScreenAreaTestsShadow isDynamic="0" dynamicValue="Default" name="Default" value="100.000000"/>
<ScreenAreaTestsCubemap isDynamic="0" dynamicValue="Default" name="Default" value="70.000000"/>
<ScreenAreaTestsMirror isDynamic="0" dynamicValue="Default" name="Default" value="5.000000"/>
<FWDPlusQuality isDynamic="1" dynamicValue="High"/>
<UseGlobalSpecularCubemapForCar isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<KeepCarsClean isDynamic="0" dynamicValue="" name="Default" value="0"/>
<EnablePCHDR isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<DXRQuality value="0"/>
<UseLowQualityAIDrivers isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<TAASharpness value="5.000000"/>
<DLC1FollowLowFOV value="65.000000"/>
<DLC1FollowHighFOV value="65.000000"/>
<DLC1DriverFOV value="45.000000"/>
<DLC1DriverNoWheelFOV value="45.000000"/>
<DLC1HoodFOV value="53.000000"/>
<DLC1BumperHighFOV value="53.000000"/>
</settings>
<selections>
<option id="UseDynamicOptimization" value="0"/>
<option id="FrameRate" value="4"/>
<option id="VSync" value="0"/>
<option id="EnableHDR" value="0"/>
<option id="MotionBlurAmount" value="1"/>
<option id="ShowFPS" value="0"/>
<option id="ResolutionScaling" value="0"/>
<option id="Anisotropic" value="2"/>
<option id="ShadowQuality" value="3"/>
<option id="NightShadows" value="1"/>
<option id="MotionBlurQuality" value="3"/>
<option id="EnvStreamingTex" value="3"/>
<option id="GeometryQuality" value="4"/>
<option id="MSAA" value="1"/>
<option id="FXAA" value="0"/>
<option id="TAA" value="0"/>
<option id="SSAO" value="1"/>
<option id="ReflectionQuality" value="3"/>
<option id="CarLOD" value="3"/>
<option id="DeformableSnowQuality" value="3"/>
<option id="SSRQuality" value="3"/>
<option id="LensEffects" value="3"/>
<option id="ShaderQuality" value="3"/>
<option id="ParticlesSettings" value="3"/>
<option id="DXRQuality" value="2"/>
</selections>
</UserConfig>

View File

@@ -1,105 +0,0 @@
<UserConfig Version="30" HardwareHash="0">
<settings>
<PresentInterval value="2"/>
<MonitorRefreshPeriod value="refreshreplace"/>
<CollidableShadows isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UIScale value="1.000000"/>
<CarSpecularCubemapResolution isDynamic="1" dynamicValue="Low"/>
<GlobalSpecularCubemapResolution isDynamic="0" dynamicValue="Default" name="Default" value="128"/>
<UseCarSpecularCubemapInCockpit isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarSpecularCubemapMSAA isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CubemapDrawDistanceScalar isDynamic="0" dynamicValue="Default" name="Default" value="1.000000"/>
<CubemapMeshSizeThresholdScalar isDynamic="0" dynamicValue="Default" name="Default" value="1.000000"/>
<ParticleRateScale isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<EnvMapFrequencyScale isDynamic="1" dynamicValue="Off"/>
<CarReflectionLOD isDynamic="1" dynamicValue="VeryLow"/>
<TilingScenario isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CollidablesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<MaxCarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="3"/>
<LOD3CarsInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<HalfRateMirror isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<ParticlesInMirror isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<CarLODThresholds isDynamic="0" dynamicValue="Default" name="Default" lod1="0" lod2="0" lod3="4" count="12"/>
<CarFocusLODMinMax isDynamic="1" dynamicValue="VeryLow"/>
<CarNonFocusLODMinMax isDynamic="0" dynamicValue="Default" name="Default" min="3" max="5"/>
<CarLODTransDist isDynamic="0" dynamicValue="Default" name="Default" near="10.000000" far="18.000000" veryFar="35.000000" farthest="55.000000" lodproxy="75.000000" lodproxyfade="20.000000"/>
<CarTextureMIPsDropped isDynamic="0" dynamicValue="Default" name="Default" value="2"/>
<ShadowMapUpdateRateWhenReduced isDynamic="0" dynamicValue="" name="Default" value="1.000000"/>
<AllowScreenTearing isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<EnableWindshieldReflections isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<WindshieldReflectionResolution isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<MirrorResolution isDynamic="0" dynamicValue="Default" name="Default" value="160"/>
<MirrorFarDistance isDynamic="0" dynamicValue="Default" name="Default" value="500"/>
<ResolutionWidth value="1920"/>
<ResolutionHeight value="1080"/>
<Fullscreen value="1"/>
<ShowFPS isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UseDynamicOptimization value="1"/>
<DeformableSnowQuality isDynamic="0" dynamicValue="" Active="1" TessellationLOD0Dist="12.000000" TessellationLOD0EdgeLength="0.250000" TessellationLOD1Dist="20.000000" TessellationLOD1EdgeLength="1.000000" TessellationLOD2Dist="35.000000" TessellationLOD2EdgeLength="2.000000" VertexModifyMinDist="20.000000" VertexModifyMaxDist="35.000000"/>
<SSRQuality isDynamic="1" dynamicValue="Off"/>
<MasterVolume value="1.000000"/>
<ParticlesQuality isDynamic="0" dynamicValue="" name="Default" value="Medium"/>
<PlayerCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="1024"/>
<OpponentCarLiveryResolution isDynamic="0" dynamicValue="Default" name="Default" value="1024"/>
<PlayerCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<OpponentCarLiveryIntermediateSSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<PlayerCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<OpponentCarLiveryIntermediateMSAA isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<LiveryHighResolutionDecals isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<UIHUDGlassCaptureEnabled isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<MegaTextureLowSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.025000"/>
<MegaTextureHighSpeedBudget isDynamic="0" dynamicValue="" name="Default" value="0.003000"/>
<FollowLowFOV value="48.500000"/>
<FollowHighFOV value="58.000000"/>
<DriverFOV value="48.000000"/>
<DriverNoWheelFOV value="48.000000"/>
<HoodFOV value="66.000000"/>
<BumperHighFOV value="58.000000"/>
<DepthPrePass isDynamic="0" dynamicValue="" TrackCullDistanceDefault="0.000000" TrackCullDistanceReduced="200.000000"/>
<ScreenAreaTestsMain isDynamic="0" dynamicValue="Default" MainScene="70.000000" Depth="10.000000" Cinematic="50.000000" GroundReflection="23.000000"/>
<ScreenAreaTestsShadow isDynamic="0" dynamicValue="Default" name="Default" value="0.000000"/>
<ScreenAreaTestsCubemap isDynamic="0" dynamicValue="Default" name="Default" value="0.000000"/>
<ScreenAreaTestsMirror isDynamic="0" dynamicValue="Default" name="Default" value="3.000000"/>
<FWDPlusQuality isDynamic="1" dynamicValue="VeryLow"/>
<UseGlobalSpecularCubemapForCar isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<KeepCarsClean isDynamic="0" dynamicValue="" name="Default" value="0"/>
<EnablePCHDR isDynamic="0" dynamicValue="Default" name="Default" value="0"/>
<DXRQuality value="0"/>
<UseLowQualityAIDrivers isDynamic="0" dynamicValue="Default" name="Default" value="1"/>
<TAASharpness value="5.000000"/>
<DLC1FollowLowFOV value="65.000000"/>
<DLC1FollowHighFOV value="65.000000"/>
<DLC1DriverFOV value="45.000000"/>
<DLC1DriverNoWheelFOV value="45.000000"/>
<DLC1HoodFOV value="53.000000"/>
<DLC1BumperHighFOV value="53.000000"/>
</settings>
<selections>
<option id="UseDynamicOptimization" value="0"/>
<option id="FrameRate" value="4"/>
<option id="VSync" value="0"/>
<option id="EnableHDR" value="0"/>
<option id="MotionBlurAmount" value="1"/>
<option id="ShowFPS" value="0"/>
<option id="ResolutionScaling" value="0"/>
<option id="Anisotropic" value="0"/>
<option id="ShadowQuality" value="0"/>
<option id="NightShadows" value="0"/>
<option id="MotionBlurQuality" value="0"/>
<option id="EnvStreamingTex" value="0"/>
<option id="GeometryQuality" value="0"/>
<option id="MSAA" value="0"/>
<option id="FXAA" value="0"/>
<option id="TAA" value="0"/>
<option id="SSAO" value="0"/>
<option id="ReflectionQuality" value="0"/>
<option id="CarLOD" value="0"/>
<option id="DeformableSnowQuality" value="0"/>
<option id="SSRQuality" value="0"/>
<option id="LensEffects" value="0"/>
<option id="ShaderQuality" value="0"/>
<option id="ParticlesSettings" value="0"/>
<option id="DXRQuality" value="0"/>
</selections>
</UserConfig>

View File

@@ -1,21 +0,0 @@
[tool.poetry]
name = "forza5-harness"
version = "0.1.0"
description = ""
authors = ["Nikolas Harris <nikolas@linusmediagroup.com"]
[tool.poetry.dependencies]
python = "^3.10"
PyAutoGUI = "^0.9.53"
PyDirectInput = "^1.0.4"
opencv-python = "^4.5.5"
Pillow = "^9.1.1"
psutil = "^5.9.1"
PyYAML = "^6.0"
imutils = "^0.5.4"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

View File

@@ -1,15 +0,0 @@
from cv2_utils import *
script_dir = os.path.dirname(os.path.realpath(__file__))
images_dir = os.path.join(script_dir, "images")
test_images_dir = os.path.join(images_dir, "tests")
test_menus = {
"mainmenu": cv2.imread(os.path.join(test_images_dir, "main_menu_2k.png"), cv2.IMREAD_UNCHANGED),
"graphics_menu": cv2.imread(os.path.join(test_images_dir, "graphics_menu_2k.png"), cv2.IMREAD_UNCHANGED),
"settings_menu": cv2.imread(os.path.join(test_images_dir, "settings_menu_2k.png"), cv2.IMREAD_UNCHANGED),
"accessibility_menu": cv2.imread(os.path.join(test_images_dir, "settings_menu_2k.png"), cv2.IMREAD_UNCHANGED)
}
found = locate_in_image(get_template('accessibility'), test_menus['accessibility_menu'], threshold=0.8, debug=1)
print(found)