google/filament 场景(Scene)管理

    filament专注于渲染,场景管理比较简单。一般场景管理中的空间管理、碰撞检测、LOD、GUI,filament中都没有

1.场景(Scene)

    场景(Scene)是渲染物体和光源等的容器,可以增加和删除对象。

    场景(Scene)创建和销毁。

Engine* engine = Engine::create();
Scene* scene = engine->createScene();
engine->destroy(&scene); 

2.天空盒(SkyBox)

   天空盒(SkyBox)用一个完整的空间来包围整个场景(Scene)。目前仅支持基于纹理(立方体贴图)的天空盒

   天空盒(SkyBox)创建和销毁。

filament::Engine* engine = filament::Engine::create();
filament::IndirectLight* skybox = filament::Skybox::Builder().environment(cubemap).build(*engine);
engine->destroy(skybox);

3.包围盒(Box)

    轴向3D包围盒定义了中心和半范围。

 /** Center of the 3D box */
 math::float3 center = {};
 /** Half extent from the center on all 3 axis */
 math::float3 halfExtent = {};

4.间接光照(IndirectLight)

   间接光照(IndirectLight)用于模拟环境光。环境中高动态范围图像,并用工具cmgen处理以获取需要的间接光照。目前的间接光照局限于表示来自无穷远处的全局照明

   间接光照(IndirectLight)创建和销毁。

filament::Engine* engine = filament::Engine::create();
filament::IndirectLight* environment = filament::IndirectLight::Builder()
            .reflections(cubemap)
            .irradiance(numBands, sphericalHarmonicsCoefficients)
            .build(*engine);
engine->destroy(environment);

5.相机(Camera)

  相机(Camera)包含观察场景的位置和方向,也控制投影和曝光参数。

  相机(Camera)创建和销毁。

filament::Engine* engine = filament::Engine::create();
filament::Camera* myCamera = engine->createCamera();
myCamera->setProjection(45, 16.0/9.0, 0.1, 1.0);
myCamera->lookAt({0, 1.60, 1}, {0, 0, 0});
engine->destroy(myCamera)

6.光源(Light)

  场景中光源的类型

  • 方向光源(directional lights)
  • 点光源 (point lights)
  • 聚光灯(spot lights)

   光源(Light)创建和销毁。

filament::Engine* engine = filament::Engine::create();
utils::Entity sun = utils::EntityManager.get().create();
filament::LightManager::Builder(Type::SUN).castShadows(true).build(*engine, sun);
engine->getLightManager().destroy(sun);

7.视图(View)   

    视图(View)包含渲染场景所需的状态信息。如:场景(Scene)、相机(Camera)、视口(Viewport)、渲染参数(rendering parameters)。 view对象较大,占用内存较多,所以不建议使用过多的view对象。涉及技术:

  •     多重采样抗锯齿(MSAA  ,MultiSampling Anti-Aliasing)
  •     阴影贴图(shadow mapping)
  •     动态分辨率(dynamic resolution)
  •     渲染质量等级(QualityLevel)
  •     色调映射和伽马编码(Tone-mapping & gamma encoding)
  •     抖动显示(Dithering)
  •     快速近似抗锯齿(FXAA,Fast Approximate Anti-Aliasing)

你可能感兴趣的:(DirectX,12)