30 lines
1.1 KiB
C#
30 lines
1.1 KiB
C#
namespace UnityEngine.Rendering.UnifiedRayTracing
|
|
{
|
|
internal class ComputeRayTracingBackend : IRayTracingBackend
|
|
{
|
|
public ComputeRayTracingBackend(RayTracingResources resources)
|
|
{
|
|
m_Resources = resources;
|
|
}
|
|
|
|
public IRayTracingShader CreateRayTracingShader(Object shader, string kernelName, GraphicsBuffer dispatchBuffer)
|
|
{
|
|
Debug.Assert(shader is ComputeShader);
|
|
return new ComputeRayTracingShader((ComputeShader)shader, kernelName, dispatchBuffer);
|
|
}
|
|
|
|
public IRayTracingAccelStruct CreateAccelerationStructure(AccelerationStructureOptions options, ReferenceCounter counter)
|
|
{
|
|
return new ComputeRayTracingAccelStruct(options, m_Resources, counter);
|
|
}
|
|
|
|
public ulong GetRequiredTraceScratchBufferSizeInBytes(uint width, uint height, uint depth)
|
|
{
|
|
uint rayCount = width * height * depth;
|
|
return (RadeonRays.RadeonRaysAPI.GetTraceMemoryRequirements(rayCount) * RayTracingContext.GetScratchBufferStrideInBytes());
|
|
}
|
|
|
|
readonly RayTracingResources m_Resources;
|
|
}
|
|
}
|