filament

创建日期:2024-06-21
更新日期:2025-02-01

源码:https://github.com/google/filament

说明:Filament 是一个基于物理的实时渲染引擎,适用于 Android、iOS、Windows、Linux、macOS 和 WebGL2。

工具用法

cmgen

cmgen 是一个命令行工具,用于从环境映射生成 SH 和 mipmap 级别。

Cubemaps 和 equirectangular 格式都支持,自动检测

根据源图像的纵横比。

cso-lut

cso-lut 为锥体/球体遮挡生成查找表。

filamesh

filamesh 是一种将网格转换为优化二进制格式的工具。

glslminifier

glslminifier 通过删除注释、空行和缩进来缩小 GLSL 着色器代码。

matc

matc 是一个用于编译材质定义的命令行工具。

示例:

  1. 材质定义:defaultMaterial.mat。

material {

name : "Filament Default Material",

shadingModel : unlit

}

fragment {

void material(inout MaterialInputs material) {

prepareMaterial(material);

material.baseColor.rgb = vec3(0.8);

}

}

  1. 编译材质。

matc -o ./defaultMaterial.filamat ./defaultMaterial.mat

  1. 将编译后的材质转换为嵌入资源。

resgen -c defaultMaterial.filamat

  1. 在程序中引用材质。

#include "materials/resources.h"

filament::Material* mat = filament::Material::Builder()

.package(RESOURCES_DEFAULTMATERIAL_DATA,RESOURCES_DEFAULTMATERIAL_SIZE)

.build(*engine);

注意:要将materials/resources.c添加到源码。

matinfo

matinfo 打印有关使用 matc 编译的材料文件的信息。

示例:

matinfo ./defaultMaterial.filamat

返回:

Material:

Version:                        15

Name:                           Filament Default Material

Shading:

Model:                          unlit

Material domain:                surface

Vertex domain:                  object

Interpolation:                  smooth

Shadow multiply:                false

Specular anti-aliasing:         false

Variance:                   0.15

Threshold:                  0.2

Clear coat IOR change:          true

Raster state:

Blending:                       opaque

Color write:                    true

Depth write:                    true

Depth test:                     true

Double sided:                   false

Culling:                        back

Transparency:                   default

Required attributes:

position

GLSL shaders:

#0   gles30 vs 0x00

#1   gles30 fs 0x00

#2   gles30 vs 0x08   SKN

Vulkan shaders:

Metal shaders:

Chunks:

Name        Size

MAT_SHAD       1

MAT_DEWS       1

mipgen

mipgen 为图像生成低至 1x1 级别的 mipmap。

normal-blending

normal-blending 是一种使用 Reoriented Normal Mapping 混合法线贴图的工具。

resgen

resgen 聚合了一系列二进制 blob,每个 blob 都成为一个“资源”,其 id

是输入文件的基本名称。

rgb-to-lmsr

rgb-to-lmsr 计算 RGB (Rec.709) 到 LMSR 变换矩阵。

roughness-prefilter

roughness-prefilter从法线贴图生成预过滤的粗糙度贴图,以帮助减轻镜面反射锯齿。

specular-color

specular-color 根据光谱数据计算导体的基色。