internal RTHandle GetRayTracingBuffer(InternalRayTracingBuffers bufferID) { switch (bufferID) { case InternalRayTracingBuffers.Distance: return(m_RayTracingDistanceBuffer); case InternalRayTracingBuffers.Direction: return(m_RayTracingDirectionBuffer); case InternalRayTracingBuffers.R0: return(m_RayTracingIntermediateBufferR0); case InternalRayTracingBuffers.R1: return(m_RayTracingIntermediateBufferR1); case InternalRayTracingBuffers.RG0: return(m_RayTracingIntermediateBufferRG0); case InternalRayTracingBuffers.RGBA0: return(m_RayTracingIntermediateBufferRGBA0); case InternalRayTracingBuffers.RGBA1: return(m_RayTracingIntermediateBufferRGBA1); case InternalRayTracingBuffers.RGBA2: return(m_RayTracingIntermediateBufferRGBA2); case InternalRayTracingBuffers.RGBA3: return(m_RayTracingIntermediateBufferRGBA3); default: return(null); } }
internal RTHandle GetRayTracingBuffer(InternalRayTracingBuffers bufferID) { switch (bufferID) { case InternalRayTracingBuffers.Distance: return(m_RayTracingDistanceBuffer != null ? m_RayTracingDistanceBuffer : AllocateBuffer(InternalRayTracingBuffers.Distance)); case InternalRayTracingBuffers.Direction: return(m_RayTracingDirectionBuffer != null ? m_RayTracingDirectionBuffer : AllocateBuffer(InternalRayTracingBuffers.Direction)); case InternalRayTracingBuffers.R0: return(m_RayTracingIntermediateBufferR0 != null ? m_RayTracingIntermediateBufferR0 : AllocateBuffer(InternalRayTracingBuffers.R0)); case InternalRayTracingBuffers.R1: return(m_RayTracingIntermediateBufferR1 != null ? m_RayTracingIntermediateBufferR1 : AllocateBuffer(InternalRayTracingBuffers.R1)); case InternalRayTracingBuffers.RG0: return(m_RayTracingIntermediateBufferRG0 != null ? m_RayTracingIntermediateBufferRG0 : AllocateBuffer(InternalRayTracingBuffers.RG0)); case InternalRayTracingBuffers.RG1: return(m_RayTracingIntermediateBufferRG1 != null ? m_RayTracingIntermediateBufferRG1 : AllocateBuffer(InternalRayTracingBuffers.RG1)); case InternalRayTracingBuffers.RGBA0: return(m_RayTracingIntermediateBufferRGBA0 != null ? m_RayTracingIntermediateBufferRGBA0 : AllocateBuffer(InternalRayTracingBuffers.RGBA0)); case InternalRayTracingBuffers.RGBA1: return(m_RayTracingIntermediateBufferRGBA1 != null ? m_RayTracingIntermediateBufferRGBA1 : AllocateBuffer(InternalRayTracingBuffers.RGBA1)); case InternalRayTracingBuffers.RGBA2: return(m_RayTracingIntermediateBufferRGBA2 != null ? m_RayTracingIntermediateBufferRGBA2 : AllocateBuffer(InternalRayTracingBuffers.RGBA2)); case InternalRayTracingBuffers.RGBA3: return(m_RayTracingIntermediateBufferRGBA3 != null ? m_RayTracingIntermediateBufferRGBA3 : AllocateBuffer(InternalRayTracingBuffers.RGBA3)); case InternalRayTracingBuffers.RGBA4: return(m_RayTracingIntermediateBufferRGBA4 != null ? m_RayTracingIntermediateBufferRGBA4 : AllocateBuffer(InternalRayTracingBuffers.RGBA4)); default: return(null); } }
internal RTHandle AllocateBuffer(InternalRayTracingBuffers bufferID) { switch (bufferID) { case InternalRayTracingBuffers.Direction: { m_RayTracingDirectionBuffer = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R16G16B16A16_SFloat, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RaytracingDirectionBuffer"); return(m_RayTracingDirectionBuffer); } case InternalRayTracingBuffers.Distance: { m_RayTracingDistanceBuffer = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R32_SFloat, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RaytracingDistanceBuffer"); return(m_RayTracingDistanceBuffer); } case InternalRayTracingBuffers.R0: { m_RayTracingIntermediateBufferR0 = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R8_SNorm, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RayTracingIntermediateBufferR0"); return(m_RayTracingIntermediateBufferR0); } case InternalRayTracingBuffers.R1: { m_RayTracingIntermediateBufferR1 = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R8_SNorm, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RayTracingIntermediateBufferR1"); return(m_RayTracingIntermediateBufferR1); } case InternalRayTracingBuffers.RG0: { m_RayTracingIntermediateBufferRG0 = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R16G16_SFloat, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RayTracingIntermediateBufferRG0"); return(m_RayTracingIntermediateBufferRG0); } case InternalRayTracingBuffers.RG1: { m_RayTracingIntermediateBufferRG1 = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R16G16_SFloat, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RayTracingIntermediateBufferRG1"); return(m_RayTracingIntermediateBufferRG1); } case InternalRayTracingBuffers.RGBA0: { m_RayTracingIntermediateBufferRGBA0 = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R16G16B16A16_SFloat, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RayTracingIntermediateBufferRGBA0"); return(m_RayTracingIntermediateBufferRGBA0); } case InternalRayTracingBuffers.RGBA1: { m_RayTracingIntermediateBufferRGBA1 = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R16G16B16A16_SFloat, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RayTracingIntermediateBufferRGBA1"); return(m_RayTracingIntermediateBufferRGBA1); } case InternalRayTracingBuffers.RGBA2: { m_RayTracingIntermediateBufferRGBA2 = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R16G16B16A16_SFloat, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RayTracingIntermediateBufferRGBA2"); return(m_RayTracingIntermediateBufferRGBA2); } case InternalRayTracingBuffers.RGBA3: { m_RayTracingIntermediateBufferRGBA3 = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R16G16B16A16_SFloat, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RayTracingIntermediateBufferRGBA3"); return(m_RayTracingIntermediateBufferRGBA3); } case InternalRayTracingBuffers.RGBA4: { m_RayTracingIntermediateBufferRGBA4 = RTHandles.Alloc(Vector2.one, TextureXR.slices, colorFormat: GraphicsFormat.R16G16B16A16_SFloat, dimension: TextureXR.dimension, enableRandomWrite: true, useDynamicScale: true, useMipMap: false, name: "RayTracingIntermediateBufferRGBA4"); return(m_RayTracingIntermediateBufferRGBA4); } default: return(null); } }