Unity可編程渲染管道(Scriptable Render Pipeline)

??去年參加Unite2017 Tokyo的時候,Unity可編程渲染管道(Scriptable Render Pipeline忘晤,下面簡稱SRP)其實已經(jīng)出來了(資料在這里)捏顺。那時候?qū)nity不太熟所以沒有特別關(guān)注勾拉,現(xiàn)在Unity2018已經(jīng)可以用SRP了炒考,所以簡單介紹一下來龍去脈疆液,以及入門級的用法,拋磚引玉表窘。

為什么需要SRP

??Unity內(nèi)置的渲染管道只有Forward和Deferred兩種典予,如下圖甜滨。


Unity內(nèi)置的渲染管道

??這兩種內(nèi)置的管道各有優(yōu)缺點 乐严,而你都看不到源代碼,如果為了表現(xiàn)某種特殊的視覺效果修改起來非常不便衣摩,所以就有了SRP的誕生昂验。另外捂敌,根據(jù)項目的需求寫合適的SRP,也可以降低DC既琴,提高運行效率占婉。

怎么使用SRP

安裝
??從這里下載Unity2018之后,就自帶了SRP甫恩,無需另外安裝逆济。

使用
?? 接下來我會一步一步地做一個只是把屏幕涂成綠色的SRP,可能你不太懂每一步的意義磺箕,但是請耐心地跟著做完奖慌,再回頭看看每一步就懂了。

第一步:繼承RenderPipeline,編寫實際的渲染代碼類。

public class BasicPipeInstance : RenderPipeline
{
    //要涂的顏色
    private Color m_ClearColor = Color.black;

    public BasicPipeInstance(Color clearColor)
    {
        m_ClearColor = clearColor;
    }

    //渲染函數(shù)盈匾,其中ScriptableRenderContext是渲染的上下文漠魏,
    //用來執(zhí)行CommandBuffer,而CommandBuffer就是渲染管線每一步的處理
    //CommandBuffer是Unity之前的就有的東西掸驱,想詳細了解請自行百度谷歌
    public override void Render(ScriptableRenderContext context, Camera[] cameras)
    {
        // does not so much yet :()
        base.Render(context, cameras);

        // clear buffers to the configured color
        var cmd = new CommandBuffer();
        cmd.ClearRenderTarget(true, true, m_ClearColor);
        context.ExecuteCommandBuffer(cmd);
        cmd.Release();
        context.Submit();
    }
}

第二步:繼承RenderPipelineAsset,編寫生成SRP數(shù)據(jù)文件的類。

public class BasicAssetPipe : RenderPipelineAsset
{
    public Color clearColor = Color.green;

#if UNITY_EDITOR
    [UnityEditor.MenuItem("SRP-Demo/01 - Create Basic Asset Pipeline")]
    static void CreateBasicAssetPipeline()
    {
        //生成ScriptableObject
        var instance = ScriptableObject.CreateInstance<BasicAssetPipe>();
        //將ScriptableObject保存為文件
        UnityEditor.AssetDatabase.CreateAsset(instance, "Assets/BasicAssetPipe.asset");
    }
#endif

    protected override IRenderPipeline InternalCreatePipeline()
    {
        //應(yīng)該是運行時被調(diào)用生成SRP
        return new BasicPipeInstance(clearColor);
    }
}

第三步:創(chuàng)建SRP asset啦逆,如下圖。


創(chuàng)建SRP asset

??這時候Assets文件夾里會生成一個BasicAssetPipe.asset文件脸哀。

第四步:將BasicAssetPipe.asset設(shè)置為當前使用的SRP蹦浦。
??打開Editor->Project Settings->Graphics,然后將剛才的BasicAssetPipe.asset文件拖到Scriptable Render Pipeline Settings撞蜂,如下圖盲镶。


SRP設(shè)置

??然后你就可以看到游戲變成一片綠了。


渲染結(jié)果

??代碼在官方的例子里有蝌诡,路徑和使用的包請自行修改添加溉贿。作為不錯的入門學習,也可以看看這位日本大哥的代碼浦旱。

參考資料:
https://blogs.unity3d.com/cn/2018/01/31/srp-overview/
http://tips.hecomi.com/entry/2018/02/19/000846

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宇色,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子颁湖,更是在濱河造成了極大的恐慌宣蠕,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甥捺,死亡現(xiàn)場離奇詭異抢蚀,居然都是意外死亡,警方通過查閱死者的電腦和手機镰禾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門皿曲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唱逢,“玉大人,你說我怎么就攤上這事屋休∥牍牛” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵劫樟,是天一觀的道長痪枫。 經(jīng)常有香客問我,道長叠艳,這世上最難降的妖魔是什么听怕? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮虑绵,結(jié)果婚禮上尿瞭,老公的妹妹穿的比我還像新娘。我一直安慰自己翅睛,他們只是感情好声搁,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著捕发,像睡著了一般疏旨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扎酷,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天檐涝,我揣著相機與錄音,去河邊找鬼法挨。 笑死谁榜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的凡纳。 我是一名探鬼主播窃植,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荐糜!你這毒婦竟也來了巷怜?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤暴氏,失蹤者是張志新(化名)和其女友劉穎延塑,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體答渔,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡关带,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了研儒。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片豫缨。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖端朵,靈堂內(nèi)的尸體忽然破棺而出好芭,到底是詐尸還是另有隱情,我是刑警寧澤冲呢,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布舍败,位于F島的核電站,受9級特大地震影響敬拓,放射性物質(zhì)發(fā)生泄漏邻薯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一乘凸、第九天 我趴在偏房一處隱蔽的房頂上張望厕诡。 院中可真熱鬧,春花似錦营勤、人聲如沸灵嫌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽寿羞。三九已至,卻和暖如春赂蠢,著一層夾襖步出監(jiān)牢的瞬間绪穆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工虱岂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玖院,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓第岖,卻偏偏與公主長得像司恳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绍傲,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 111. [動畫系統(tǒng)]如何將其他類型的動畫轉(zhuǎn)換成關(guān)鍵幀動畫扔傅? 動畫->點緩存->關(guān)鍵幀 112. [動畫]Unit...
    胤醚貔貅閱讀 13,014評論 3 90
  • Why Bothers? 為什么已經(jīng)有ShaderForge這種可視化Shader編輯器烫饼、為什么Asset Sto...
    DonaldW閱讀 76,117評論 16 183
  • 我婆家認為猎塞,我只顧我自己的身體,不顧老公杠纵,孩子荠耽,她們的面子,等等所以不值得她們?yōu)槲抑尾”仍澹艺J為铝量,我難受倘屹,自己都照顧...
    秀發(fā)飄飄閱讀 206評論 0 0
  • 花開終有時, 花謝也有期慢叨! 花謝幕的日子來了—— 因為留戀所以纏綿枝頭纽匙, ...
    myth神話閱讀 387評論 1 6
  • 恐懼會讓你知道什么對你狠重要
    榕敏閱讀 145評論 0 0