private void RenderBatchesInSingleShot(List <Batch> batches, Effect effect, SetupPreviousLayerDepthHandler setupPreviousLayerDepthHandler) { Debug.Assert(batches != null && effect != null && setupPreviousLayerDepthHandler != null && batches.Count > 0); setupPreviousLayerDepthHandler.Invoke(effect); var technique = effect.GetTechniqueByName(FillGBufferTechniqueName); if (!technique.IsValid) { return; } for (int i = 0; i < technique.Description.PassCount; ++i) { foreach (Batch batch in batches) { Debug.Assert(batch.Effect == effect); batch.SetupPerBatchParameters(viewerForBatches); technique.GetPassByIndex(i).Apply(); batch.SetupAndDraw(); } } }
public void RenderPreparedBatches(SetupPreviousLayerDepthHandler setupPreviousLayerDepthHandler) { Debug.Assert(setupPreviousLayerDepthHandler != null); Effect lastEffect = null; foreach (Batch batch in batchesToRender) { if (batch.Effect != lastEffect && lastEffect != null) { RenderBatchesInSingleShot(batchesToRenderInSingleShot, lastEffect, setupPreviousLayerDepthHandler); batchesToRenderInSingleShot.Clear(); } batchesToRenderInSingleShot.Add(batch); lastEffect = batch.Effect; } if (lastEffect != null) { RenderBatchesInSingleShot(batchesToRenderInSingleShot, lastEffect, setupPreviousLayerDepthHandler); batchesToRenderInSingleShot.Clear(); } }
public void RenderPreparedBatches(SetupPreviousLayerDepthHandler setupPreviousLayerDepthHandler) { Debug.Assert(setupPreviousLayerDepthHandler != null); Effect lastEffect = null; foreach (Batch batch in batchesToRender) { if (batch.Effect != lastEffect && lastEffect != null) { RenderBatchesInSingleShot(batchesToRenderInSingleShot, lastEffect, setupPreviousLayerDepthHandler); batchesToRenderInSingleShot.Clear(); } batchesToRenderInSingleShot.Add(batch); lastEffect = batch.Effect; } if (lastEffect != null) { RenderBatchesInSingleShot(batchesToRenderInSingleShot, lastEffect, setupPreviousLayerDepthHandler); batchesToRenderInSingleShot.Clear(); } }
private void RenderBatchesInSingleShot(List<Batch> batches, Effect effect, SetupPreviousLayerDepthHandler setupPreviousLayerDepthHandler) { Debug.Assert(batches != null && effect != null && setupPreviousLayerDepthHandler != null && batches.Count > 0); setupPreviousLayerDepthHandler.Invoke(effect); var technique = effect.GetTechniqueByName(FillGBufferTechniqueName); if (!technique.IsValid) return; for (int i = 0; i < technique.Description.PassCount; ++i) { foreach (Batch batch in batches) { Debug.Assert(batch.Effect == effect); batch.SetupPerBatchParameters(viewerForBatches); technique.GetPassByIndex(i).Apply(); batch.SetupAndDraw(); } } }