Esempio n. 1
0
    private void OnPostRender()
    {
        if (NextCamera != mNextCamera || BlitEventNext != mBlitEventNext)
        {
            ReleaseBufferNext();
            mNextCamera    = NextCamera;
            mBlitEventNext = BlitEventNext;
        }
        if (mBlitEventNext != BlitEventTrigger.Off && mNextCamera && mNextCamera.enabled && mNextCamera.gameObject.activeInHierarchy)
        {
            if (mCommandBufferNext == null)
            {
                mCommandBufferNext      = new CommandBuffer();
                mCommandBufferNext.name = "Blit To Next Camera";
                mCommandBufferNext.SetGlobalTexture(ID_MainTex, mSrcColorBufferRT);
                mCommandBufferNext.DrawMesh(DySkyUtils.FullscreenQuad, Matrix4x4.identity, DySkyUtils.CopyMaterial, 0, 0);
                mNextCamera.AddCommandBuffer((CameraEvent)mBlitEventNext, mCommandBufferNext);
                //mNextCamera.clearFlags = CameraClearFlags.Nothing;
            }
        }
        else
        {
            ReleaseBufferNext();

            Graphics.Blit(mSrcColorBufferRT, (RenderTexture)null);
        }
    }
Esempio n. 2
0
 private void OnEnable()
 {
     if (BlitEvent == BlitEventTrigger.Off)
     {
         this.enabled = false;
         return;
     }
     mBlitEvent = BlitEvent;
     mBlitColor = BlitColor;
     mBlitDepth = BlitDepth;
     BindBuffer();
     sRef.Add(mCamera);
 }
Esempio n. 3
0
    public static void BindCamera(Camera camera,
                                  BlitEventTrigger evt = BlitEventTrigger.AfterForwardOpaque,
                                  ColorPrecision color = ColorPrecision.HalfRGB111110Float,
                                  DepthPrecision depth = DepthPrecision.HalfRHalf)
    {
        if (!camera)
        {
            return;
        }
        if (evt == BlitEventTrigger.Off)
        {
            ReleaseCamera(camera);
            return;
        }
        DySkyPreFrameBuffers pfb;

        if (IsEnable(camera))
        {
            pfb = camera.GetComponent <DySkyPreFrameBuffers>();
            if (pfb.mBlitColor == color && pfb.mBlitDepth == depth && pfb.mBlitEvent == evt)
            {
                return;
            }
            pfb.enabled = false;
        }
        else
        {
            pfb = camera.GetComponent <DySkyPreFrameBuffers>();
            if (!pfb)
            {
                pfb = camera.gameObject.AddComponent <DySkyPreFrameBuffers>();
            }
        }
        pfb.BlitEvent = evt;
        pfb.BlitColor = color;
        pfb.BlitDepth = depth;
        pfb.enabled   = true;
    }