예제 #1
0
        internal static void AddCamera(ref MatrixD viewMatrix, ref MatrixD projectionMatrix, MyViewport viewport, MyGBuffer gbuffer)
        {
            var frustumMask = m_cullQuery.AddFrustum(new BoundingFrustumD(MyEnvironment.ViewProjectionD));

            MyGBufferPass pass = new MyGBufferPass();

            pass.Cleanup();
            pass.ProcessingMask = frustumMask;
            pass.ViewProjection = MyEnvironment.ViewProjectionAt0;
            pass.Viewport       = viewport;
            pass.GBuffer        = gbuffer;

            pass.PerFrame();

            m_wavefront.Add(pass);
        }
        void InitRenderPasses(MyCullQuery cullQuery, List <MyRenderPass> renderPasses)
        {
            renderPasses.Clear();
            foreach (var query in cullQuery.RenderingPasses)
            {
                if (query == null)
                {
                    continue;
                }

                Matrix     matrix   = query.ViewProjection;
                MyViewport viewport = query.Viewport;

                if (query is VRageRender.MyGBufferPass)
                {
                    VRageRender.MyGBufferPass oldGBufferPass = (VRageRender.MyGBufferPass)query;
                    MyGBuffer     gbuffer = oldGBufferPass.GBuffer;
                    MyGBufferPass gbufferPass;
                    int           passId = GetPassId(oldGBufferPass);
                    m_gbufferPassesPool.AllocateOrCreate(out gbufferPass);
                    gbufferPass.Init(passId, matrix, viewport, gbuffer);
                    renderPasses.Add(gbufferPass);
                }

                if (query is VRageRender.MyDepthPass)
                {
                    VRageRender.MyDepthPass oldDepthPass = (VRageRender.MyDepthPass)query;
                    IDsvBindable            dsv          = oldDepthPass.Dsv;
                    MyDepthPass             depthPass;
                    bool isCascade = oldDepthPass.IsCascade;
                    int  passId    = GetPassId(oldDepthPass);
                    m_depthPassesPool.AllocateOrCreate(out depthPass);
                    depthPass.Init(passId, matrix, viewport, dsv, isCascade, oldDepthPass.DebugName);
                    renderPasses.Add(depthPass);
                }
            }
        }
 public static void Cleanup(MyGBufferPass renderPass)
 {
     renderPass.Cleanup();
 }
예제 #4
0
 public static void Cleanup(MyGBufferPass renderPass)
 {
     renderPass.Cleanup();
 }
예제 #5
0
 int GetPassId(VRageRender.MyGBufferPass gbufferPass)
 {
     return(0);
 }