feat(render): implement Campaign AR and terrain fidelity
This commit is contained in:
parent
99cf26e00c
commit
7a5f96ede5
368 changed files with 50611 additions and 950 deletions
|
|
@ -63,9 +63,24 @@ public sealed record RuntimeOptions(
|
|||
bool UiProbeDump,
|
||||
string? UiProbeScript,
|
||||
string? AutomationArtifactDirectory,
|
||||
/// <summary>Diagnostic-only request for an exact automation framebuffer.
|
||||
/// The graphical host uses the persisted display resolution as the initial
|
||||
/// size of a borderless window so the OS cannot clamp a decorated window to
|
||||
/// the desktop work area. False for every ordinary launch.</summary>
|
||||
bool ExactAutomationFramebuffer,
|
||||
int? ForcedDayGroupIndex,
|
||||
float? PinnedWorldDayFraction,
|
||||
float? SkyAnimationPhaseSeconds,
|
||||
/// <summary>Diagnostic initial distance for the offline orbit camera, in
|
||||
/// metres. Null for every ordinary launch; used by deterministic renderer
|
||||
/// acceptance captures that need receivers inside a finite shadow reach.</summary>
|
||||
float? InitialOrbitDistanceMeters,
|
||||
/// <summary>Diagnostic-only initial orbit heading in degrees. Null keeps
|
||||
/// the normal camera default.</summary>
|
||||
float? InitialOrbitYawDegrees,
|
||||
/// <summary>Diagnostic-only initial orbit elevation in degrees. Null keeps
|
||||
/// the normal camera default.</summary>
|
||||
float? InitialOrbitPitchDegrees,
|
||||
float FogStartMultiplier,
|
||||
float FogEndMultiplier,
|
||||
ResidencyBudgetOptions ResidencyBudgets,
|
||||
|
|
@ -159,6 +174,8 @@ public sealed record RuntimeOptions(
|
|||
UiProbeScript: NullIfEmpty(env("ACDREAM_UI_PROBE_SCRIPT")),
|
||||
AutomationArtifactDirectory:
|
||||
NullIfEmpty(env("ACDREAM_AUTOMATION_ARTIFACT_DIR")),
|
||||
ExactAutomationFramebuffer:
|
||||
IsExactlyOne(env("ACDREAM_AUTOMATION_EXACT_FRAMEBUFFER")),
|
||||
ForcedDayGroupIndex:
|
||||
TryParseNonNegativeInt(env("ACDREAM_DAY_GROUP")),
|
||||
// Campaign V slice V7 instrument determinism: pins the Dereth day
|
||||
|
|
@ -182,6 +199,14 @@ public sealed record RuntimeOptions(
|
|||
// per axis, so any finite number is a valid phase.
|
||||
SkyAnimationPhaseSeconds:
|
||||
TryParseFloat(env("ACDREAM_SKY_PHASE_SECONDS")),
|
||||
InitialOrbitDistanceMeters:
|
||||
TryParsePositiveFiniteFloat(
|
||||
env("ACDREAM_ORBIT_DISTANCE_METERS")),
|
||||
InitialOrbitYawDegrees:
|
||||
TryParseFiniteFloat(env("ACDREAM_ORBIT_YAW_DEGREES")),
|
||||
InitialOrbitPitchDegrees:
|
||||
TryParseOrbitPitchDegrees(
|
||||
env("ACDREAM_ORBIT_PITCH_DEGREES")),
|
||||
FogStartMultiplier: TryParseFloat(env("ACDREAM_FOG_START_MULT")) ?? 0.7f,
|
||||
FogEndMultiplier: TryParseFloat(env("ACDREAM_FOG_END_MULT")) ?? 0.95f,
|
||||
ResidencyBudgets: ResidencyBudgetOptions.Parse(env),
|
||||
|
|
@ -348,4 +373,22 @@ public sealed record RuntimeOptions(
|
|||
=> float.TryParse(s, NumberStyles.Float, CultureInfo.InvariantCulture, out float value)
|
||||
? value
|
||||
: null;
|
||||
|
||||
private static float? TryParsePositiveFiniteFloat(string? s)
|
||||
=> TryParseFloat(s) is { } value
|
||||
&& float.IsFinite(value)
|
||||
&& value > 0f
|
||||
? value
|
||||
: null;
|
||||
|
||||
private static float? TryParseFiniteFloat(string? s)
|
||||
=> TryParseFloat(s) is { } value && float.IsFinite(value)
|
||||
? value
|
||||
: null;
|
||||
|
||||
private static float? TryParseOrbitPitchDegrees(string? s)
|
||||
=> TryParseFiniteFloat(s) is { } value
|
||||
&& value is >= -89f and <= 89f
|
||||
? value
|
||||
: null;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue