diff --git a/ios/Classes/SwiftPolyvoxFilamentPlugin.swift b/ios/Classes/SwiftPolyvoxFilamentPlugin.swift index ac7aeb90..e63902af 100644 --- a/ios/Classes/SwiftPolyvoxFilamentPlugin.swift +++ b/ios/Classes/SwiftPolyvoxFilamentPlugin.swift @@ -362,7 +362,8 @@ public class SwiftPolyvoxFilamentPlugin: NSObject, FlutterPlugin, FlutterTexture clear_assets(viewer!) result("OK") case "loadIbl": - load_ibl(self.viewer, call.arguments as! String) + let args = call.arguments as! Array + load_ibl(self.viewer, args[0] as! String, Float(args[1] as! Double)) result("OK"); case "removeIbl": remove_ibl(self.viewer) diff --git a/ios/include/FilamentViewer.hpp b/ios/include/FilamentViewer.hpp index 9c58f3d5..1583415a 100644 --- a/ios/include/FilamentViewer.hpp +++ b/ios/include/FilamentViewer.hpp @@ -53,7 +53,7 @@ namespace polyvox { void loadSkybox(const char* const skyboxUri); void removeSkybox(); - void loadIbl(const char* const iblUri); + void loadIbl(const char* const iblUri, float intensity); void removeIbl(); SceneAsset* loadGlb(const char* const uri); diff --git a/ios/include/PolyvoxFilamentApi.h b/ios/include/PolyvoxFilamentApi.h index 0915180d..b90e911c 100644 --- a/ios/include/PolyvoxFilamentApi.h +++ b/ios/include/PolyvoxFilamentApi.h @@ -32,7 +32,7 @@ void set_background_image(void* viewer, const char* path); void set_background_color(void* viewer, const float* color); void set_background_image_position(void* viewer, float x, float y, bool clamp); void load_skybox(void* viewer, const char* skyboxPath); -void load_ibl(void* viewer, const char* iblPath); +void load_ibl(void* viewer, const char* iblPath, float intensity); void remove_skybox(void* viewer); void remove_ibl(void* viewer); int32_t add_light(void* viewer, uint8_t type, float colour, float intensity, float posX, float posY, float posZ, float dirX, float dirY, float dirZ, bool shadows); diff --git a/ios/src/FilamentViewer.cpp b/ios/src/FilamentViewer.cpp index 3adf0949..9a2124ad 100644 --- a/ios/src/FilamentViewer.cpp +++ b/ios/src/FilamentViewer.cpp @@ -822,7 +822,7 @@ void FilamentViewer::removeIbl() { _scene->setIndirectLight(nullptr); } -void FilamentViewer::loadIbl(const char *const iblPath) { +void FilamentViewer::loadIbl(const char *const iblPath, float intensity) { removeIbl(); if (iblPath) { Log("Loading IBL from %s", iblPath); @@ -848,7 +848,7 @@ void FilamentViewer::loadIbl(const char *const iblPath) { _indirectLight = IndirectLight::Builder() .reflections(_iblTexture) .irradiance(3, harmonics) - .intensity(30000.0f) + .intensity(intensity) .build(*_engine); _scene->setIndirectLight(_indirectLight); diff --git a/ios/src/PolyvoxFilamentApi.cpp b/ios/src/PolyvoxFilamentApi.cpp index 1a766dfe..93b1507f 100644 --- a/ios/src/PolyvoxFilamentApi.cpp +++ b/ios/src/PolyvoxFilamentApi.cpp @@ -39,8 +39,8 @@ extern "C" { ((FilamentViewer*)viewer)->loadSkybox(skyboxPath); } - void load_ibl(void* viewer, const char* iblPath) { - ((FilamentViewer*)viewer)->loadIbl(iblPath); + void load_ibl(void* viewer, const char* iblPath, float intensity) { + ((FilamentViewer*)viewer)->loadIbl(iblPath, intensity); } void remove_skybox(void* viewer) { diff --git a/lib/filament_controller.dart b/lib/filament_controller.dart index dc504dd9..d570b337 100644 --- a/lib/filament_controller.dart +++ b/lib/filament_controller.dart @@ -202,8 +202,8 @@ class PolyvoxFilamentController extends FilamentController { } @override - Future loadIbl(String lightingPath) async { - await _channel.invokeMethod("loadIbl", lightingPath); + Future loadIbl(String lightingPath, {double intensity = 30000}) async { + await _channel.invokeMethod("loadIbl", [lightingPath, intensity]); } @override