<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Filament 實(shí)時渲染引擎介紹~~

          共 3743字,需瀏覽 8分鐘

           ·

          2021-08-18 04:58

          作者:_子寬

          來源:

          https://blog.csdn.net/u010281174/article/details/107847966

          摘要

          Filament是一款Google開發(fā)的跨平臺的實(shí)時渲染引擎,支持PBR材質(zhì),并且針對Android平臺做了優(yōu)化(畢竟Google親兒子)。本文將針對Filament的特點(diǎn),簡單介紹Filament的一些特性,包括它的材質(zhì)系統(tǒng)和光照系統(tǒng)。

          這些設(shè)計對于實(shí)現(xiàn)一款渲染器,特別是PBR渲染器具有一定的參考意義。至于具體的實(shí)現(xiàn)細(xì)節(jié),因?yàn)楦鶳BR理論重合度比較高,就不再贅述。

          如果對這款引擎很感興趣,可以參考他們的文檔。這個文檔怎么說呢,詳細(xì)的地方非常詳細(xì),簡略的地方一律“TODO”過,很神奇。

          平臺特性

          • 跨平臺,支持Android,IOS,Linux,maxOS,Windows
          • 提供C++,Java,JavaScript API
          • 底層圖形庫支持OpenGL 4.1+,OpenGL ES 3.0+,Metal,Vulkan 1.0,WebGL 2.0

          渲染特性

          • 支持Clustered forward renderer
          • 支持microfacet BRDF
          • 支持HDR/linear 光照
          • 支持各向異性材質(zhì)
          • 支持metallic,roughness,ao,normal mapping,texture mapping
          • 支持布料渲染
          • (弱)支持半透明材質(zhì)
          • 支持IBL
          • 支持物理相機(jī)模擬(快門,光圈等)
          • 支持shadows
          • 支持全局霧模擬
          • 支持色彩系統(tǒng)(color grading)
          • 支持FXAA,MSAA
          • 支持動態(tài)分辨率

          材質(zhì)系統(tǒng)

          材質(zhì)模型

          Filament定義了以下幾種材質(zhì)模型:

          • Lit(standard)
          • Subsurface
          • Cloth
          • Unlit

          其中,第一種也是用的最多的一種,在別的渲染器可能稱為standard model/material。

          Cloth用于模擬布料。

          Unlit嚴(yán)格來說不算一種材質(zhì),可以理解為在屏幕上顯示一些調(diào)試信息用的材質(zhì)。

          Lit Model

          Lit model是Filament支持最全面的也是最基礎(chǔ)的材質(zhì)模型,它是基于PBR模型的材質(zhì),包含以下幾種屬性:

          • baseColor,表示non-metallic表面的漫反射albedo,或者metallic表面的高光顏色
          • metallic,表示材質(zhì)的金屬性,0代表dielectric,1.0代表conductor

          metallic從0(左)到1(右)。

          • roughness,表示材質(zhì)的粗糙度,1.0代表光滑,0代表粗糙

          非金屬的roughness從0(左)到1(右)。

          金屬的roughness從0(左)到1(右)。

          • reflectance,表示Fresnel反射系數(shù)

          reflectance從0(左)到1(右)。

          • normal,表示材質(zhì)表面的局部法向偏移
          • ambientOcclusion,表示環(huán)境光照強(qiáng)度
          • emissive,表示材質(zhì)表面的發(fā)光程度
          • anisotropy和anisotropyDirection,描述各向異性程度
          • clearCoat,clearCoatRoughness和clearChatNormal,表示clear coat layer的參數(shù)
          • bentNormal,用于提升間接光的效果
          • postLightingColor,用于跟光照計算結(jié)果混合,描述特殊光照效果
          • ior,表示物體的折射率

          ior從1(左)到1.5(右)。

          • transmission,表示物體的透明度

          transmission從0(左)到1(右)。

          • absorption,表示材質(zhì)對不同透射光線的吸收系數(shù)

          absorption從 (0.0, 0.02, 0.14) (左)到 (0.0, 0.36, 2.3) (右)

          • microThickness和thickness,材質(zhì)的厚度參數(shù)

          其中,baseColor、metallic、roughness、reflectance、normal、ambientOcclusion、emissive都是PBR材質(zhì)中常用的參數(shù),用法也基本一致。

          有些物體表面會覆蓋一層薄薄的半透明材質(zhì),類似于手機(jī)表面的貼膜。

          但是這層薄膜也是有一定的顏色和朝向的,clear coat參數(shù)(clearCoat,clearCoatRoughness和clearChatNormal)就是用于描述這一層表面材質(zhì),默認(rèn)它是各向同性、非金屬的。

          其中clearCoat應(yīng)當(dāng)被視為布爾變量,描述的是是否存在此表面材質(zhì)。

          clearCoat從0(左)到1(右)。

          clearCoatRoughness從0(左)到1(右)。

          除此之外,有些物體表面是各向異性的,例如朝單一方向磨砂的金屬。anisotropy參數(shù)可以用于描述這種材質(zhì)。

          anisotropy從0(左)到1(右)。

          Subsurface model

          TODO

          這個模型文檔里沒有介紹,我也沒有用過,因此這里先略過。后面慢慢看代碼吧。

          Cloth model

          Cloth模型用于描述類似于紡織物的布料材質(zhì),這類布料的一個特點(diǎn)是其表面由纖維堆疊而成,會吸收和散射一定的入射光線。

          Cloth model包含前面Lit model的各種參數(shù),刪除了metallic和reflectance,額外添加兩個cloth相關(guān)的參數(shù):

          • sheenColor,描述高光反射的顏色

          藍(lán)色纖維有(右)與沒有(左)sheenColor

          • subsurfaceColor,描述次表面散射的顏色

          白色布料(左)與帶棕色subsurface scatting的白色布料(右)

          Unlit model

          如前所述,Unlit model不算是一個材質(zhì)模型,它用于渲染天空盒,或場景中以外的物體,比如用戶界面的圖形和文字,或者用于調(diào)試。

          如下圖所示。該模型只有三個參數(shù):

          • baseColor
          • emissive
          • postLightingColor

          用法跟Lit model一致。

          光照系統(tǒng)

          Filament支持的光照可以分為直接光(direct lighting)和間接光(indirect lighting),前者包括:

          • 方向光(directional lights)
          • 精確光源(punctual lights),包括point lights和spot lights,二者的區(qū)別是point light是超各個方向均勻發(fā)光的,而spot light有一個朝向,朝向以外的區(qū)域光照強(qiáng)度逐漸減少,直至為零:
          • Photometric lights,用配置文件描述光源發(fā)出的光線在各個方向上的強(qiáng)度,可以還原真實(shí)世界中的光源情況。

          這一套描述是通用的光源描述,F(xiàn)ilament的用法是將描述文件處理為紋理,然后在渲染的時候取出來判斷計算光照。我理解這個光源其實(shí)是對spot light的拓展。

          下圖展示了一些不同的光源描述文件。

          • 光源(Area lights):僅支持正方形和圓形的面光源。

          間接光包括:

          • Image-based lighting

          光照參數(shù)

          對于直接光來說,F(xiàn)ilament用以下參數(shù)來描述一個光源:

          • Type,定義光源類型,包括directional,point,spot,area
          • Direction,描述光線朝向,或者面光源的法向
          • Color,描述光源發(fā)出的光線的顏色
          • Intensity,描述光線強(qiáng)度
          • Falloff radius,光源所能影響到的最大半徑
          • Inner angle和Outer angle,描述spot light的內(nèi)外圓錐的角度
          • Length和Radius,描述面光源的邊長、半徑
          • Photometric profile,Masked profile和Photometric multiplier,描述puctual lights的屬性

          Imaging Pipeline

          Imaging pipeline用于對片元著色器輸出的顏色做進(jìn)一步處理,使其色彩更加真實(shí)。

          包含以下幾個步驟:

          • 白平衡
          • 色彩分級
          • 色調(diào)映射
          • OETF(opto-electronic transfer function)

          流程圖如下:

          Physically based camera

          基于物理的相機(jī)可以設(shè)置相關(guān)的相機(jī)參數(shù),對成像效果進(jìn)行調(diào)整。應(yīng)用到的相機(jī)參數(shù)包括光圈(aperture)、快門(shutter speed)、敏感度(ISO)。

          由于采用三個量表示曝光效果過于繁瑣,因此Filament將其簡化為exposure value,簡稱EV。

          總結(jié)

          總的來說,F(xiàn)ilament是一款還在開發(fā)中的渲染器,主要特點(diǎn)是PBR材質(zhì)系統(tǒng),對Android的支持,色彩后處理系統(tǒng),其次是半成熟的光照系統(tǒng)。

          作為渲染領(lǐng)域的學(xué)習(xí)材料還是不錯的。


          技術(shù)交流,歡迎加我微信:ezglumes ,拉你入技術(shù)交流群。

          推薦閱讀:

          音視頻面試基礎(chǔ)題

          OpenGL ES 學(xué)習(xí)資源分享

          開通專輯 | 細(xì)數(shù)那些年寫過的技術(shù)文章專輯

          NDK 學(xué)習(xí)進(jìn)階免費(fèi)視頻來了

          推薦幾個堪稱教科書級別的 Android 音視頻入門項目

          覺得不錯,點(diǎn)個在看唄~


          瀏覽 183
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩aⅴ网站 | 日本A在线播放 | 欧美黄色成人在线 | 看日韩毛片 | 青草天堂|