screen space reflections vatten och dämpad motion blur på skärnor
This commit is contained in:
@@ -3,11 +3,44 @@ using Universe.Core.Generation;
|
||||
using Universe.Core.Math;
|
||||
using Universe.Core.Physics;
|
||||
using Universe.Core.World;
|
||||
using Universe.Core.Configuration;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Universe.Tests;
|
||||
|
||||
public sealed class OceanTests
|
||||
{
|
||||
[Fact]
|
||||
public void PlanetJsonRoundTripsReflectionQualityAndRejectsInvalidGpuBudgets()
|
||||
{
|
||||
var quality = new OceanReflectionSettings { Enabled = true, ReflectSky = false, Strength = .7, ResolutionScale = .75,
|
||||
MaxSteps = 96, StridePixels = 3, MaxDistanceMeters = 8000, MaxSurfaceDistanceMeters = 6000,
|
||||
ThicknessMeters = 2.5, NormalBiasMeters = .2, EdgeFade = .1 };
|
||||
var path = Path.Combine(Path.GetTempPath(), $"universe-ocean-{Guid.NewGuid():N}.json");
|
||||
KnownSolarSystemCatalog Load(OceanReflectionSettings? settings)
|
||||
{
|
||||
var definition = new SolarSystemDocument { Systems = [new SolarSystemDefinition
|
||||
{
|
||||
Id = "water-system", Name = "Water test", Sector = new(0, 0, 0),
|
||||
Stars = [new StarDefinition { Id = "sun", Name = "Sun", RadiusMeters = 695700000 }],
|
||||
Planets = [new PlanetDefinition { Id = "ocean", Name = "Ocean", RadiusMeters = 6371000,
|
||||
Orbit = new() { SemiMajorAxisAu = 1 }, Ocean = new() { MaskFromSurfaceTexture = false, ScreenSpaceReflections = settings! } }]
|
||||
}] };
|
||||
File.WriteAllText(path, JsonSerializer.Serialize(definition));
|
||||
return KnownSolarSystemCatalog.Load(path);
|
||||
}
|
||||
try
|
||||
{
|
||||
var parsed = Load(quality).GetById("water-system").Planets.Single().Ocean!.ScreenSpaceReflections;
|
||||
Assert.Equal(quality, parsed);
|
||||
foreach (var invalid in new OceanReflectionSettings?[] { quality with { MaxSteps = 0 }, quality with { MaxSteps = 129 },
|
||||
quality with { ResolutionScale = 0 }, quality with { ThicknessMeters = 0 }, quality with { NormalBiasMeters = -1 }, null })
|
||||
{
|
||||
Assert.Throws<InvalidDataException>(() => Load(invalid));
|
||||
}
|
||||
}
|
||||
finally { File.Delete(path); }
|
||||
}
|
||||
[Fact]
|
||||
public void WaterMaskDistinguishesBlueWaterFromLandAndIce()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user