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); }
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); }