1. 在 sample_full_pbr 的例子中,直接使用 IBL 時候,sample_full_pbr參數的如下
-i :設置IBL的目錄
-m : 物體的PBR材質貼圖
例如:
sample -m assets/models/PreviewSphere_Fabric -i ./envs/Studio_05 assets/models/PreviewSphere_Fabric/PreviewSphere.obj
2. 利用 cgmen 來生成 IBL 所需要的數據,cgmen 生成的重要數據有:
diffuse indirect(SH),specular indirect(dfg, specular cubemap rgbm 一系列文件)
cgmen的參數:
--no-mirror :是否鏡像
--format : 輸出的格式大多數都是rgbm
--ibl-dfg : 生成 dfg 的 目錄
例如:
--ibl-dfg test_dfg.png --no-mirror --format rgbm --type cubemap --deploy ./test assets/Studio_05.exr
需要注意的就是:
a. dfg texture 在 filament 是直接寫死了一張,不會因爲 環境圖 變化而變化,
因爲在filament 的 CMakelists.txt 裏面看到
set(output_path "${GENERATION_ROOT}/generated/data/dfg.inc")
add_custom_command(
OUTPUT ${output_path}
COMMAND cmgen --quiet --ibl-dfg-multiscatter --ibl-dfg-cloth --ibl-dfg=${output_path}
DEPENDS cmgen
COMMENT "Generating DFG LUT ${output_path}"
而且 所有的DFG 都是使用
E:\filament\out\cmake-release\filament\generated\data\dfg.inc 這一張,filament寫死了, 看代碼 DFG.cpp 可以找到證據
b. dfg texture 一定要 clamp。