public VectorImageManager(AtlasBase atlas) { instances.Add(this); m_Atlas = atlas; m_Registered = new Dictionary <VectorImage, VectorImageRenderInfo>(32); m_RenderInfoPool = new VectorImageRenderInfoPool(); m_GradientRemapPool = new GradientRemapPool(); m_GradientSettingsAtlas = new GradientSettingsAtlas(); }
void Constructor(BaseVisualElementPanel panelObj, UIRenderDevice deviceObj, AtlasBase atlas, VectorImageManager vectorImageMan) { if (disposed) { DisposeHelper.NotifyDisposedUsed(this); } // A reasonable starting depth level suggested here m_DirtyTracker.heads = new List <VisualElement>(8); m_DirtyTracker.tails = new List <VisualElement>(8); m_DirtyTracker.minDepths = new int[(int)RenderDataDirtyTypeClasses.Count]; m_DirtyTracker.maxDepths = new int[(int)RenderDataDirtyTypeClasses.Count]; m_DirtyTracker.Reset(); if (m_RenderNodesData.Count < 1) { m_RenderNodesData.Add(new RenderNodeData() { matPropBlock = new MaterialPropertyBlock() }); } this.panel = panelObj; this.device = deviceObj; this.atlas = atlas; this.vectorImageManager = vectorImageMan; // TODO: Share these across all panels vertsPool = new TempAllocator <Vertex>(8192, 2048, 64 * 1024); indicesPool = new TempAllocator <UInt16>(8192 << 1, 2048 << 1, (64 * 1024) << 1); jobManager = new JobManager(); this.shaderInfoAllocator.Construct(); this.opacityIdAccelerator = new OpacityIdAccelerator(); painter = new Implementation.UIRStylePainter(this); var rp = panel as BaseRuntimePanel; if (rp != null && rp.drawToCameras) { drawInCameras = true; m_StaticIndex = RenderChainStaticIndexAllocator.AllocateIndex(this); } }
public UIRStylePainter(RenderChain renderChain) { m_Owner = renderChain; meshGenerationContext = new MeshGenerationContext(this); device = renderChain.device; m_Atlas = renderChain.atlas; m_VectorImageManager = renderChain.vectorImageManager; m_AllocRawVertsIndicesDelegate = AllocRawVertsIndices; m_AllocThroughDrawMeshDelegate = AllocThroughDrawMesh; m_AllocThroughDrawGradientsDelegate = AllocThroughDrawGradients; int meshWriteDataPoolStartingSize = 32; m_MeshWriteDataPool = new List <MeshWriteData>(meshWriteDataPoolStartingSize); for (int i = 0; i < meshWriteDataPoolStartingSize; i++) { m_MeshWriteDataPool.Add(new MeshWriteData()); } }
public void ResetTextures(VisualElement ve) { AtlasBase atlas = this.atlas; TextureRegistry registry = m_TextureRegistry; BasicNodePool <TextureEntry> pool = m_TexturePool; BasicNode <TextureEntry> current = ve.renderChainData.textures; ve.renderChainData.textures = null; while (current != null) { var next = current.next; if (current.data.replaced) { atlas.ReturnAtlas(ve, current.data.source as Texture2D, current.data.actual); } else { registry.Release(current.data.actual); } pool.Return(current); current = next; } }
protected RenderChain(BaseVisualElementPanel panel, UIRenderDevice device, AtlasBase atlas, VectorImageManager vectorImageManager) { Constructor(panel, device, atlas, vectorImageManager); }