64 lines
2.2 KiB
C#
64 lines
2.2 KiB
C#
using NUnit.Framework;
|
|
using System;
|
|
using UnityEditor;
|
|
using System.Runtime.InteropServices;
|
|
using Unity.Mathematics;
|
|
using Unity.Collections.LowLevel.Unsafe;
|
|
using UnityEngine.Rendering.RadeonRays;
|
|
|
|
namespace UnityEngine.Rendering.UnifiedRayTracing.Tests
|
|
{
|
|
[TestFixture("Compute")]
|
|
[TestFixture("Hardware")]
|
|
internal class IRayTracingBackendTests
|
|
{
|
|
readonly RayTracingBackend m_BackendType;
|
|
RayTracingResources m_Resources;
|
|
IRayTracingBackend m_Backend;
|
|
|
|
public IRayTracingBackendTests(string backendAsString)
|
|
{
|
|
m_BackendType = Enum.Parse<RayTracingBackend>(backendAsString);
|
|
}
|
|
|
|
[SetUp]
|
|
public void SetUp()
|
|
{
|
|
if (!SystemInfo.supportsRayTracing && m_BackendType == RayTracingBackend.Hardware)
|
|
{
|
|
Assert.Ignore("Cannot run test on this Graphics API. Hardware RayTracing is not supported");
|
|
}
|
|
|
|
if (!SystemInfo.supportsComputeShaders && m_BackendType == RayTracingBackend.Compute)
|
|
{
|
|
Assert.Ignore("Cannot run test on this Graphics API. Compute shaders are not supported");
|
|
}
|
|
|
|
m_Resources = new RayTracingResources();
|
|
m_Resources.Load();
|
|
|
|
if (m_BackendType == RayTracingBackend.Hardware)
|
|
m_Backend = new HardwareRayTracingBackend(m_Resources);
|
|
else if (m_BackendType == RayTracingBackend.Compute)
|
|
m_Backend = new ComputeRayTracingBackend(m_Resources);
|
|
else
|
|
Assert.Fail("Invalid backend type");
|
|
}
|
|
|
|
[Test]
|
|
public void IRayTracingBackend_QueryScratchBufferStride_ShouldGenerateCorrectResult()
|
|
{
|
|
Assert.AreEqual(4, RayTracingContext.GetScratchBufferStrideInBytes());
|
|
}
|
|
|
|
[Test]
|
|
public void IRayTracingBackend_QueryScratchBufferSize_ShouldGenerateCorrectResult()
|
|
{
|
|
if (m_BackendType == RayTracingBackend.Hardware)
|
|
Assert.AreEqual(0, m_Backend.GetRequiredTraceScratchBufferSizeInBytes(1, 2, 3));
|
|
else if (m_BackendType == RayTracingBackend.Compute)
|
|
Assert.AreEqual(1536, m_Backend.GetRequiredTraceScratchBufferSizeInBytes(1, 2, 3));
|
|
}
|
|
}
|
|
}
|