Exemplo n.º 1
0
        /// <inheritdoc/>
        protected override void InitializeCore()
        {
            renderModelObjectInfoKey = RootRenderFeature.RenderData.CreateObjectKey <RenderModelFrameInfo>();
            renderEffectKey          = ((RootEffectRenderFeature)RootRenderFeature).RenderEffectKey;

            blendMatrices = ((RootEffectRenderFeature)RootRenderFeature).CreateDrawCBufferOffsetSlot(TransformationSkinningKeys.BlendMatrixArray.Name);
        }
Exemplo n.º 2
0
        public VisibilityGroup(RenderSystem renderSystem)
        {
            RenderSystem  = renderSystem;
            RenderObjects = new RenderObjectCollection(this);
            RenderData.Initialize(ComputeDataArrayExpectedSize);

            // Create RenderStageMask key, and keep track of number of RenderStages.Count for future resizing
            RenderStageMaskKey = RenderData.CreateStaticObjectKey <uint>(null, stageMaskMultiplier = (RenderSystem.RenderStages.Count + RenderStageMaskSizePerEntry - 1) / RenderStageMaskSizePerEntry);
            Array.Resize(ref viewRenderStageMask, stageMaskMultiplier);

            RenderSystem.RenderStages.CollectionChanged   += RenderStages_CollectionChanged;
            RenderSystem.RenderStageSelectorsChanged      += RenderSystem_RenderStageSelectorsChanged;
            RenderSystem.RenderFeatures.CollectionChanged += RenderFeatures_CollectionChanged;
        }
Exemplo n.º 3
0
        /// <inheritdoc/>
        protected override void InitializeCore()
        {
            base.InitializeCore();

            MutablePipeline = new MutablePipelineState(Context.GraphicsDevice);

            // Create RenderEffectKey
            RenderEffectKey = RenderData.CreateStaticObjectKey <RenderEffect>(null, EffectPermutationSlotCount);

            // TODO: Assign weights so that PerDraw is always last? (we usually most custom user ones to be between PerView and PerDraw)
            perFrameDescriptorSetSlot = GetOrCreateEffectDescriptorSetSlot("PerFrame");
            perViewDescriptorSetSlot  = GetOrCreateEffectDescriptorSetSlot("PerView");
            perDrawDescriptorSetSlot  = GetOrCreateEffectDescriptorSetSlot("PerDraw");

            RenderSystem.RenderStages.CollectionChanged += RenderStages_CollectionChanged;

            // Create effect slots
            Array.Resize(ref effectSlots, RenderSystem.RenderStages.Count);
            for (int index = 0; index < RenderSystem.RenderStages.Count; index++)
            {
                var renderStage = RenderSystem.RenderStages[index];
                effectSlots[index] = CreateEffectPermutationSlot(renderStage.EffectSlotName);
            }
        }