public int FetchSlice(CommandBuffer cmd, Texture texture)
        {
            bool needUpdate;
            int  sliceIndex = m_AreaCookieTexArray.ReserveSlice(texture, out needUpdate);

            if (sliceIndex != -1 && needUpdate)
            {
                Texture filteredAreaLight = FilterAreaLightTexture(cmd, texture);
                m_AreaCookieTexArray.UpdateSlice(cmd, sliceIndex, filteredAreaLight, m_AreaCookieTexArray.GetTextureHash(texture));
            }
            return(sliceIndex);
        }
示例#2
0
        public int FetchSlice(CommandBuffer cmd, Texture texture)
        {
            bool needUpdate;
            var  sliceIndex = m_TextureCache.ReserveSlice(texture, out needUpdate);

            if (sliceIndex != -1)
            {
                if (needUpdate || m_ProbeBakingState[sliceIndex] != ProbeFilteringState.Ready)
                {
                    using (new ProfilingSample(cmd, "Convolve Planar Reflection Probe"))
                    {
                        // For now baking is done directly but will be time sliced in the future. Just preparing the code here.
                        m_ProbeBakingState[sliceIndex] = ProbeFilteringState.Convolving;

                        Texture result = ConvolveProbeTexture(cmd, texture);
                        if (result == null)
                        {
                            return(-1);
                        }

                        if (m_PerformBC6HCompression)
                        {
                            throw new NotImplementedException("BC6H Support not implemented for PlanarReflectionProbeCache");
                        }
                        else
                        {
                            m_TextureCache.UpdateSlice(cmd, sliceIndex, result, m_TextureCache.GetTextureHash(texture)); // Be careful to provide the update count from the input texture, not the temporary one used for convolving.
                        }

                        m_ProbeBakingState[sliceIndex] = ProbeFilteringState.Ready;
                    }
                }
            }

            return(sliceIndex);
        }