using UnityEngine.Rendering; namespace UnityEngine.Experimental.Rendering.RenderGraphModule { /// /// Helper class allowing access to default resources (black or white texture, etc.) during render passes. /// public class RenderGraphDefaultResources { bool m_IsValid; // We need to keep around a RTHandle version of default regular 2D textures since RenderGraph API is all RTHandle. RTHandle m_BlackTexture2D; RTHandle m_WhiteTexture2D; RTHandle m_ShadowTexture2D; /// Default black 2D texture. public TextureHandle blackTexture { get; private set; } /// Default white 2D texture. public TextureHandle whiteTexture { get; private set; } /// Default clear color XR 2D texture. public TextureHandle clearTextureXR { get; private set; } /// Default magenta XR 2D texture. public TextureHandle magentaTextureXR { get; private set; } /// Default black XR 2D texture. public TextureHandle blackTextureXR { get; private set; } /// Default black XR 2D Array texture. public TextureHandle blackTextureArrayXR { get; private set; } /// Default black (UInt) XR 2D texture. public TextureHandle blackUIntTextureXR { get; private set; } /// Default black XR 3D texture. public TextureHandle blackTexture3DXR { get; private set; } /// Default white XR 2D texture. public TextureHandle whiteTextureXR { get; private set; } /// Default 1x1 shadow texture. public TextureHandle defaultShadowTexture { get; private set; } internal RenderGraphDefaultResources() { m_BlackTexture2D = RTHandles.Alloc(Texture2D.blackTexture); m_WhiteTexture2D = RTHandles.Alloc(Texture2D.whiteTexture); m_ShadowTexture2D = RTHandles.Alloc(1, 1, depthBufferBits: DepthBits.Depth32, isShadowMap: true); } internal void Cleanup() { m_BlackTexture2D.Release(); m_WhiteTexture2D.Release(); m_ShadowTexture2D.Release(); } internal void InitializeForRendering(RenderGraph renderGraph) { blackTexture = renderGraph.ImportTexture(m_BlackTexture2D); whiteTexture = renderGraph.ImportTexture(m_WhiteTexture2D); defaultShadowTexture = renderGraph.ImportTexture(m_ShadowTexture2D); clearTextureXR = renderGraph.ImportTexture(TextureXR.GetClearTexture()); magentaTextureXR = renderGraph.ImportTexture(TextureXR.GetMagentaTexture()); blackTextureXR = renderGraph.ImportTexture(TextureXR.GetBlackTexture()); blackTextureArrayXR = renderGraph.ImportTexture(TextureXR.GetBlackTextureArray()); blackUIntTextureXR = renderGraph.ImportTexture(TextureXR.GetBlackUIntTexture()); blackTexture3DXR = renderGraph.ImportTexture(TextureXR.GetBlackTexture3D()); whiteTextureXR = renderGraph.ImportTexture(TextureXR.GetWhiteTexture()); } } }