Пример #1
0
        internal void Render()
        {
            mPost.SetTargets(mGD, "SceneDepthMatNorm", "SceneDepth");

            mPost.ClearTarget(mGD, "SceneDepthMatNorm", Color.White);
            mPost.ClearDepth(mGD, "SceneDepth");

            mZoneDraw.DrawDMN(mGD, mZone.IsMaterialVisibleFromPos,
                              mZone.GetModelTransform, RenderExternalDMN);

            mPost.SetTargets(mGD, "SceneColor", "SceneDepth");

            mPost.ClearTarget(mGD, "SceneColor", Color.CornflowerBlue);
            mPost.ClearDepth(mGD, "SceneDepth");

            if (mDynLights != null)
            {
                mDynLights.SetParameter();
            }

            mShadKeeper.BatchShadowRender(mGD, mStaticMats);

            mZoneDraw.Draw(mGD, mShadowHelper.GetShadowCount(),
                           mZone.IsMaterialVisibleFromPos,
                           mZone.GetModelTransform,
                           RenderExternal,
                           mShadowHelper.DrawShadows,
                           SetUpAlphaRenderTargets);

            mPost.SetTargets(mGD, "Outline", "null");
            mPost.SetParameter("mNormalTex", "SceneDepthMatNorm");
            mPost.DrawStage(mGD, "Outline");

            mPost.SetTargets(mGD, "Bloom1", "null");
            mPost.SetParameter("mBlurTargetTex", "SceneColor");
            mPost.DrawStage(mGD, "BloomExtract");

            mPost.SetTargets(mGD, "Bloom2", "null");
            mPost.SetParameter("mBlurTargetTex", "Bloom1");
            mPost.DrawStage(mGD, "GaussianBlurX");

            mPost.SetTargets(mGD, "Bloom1", "null");
            mPost.SetParameter("mBlurTargetTex", "Bloom2");
            mPost.DrawStage(mGD, "GaussianBlurY");

            mPost.SetTargets(mGD, "Bleach", "null");
            mPost.SetParameter("mBlurTargetTex", "Bloom1");
            mPost.SetParameter("mColorTex", "SceneColor");
            mPost.DrawStage(mGD, "BloomCombine");

            mPost.SetTargets(mGD, "BackColor", "BackDepth");
            mPost.SetParameter("mBlurTargetTex", "Outline");
            mPost.SetParameter("mColorTex", "Bleach");
            mPost.DrawStage(mGD, "Modulate");

            mST.Draw(mGD.DC, Matrix.Identity, mTextProj);
        }