找回密碼
 注冊帳號

掃一掃,訪問微社區

unity渲染管線

2015-1-8 15:54| 發布者: 楊炎| 查看: 2011| 評論: 0|原作者: 蠻牛|來自: unity3d腳本manual

摘要: unity 渲染管線著色器規定了對象本身的外觀(其材質屬性)以及它對光照的反應方式。由于光照計算必須嵌入著色器,并且有多種可能的光照和陰影類型,因此編寫“剛好有效”的質量著色器是一個很復雜的任務。為了使編寫 ...

unity 渲染管線

著色器規定了對象本身的外觀(其材質屬性)以及它對光照的反應方式。由于光照計算必須嵌入著色器,并且有多種可能的光照和陰影類型,因此編寫“剛好有效”的質量著色器是一個很復雜的任務。為了使編寫變得更加容易,unity 3 引入了表面著色器,在該著色器上可以自動處理光照、陰影、光照貼圖、正向光照以及延時光照對象。

本文檔介紹了 unity 光照及渲染管線的特點,以及表面著色器的工作原理。

渲染路徑

您所使用的渲染路徑決定了光照的應用方式以及著色器所使用的通道。著色器中的每個通道通過通道標記傳送其光照類型。

在延時光照中,使用prepassbase和prepassfinal通道。

在正向渲染中,使用forwardbase和forwardadd通道。

在頂點光照中,使用vertex、vertexlmrgbm和vertexlm通道。

在以上任何一種情況下,要渲染陰影,請使用shadowcaster和shadowcollector通道。

延時光照路徑

prepassbase通道渲染法線和高光指數;prepassfinal通道通過將紋理、光照與發光材質等屬性相結合來渲染最終顏色。場景中所有正規光照都是在屏幕空間中單獨進行的。有關詳情,請參閱延時光照。

正向渲染路徑

forwardbase通道同時渲染環境、光照貼圖、主方向燈以及不重要的(頂點/球諧函數)光源。forwardadd通道用于任何額外的逐像素光源;對于每個被這種光照明的對象,該通道都會被調用一次。有關詳情,請參閱正向渲染。

如果使用了正向渲染,但著色器沒有合適的正向通道(也就是說,沒有forwardbase或forwardadd通道類型),則按在頂點光照 (vertex lit) 路徑的渲染方式渲染該對象,參見下文。

頂點光照渲染路徑

由于頂點光照最常用于不支持可編程著色器的平臺,所以 unity 不能在內部創建多種著色器排列來處理光照貼圖與非光照貼圖的情況。因此,要處理光照貼圖和非光照貼圖對象,就必須明確編寫多條通道。

頂點通道用于非光照貼圖對象。所有光照均使用固定函數 opengl/direct3d 光照模型 (blinn-phong) 同時渲染

vertexlmrgbm通道用于光照貼圖對象,其中光照貼圖是 rgbm 格式編碼(這種情況主要發生在桌面和控制臺上)。該通道不使用實時光照,而是將紋理與光照貼圖結合。

vertexlmm通道用于光照貼圖對象,其中光照貼圖為 double-ldr 格式編碼(這種情況發生在移動設備和老式桌面上)。該通道不使用實時光照,而是將紋理與光照貼圖結合。

相關閱讀

文章點評
相關文章
女校游泳队彩金 自己开电影院怎么赚钱 万达二分彩全天计划 百乐门玩法规则 排三定跨公式 河南快赢481预测 重庆快乐十分 新浪篮彩 双色球合买方案文档 安徽快3 十大棋牌游戏排行榜 高频彩票开奖结果 天津麻将微信一分群 福彩25选7复式表 我想下载免费麻将 超级大乐透 福建11选5遗漏号码