本發(fā)明涉及圖像渲染技術(shù)領(lǐng)域,具體涉及一種基于brdf函數(shù)線性過濾的圖像渲染方法。
背景技術(shù):
在實(shí)時(shí)渲染的時(shí)候,正確表現(xiàn)出物體的細(xì)節(jié)非常重要,為了減少計(jì)算量,同時(shí)保證物體的渲染效果,通常采用法線貼圖以及brdf函數(shù)圖。
法線貼圖(normalmap)是一種使用較為廣泛的繪制技術(shù),通過利用法線貼圖存儲(chǔ)以及表達(dá)物體表面的細(xì)微幾何變化,可以在大幅降低場景幾何復(fù)雜度,減少渲染時(shí)計(jì)算量的同時(shí),更好地保留并表現(xiàn)物體表面的細(xì)節(jié),因此被廣泛應(yīng)用于各領(lǐng)域。brdf函數(shù)圖(brdfmap)也是一種使用廣泛的繪制技術(shù),通過把brdf函數(shù)參數(shù)信息存儲(chǔ)在紋理中從而實(shí)現(xiàn)復(fù)雜的幾何表面材質(zhì)變化。
法線貼圖以及brdf函數(shù)圖的出現(xiàn)使計(jì)算機(jī)渲染復(fù)雜場景的能力得到了很大的提高,但是由于在著色時(shí)候的非線性性質(zhì),計(jì)算出準(zhǔn)確的法線貼圖信息和brdf函數(shù)參數(shù)信息也是一個(gè)比較困難的問題。因此,要想表現(xiàn)出同一個(gè)物體在不同尺寸時(shí)的表面細(xì)節(jié),就需要有一個(gè)好的法線貼圖和brdf函數(shù)圖的濾波方法。
傳統(tǒng)的濾波方法有直接采樣、mip-map的法線貼圖濾波方法,但是這些方法都會(huì)造成法線貼圖信息以及brdf函數(shù)參數(shù)信息的丟失,從而使渲染程序不能準(zhǔn)確地表達(dá)出物體的細(xì)節(jié)。
為了解決這個(gè)問題,離線繪制方法經(jīng)常使用非常重度的超級采樣來緩解這個(gè)問題,但是卻帶來了巨大的計(jì)算消耗。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于brdf函數(shù)線性過濾的圖像渲染方法,把濾波應(yīng)用于實(shí)時(shí)渲染中,與現(xiàn)有的濾波方法相比,能夠提高繪制質(zhì)量,與超級采樣的方法相比,大大加速了計(jì)算過程,能夠?qū)崟r(shí)完成mip-map的構(gòu)建。
一種基于brdf函數(shù)線性過濾的圖像渲染方法,包括:
步驟1,創(chuàng)建brdf圖,該brdf圖包括場景的brdf參數(shù)以及法線信息;
步驟2,針對brdf圖創(chuàng)建紋理緩存,將每個(gè)物體的幾何三角形通過各自的紋理坐標(biāo)光柵化到所述紋理緩存中;
步驟3,針對紋理緩存中的每個(gè)紋理像素,依據(jù)下式計(jì)算對應(yīng)的vmf分布函數(shù):
式中,γ(s)為vmf分布函數(shù);
κ為材質(zhì)對應(yīng)的材質(zhì)系數(shù),當(dāng)材質(zhì)的高光系數(shù)>>1時(shí),κ和高光系數(shù)等效;
μ為該vmf分布函數(shù)的主軸方向;
s為任意需要計(jì)算的方向。
同時(shí),解如下三次方程,得到‖r‖:
‖r‖3-κ‖r‖2-3‖r‖+κ=0;
步驟4,依據(jù)場景中法線的分布進(jìn)行區(qū)域分割,分割后的紋理像素中存儲(chǔ)該區(qū)域?qū)?yīng)的vmf分布函數(shù),將分割后產(chǎn)生的brdf圖拼接得到mip-map過的brdf圖(即多級紋理映射過的brdf圖);
步驟5,針對待渲染圖像中的每個(gè)像素,計(jì)算該像素覆蓋的區(qū)域大小,并據(jù)此獲得該像素對應(yīng)的mip-map層級,然后從對應(yīng)的mip-map過的brdf圖中讀取對應(yīng)的位置信息,并進(jìn)行渲染。
步驟2~步驟3為brdf圖的mip-map過程,即針對給定的brdf圖,執(zhí)行一次額外的渲染過程對該brdf圖構(gòu)建mip-maps,構(gòu)建mip-maps的同時(shí)根據(jù)法線的分布情況對整個(gè)法線分布進(jìn)行區(qū)域分割,每個(gè)分割后的紋理像素中存儲(chǔ)該區(qū)域?qū)?yīng)的vmf分布函數(shù)及其參數(shù)。
針對動(dòng)態(tài)場景,步驟1中的brdf圖每幀更新。
步驟1中,所述brdf圖由素材庫中brdf圖更改信息形式為vmf分布函數(shù)形式得到。
作為優(yōu)選,步驟2中的紋理緩存和步驟1中的brdf圖具有相同的分辨率。
作為優(yōu)選,依據(jù)‖r‖值大小進(jìn)行步驟4中的區(qū)域分割,分割級別為m×n,其中,m為攝像機(jī)半球面上經(jīng)度方向的分割數(shù)量,n為攝像機(jī)半球面上緯度方向的分割數(shù)量;m、n的取值組合為:1×1,1×2或1×4。
進(jìn)行區(qū)域分割時(shí),設(shè)定不同的閾值,依據(jù)‖r‖值相對于閾值的大小進(jìn)行分割,將法線相對集中的部分劃分至同一區(qū)域。閾值大小的確定為經(jīng)驗(yàn)值,區(qū)域分割的數(shù)量根據(jù)法線分布的復(fù)雜程度進(jìn)行確定。
本發(fā)明提供的基于brdf函數(shù)的圖像渲染方法,把濾波應(yīng)用于實(shí)時(shí)渲染中,與現(xiàn)有的濾波方法相比,能夠提高繪制質(zhì)量,與超級采樣的方法相比,大大加速了計(jì)算過程,能夠?qū)崟r(shí)完成mip-map的構(gòu)建。
具體實(shí)施方式
下面對本發(fā)明基于brdf函數(shù)的圖像渲染方法做詳細(xì)描述。
一種基于brdf函數(shù)的圖像渲染方法,包括:
步驟1,創(chuàng)建brdf圖,該brdf圖包括場景的brdf參數(shù)以及法線信息;針對動(dòng)態(tài)場景,步驟1中的brdf圖每幀更新。
該步驟中,brdf圖由素材庫中brdf圖更改信息形式為vmf形式得到。
步驟2,針對brdf圖創(chuàng)建紋理緩存,該紋理緩存和步驟1中的brdf圖具有相同的分辨率,將每個(gè)物體的幾何三角形通過各自的紋理坐標(biāo)光柵化到紋理緩存中。
在步驟2中,所有的法線被轉(zhuǎn)換到攝像機(jī)空間中。
步驟3,針對紋理緩存中的每個(gè)紋理像素,依據(jù)下式計(jì)算對應(yīng)的vmf分布函數(shù):
式中,γ(s)為vmf分布函數(shù);
κ為材質(zhì)對應(yīng)的材質(zhì)系數(shù),當(dāng)材質(zhì)的高光系數(shù)>>1時(shí),κ和高光系數(shù)等效;
μ為該vmf分布函數(shù)的主軸方向;
s為任意需要計(jì)算的方向。
同時(shí),解如下三次方程,得到‖r‖:
‖r‖3-κ‖r‖2-3‖r‖+κ=0;
計(jì)算得到的vmf分布函數(shù)以及‖r‖保存在對應(yīng)的紋理像素中。
步驟4,依據(jù)場景中法線的分布進(jìn)行區(qū)域分割,分割后的紋理像素中存儲(chǔ)該區(qū)域?qū)?yīng)的vmf分布函數(shù),將分割后產(chǎn)生的brdf圖拼接得到mip-map過的brdf圖;
步驟5,針對待渲染圖像中的每個(gè)像素,計(jì)算該像素覆蓋的區(qū)域大小,并據(jù)此獲得該像素對應(yīng)的mip-map層級,然后從對應(yīng)的mip-map過的brdf圖中讀取對應(yīng)的位置信息,并進(jìn)行渲染。
依據(jù)‖r‖值大小進(jìn)行步驟4中的區(qū)域分割,分割級別為m×n,其中,m為攝像機(jī)半球面上經(jīng)度方向的分割數(shù)量,n為攝像機(jī)半球面上緯度方向的分割數(shù)量;m、n的取值組合為:1×1,1×2或1×4。