精選文章

SmallBurger Asset Home

  SmallBurger

2019年5月3日 星期五

阿基拉的Unity世界大冒險之 VS ScriptableRenderer章 後記(相關SetRenderTaget的修改)

之前阿基拉曾經說對ScriptableRenderer動大刀,但實際的情況是沒這麼嚴重,算是做了一點小手術,不過由於已經不是原來的LWRP,所以還是得自行重新建立一份跟LWRP很像的海埔新生地(新大陸)到新的地方。

目前大概是做了這些手術:

  1. ScriptableRenderPass.cs:

    //add by akilar, append a flag for check need set render target
    public virtual bool IsSetRenderTarget() { return true; }
  2. ScriptableRenderer.cs:
    //add by akilar
    void ExecuteRenderPass(ScriptableRenderContext context, ScriptableRenderPass renderPass,
        ref RenderingData renderingData)
    {
        //add by akilar
        if (!renderPass.IsSetRenderTarget())
        {
            renderPass.Execute(context, ref renderingData);
            return;
        }
        ...
        //modify by akilar, disalbe first check setting, only check need reset render target
        /*if (passColorAttachment == m_CameraColorTarget &&
               !m_FirstCameraRenderPassExecuted)
        {
            m_FirstCameraRenderPassExecuted = true;
            ...
        }
        // Only setup render target if current render pass attachments are different from the active
            ones
        else*/

        if (passColorAttachment != m_ActiveColorAttachment || passDepthAttachment !=
            m_ActiveDepthAttachment)
        {
            SetRenderTarget(cmd, passColorAttachment, passDepthAttachment, renderPass.clearFlag,
                renderPass.clearColor);
        }
        ...
    }
狀況如下…


跟LWRP的恩怨情仇持續中…讓我們繼續看下去…

沒有留言:

張貼留言