expose setToneMapping method

This commit is contained in:
Nick Fisher
2023-08-24 09:29:16 +08:00
parent 7687e54a0d
commit 482666da31
6 changed files with 51 additions and 8 deletions

View File

@@ -136,6 +136,8 @@ FilamentViewer::FilamentViewer(const void* context, const ResourceLoaderWrapper*
Log("Main camera created");
_view = _engine->createView();
setToneMapping(ToneMapping::ACES);
decltype(_view->getBloomOptions()) opts;
opts.enabled = true;
opts.strength = 0.6f;
@@ -144,13 +146,6 @@ FilamentViewer::FilamentViewer(const void* context, const ResourceLoaderWrapper*
_view->setScene(_scene);
_view->setCamera(_mainCamera);
// ToneMapper *tm = new ACESToneMapper();
ToneMapper *tm = new LinearToneMapper();
colorGrading = ColorGrading::Builder().toneMapper(tm).build(*_engine);
delete tm;
_view->setColorGrading(colorGrading);
_cameraFocalLength = 28.0f;
_mainCamera->setLensProjection(_cameraFocalLength, 1.0f, kNearPlane,
kFarPlane);
@@ -243,6 +238,28 @@ FilamentViewer::FilamentViewer(const void* context, const ResourceLoaderWrapper*
_scene->addEntity(imageEntity);
}
void FilamentViewer::setToneMapping(ToneMapping toneMapping) {
ToneMapper* tm;
switch(toneMapping) {
case ToneMapping::ACES:
tm = new ACESToneMapper();
break;
case ToneMapping::LINEAR:
tm = new LinearToneMapper();
break;
case ToneMapping::FILMIC:
tm = new FilmicToneMapper();
break;
}
auto newColorGrading = ColorGrading::Builder().toneMapper(tm).build(*_engine);
_view->setColorGrading(newColorGrading);
_engine->destroy(colorGrading);
delete tm;
}
void FilamentViewer::setFrameInterval(float frameInterval) {
Renderer::FrameRateOptions fro;
fro.interval = frameInterval;