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