public DBufferManager() : base(Decal.GetMaterialDBufferCount()) { Debug.Assert(m_BufferCount <= 4); m_RTIDs4 = new RenderTargetIdentifier[4]; m_RTIDs3 = new RenderTargetIdentifier[3]; }
public override void CreateBuffers() { GraphicsFormat[] rtFormat; Decal.GetMaterialDBufferDescription(out rtFormat); for (int dbufferIndex = 0; dbufferIndex < m_BufferCount; ++dbufferIndex) { m_RTs[dbufferIndex] = RTHandles.Alloc(Vector2.one, colorFormat: rtFormat[dbufferIndex], filterMode: FilterMode.Point, xrInstancing: true, useDynamicScale: true, name: string.Format("DBuffer{0}", dbufferIndex)); m_RTIDs[dbufferIndex] = m_RTs[dbufferIndex].nameID; m_TextureShaderIDs[dbufferIndex] = HDShaderIDs._DBufferTexture[dbufferIndex]; } // We use 8x8 tiles in order to match the native GCN HTile as closely as possible. m_HTile = RTHandles.Alloc(size => new Vector2Int((size.x + 7) / 8, (size.y + 7) / 8), filterMode: FilterMode.Point, colorFormat: GraphicsFormat.R8_UNorm, enableRandomWrite: true, xrInstancing: true, useDynamicScale: true, name: "DBufferHTile"); // Enable UAV }
public override void CreateBuffers() { RenderTextureFormat[] rtFormat; bool[] sRGBFlags; Decal.GetMaterialDBufferDescription(out rtFormat, out sRGBFlags); for (int dbufferIndex = 0; dbufferIndex < m_BufferCount; ++dbufferIndex) { m_RTs[dbufferIndex] = RTHandle.Alloc(Vector2.one, colorFormat: rtFormat[dbufferIndex], sRGB: sRGBFlags[dbufferIndex], filterMode: FilterMode.Point, name: string.Format("DBuffer{0}", dbufferIndex)); m_RTIDs[dbufferIndex] = m_RTs[dbufferIndex].nameID; m_TextureShaderIDs[dbufferIndex] = HDShaderIDs._DBufferTexture[dbufferIndex]; } // We use 8x8 tiles in order to match the native GCN HTile as closely as possible. m_HTile = RTHandle.Alloc(size => new Vector2Int((size.x + 7) / 8, (size.y + 7) / 8), filterMode: FilterMode.Point, colorFormat: RenderTextureFormat.R8, sRGB: false, enableRandomWrite: true, name: "DBufferHTile"); // Enable UAV }
public override void CreateBuffers() { GraphicsFormat[] rtFormat; Decal.GetMaterialDBufferDescription(out rtFormat); for (int dbufferIndex = 0; dbufferIndex < m_BufferCount; ++dbufferIndex) { m_RTs[dbufferIndex] = RTHandles.Alloc(Vector2.one, colorFormat: rtFormat[dbufferIndex], filterMode: FilterMode.Point, xrInstancing: true, useDynamicScale: true, name: string.Format("DBuffer{0}", dbufferIndex)); m_RTIDs[dbufferIndex] = m_RTs[dbufferIndex].nameID; m_TextureShaderIDs[dbufferIndex] = HDShaderIDs._DBufferTexture[dbufferIndex]; } supportsHTile = SystemInfo.IsFormatSupported(GraphicsFormat.R32_UInt, FormatUsage.LoadStore); if (supportsHTile) { // We use 8x8 tiles in order to match the native GCN HTile as closely as possible. m_HTile = RTHandles.Alloc(size => new Vector2Int((size.x + 7) / 8, (size.y + 7) / 8), filterMode: FilterMode.Point, colorFormat: GraphicsFormat.R32_UInt, enableRandomWrite: true, xrInstancing: true, useDynamicScale: true, name: "DBufferHTile"); // Enable UAV } else { // create dummy HTile because we can not eliminate it from the shader at compile time m_HTile = RTHandles.Alloc(size => new Vector2Int(8, 8), filterMode: FilterMode.Point, colorFormat: GraphicsFormat.R8_UNorm, enableRandomWrite: true, xrInstancing: true, useDynamicScale: true, name: "DBufferHTile"); // Enable UAV } }
public DBufferManager() : base(Decal.GetMaterialDBufferCount()) { Debug.Assert(m_BufferCount <= 4); }