Example #1
0
        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);
            }
        }