diff --git a/android/filament-android/src/main/cpp/Engine.cpp b/android/filament-android/src/main/cpp/Engine.cpp index 4d6d0e51da..be61470e5f 100644 --- a/android/filament-android/src/main/cpp/Engine.cpp +++ b/android/filament-android/src/main/cpp/Engine.cpp @@ -120,7 +120,7 @@ Java_com_google_android_filament_Engine_nDestroyRenderer(JNIEnv*, jclass, // Camera -extern "C" JNIEXPORT jlong JNICALL +extern "C" [[deprecated]] JNIEXPORT jlong JNICALL Java_com_google_android_filament_Engine_nCreateCamera(JNIEnv*, jclass, jlong nativeEngine) { Engine* engine = (Engine*) nativeEngine; @@ -143,7 +143,7 @@ Java_com_google_android_filament_Engine_nGetCameraComponent(JNIEnv*, jclass, return (jlong) engine->getCameraComponent(entity); } -extern "C" JNIEXPORT void JNICALL +extern "C" [[deprecated]] JNIEXPORT void JNICALL Java_com_google_android_filament_Engine_nDestroyCamera(JNIEnv*, jclass, jlong nativeEngine, jlong nativeCamera) { Engine* engine = (Engine*) nativeEngine; diff --git a/android/filament-android/src/main/cpp/IndirectLight.cpp b/android/filament-android/src/main/cpp/IndirectLight.cpp index ebeed60cd6..4c6d941acf 100644 --- a/android/filament-android/src/main/cpp/IndirectLight.cpp +++ b/android/filament-android/src/main/cpp/IndirectLight.cpp @@ -125,7 +125,7 @@ Java_com_google_android_filament_IndirectLight_nGetRotation(JNIEnv* env, jclass, } -extern "C" JNIEXPORT void JNICALL +extern "C" [[deprecated]] JNIEXPORT void JNICALL Java_com_google_android_filament_IndirectLight_nGetDirectionEstimate(JNIEnv* env, jclass, jlong nativeIndirectLight, jfloatArray outDirection_) { IndirectLight *indirectLight = (IndirectLight *) nativeIndirectLight; @@ -134,7 +134,7 @@ Java_com_google_android_filament_IndirectLight_nGetDirectionEstimate(JNIEnv* env env->ReleaseFloatArrayElements(outDirection_, outDirection, 0); } -extern "C" JNIEXPORT void JNICALL +extern "C" [[deprecated]] JNIEXPORT void JNICALL Java_com_google_android_filament_IndirectLight_nGetColorEstimate(JNIEnv* env, jclass, jlong nativeIndirectLight, jfloatArray outColor_, jfloat x, jfloat y, jfloat z) { IndirectLight *indirectLight = (IndirectLight *) nativeIndirectLight; @@ -163,4 +163,4 @@ Java_com_google_android_filament_IndirectLight_nGetColorEstimateStatic(JNIEnv *e IndirectLight::getColorEstimate((filament::math::float3*)sh, math::float3{x, y, z}); env->ReleaseFloatArrayElements(outColor_, outColor, 0); env->ReleaseFloatArrayElements(sh_, sh, JNI_ABORT); -} \ No newline at end of file +} diff --git a/android/filament-android/src/main/cpp/VertexBuffer.cpp b/android/filament-android/src/main/cpp/VertexBuffer.cpp index 7621937f41..60d613ed75 100644 --- a/android/filament-android/src/main/cpp/VertexBuffer.cpp +++ b/android/filament-android/src/main/cpp/VertexBuffer.cpp @@ -115,7 +115,7 @@ Java_com_google_android_filament_VertexBuffer_nSetBufferAt(JNIEnv *env, jclass t return 0; } -extern "C" JNIEXPORT void JNICALL +extern "C" [[deprecated]] JNIEXPORT void JNICALL Java_com_google_android_filament_VertexBuffer_nPopulateTangentQuaternions(JNIEnv *env, jclass type, jint quatType, jint quatCount, jobject outBuffer, jint outRemaining, jint outStride, jobject normals, jint normalsRemaining, jint normalsStride, diff --git a/filament/src/details/View.h b/filament/src/details/View.h index 3aabfeed99..61937041f6 100644 --- a/filament/src/details/View.h +++ b/filament/src/details/View.h @@ -17,12 +17,6 @@ #ifndef TNT_FILAMENT_DETAILS_VIEW_H #define TNT_FILAMENT_DETAILS_VIEW_H -// Avoid warnings for using the ToneMapping API, which has been publically deprecated. -#if defined(__clang__) -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" -#endif - #include #include "upcast.h" @@ -57,6 +51,15 @@ namespace utils { class JobSystem; } // namespace utils; +// Avoid warnings for using the ToneMapping API, which has been publically deprecated. +#if defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" +#elif defined(_MSC_VER) +#pragma warning push +#pragma warning disable : 4996 +#endif + namespace filament { class FEngine; @@ -453,6 +456,8 @@ FILAMENT_UPCAST(View) #if defined(__clang__) #pragma clang diagnostic pop +#elif defined(_MSC_VER) +#pragma warning pop #endif #endif // TNT_FILAMENT_DETAILS_VIEW_H diff --git a/filament/test/filament_rendering_test.cpp b/filament/test/filament_rendering_test.cpp index a7c8e90a84..f9ed69854d 100644 --- a/filament/test/filament_rendering_test.cpp +++ b/filament/test/filament_rendering_test.cpp @@ -22,6 +22,9 @@ #include #include #include +#include + +#include #include @@ -37,6 +40,8 @@ protected: Skybox* mSkybox = nullptr; Scene* mScene = nullptr; Camera* mCamera = nullptr; + utils::Entity mCameraEntity; + ColorGrading* mColorGrading = nullptr; using closure_t = std::function; @@ -46,19 +51,30 @@ protected: mRenderer = mEngine->createRenderer(); mScene = mEngine->createScene(); - mCamera = mEngine->createCamera(); + + mCameraEntity = utils::EntityManager::get().create(); + mCamera = mEngine->createCamera(mCameraEntity); mView = mEngine->createView(); mView->setViewport({0, 0, 16, 16}); mView->setScene(mScene); mView->setCamera(mCamera); + mColorGrading = ColorGrading::Builder() + .toneMapping(ColorGrading::ToneMapping::LINEAR) + .build(*mEngine); + mView->setColorGrading(mColorGrading); + mSkybox = Skybox::Builder().build(*mEngine); mScene->setSkybox(mSkybox); } void TearDown() override { - mEngine->destroy(mCamera); + mEngine->destroy(mColorGrading); + + mEngine->destroyCameraComponent(mCameraEntity); + utils::EntityManager::get().destroy(mCameraEntity); + mEngine->destroy(mScene); mEngine->destroy(mView); mEngine->destroy(mSkybox); @@ -99,7 +115,6 @@ private: TEST_F(RenderingTest, ClearRed) { mSkybox->setColor(LinearColorA{1, 0, 0, 1}); - mView->setToneMapping(View::ToneMapping::LINEAR); mView->setDithering(View::Dithering::NONE); runTest([this](uint8_t const* rgba, uint32_t width, uint32_t height) { EXPECT_EQ(rgba[0], 0xff); @@ -111,7 +126,6 @@ TEST_F(RenderingTest, ClearRed) { TEST_F(RenderingTest, ClearGreen) { mSkybox->setColor(LinearColorA{0, 1, 0, 1}); - mView->setToneMapping(View::ToneMapping::LINEAR); mView->setDithering(View::Dithering::NONE); runTest([this](uint8_t const* rgba, uint32_t width, uint32_t height) { EXPECT_EQ(rgba[0], 0); diff --git a/filament/test/filament_test_exposure.cpp b/filament/test/filament_test_exposure.cpp index 4a5fe66ba3..ea5c665c77 100644 --- a/filament/test/filament_test_exposure.cpp +++ b/filament/test/filament_test_exposure.cpp @@ -22,6 +22,8 @@ #include #include +#include + using namespace filament; class FilamentExposureWithEngineTest : public ::testing::Test { @@ -43,7 +45,10 @@ class FilamentExposureTest : public ::testing::Test { TEST_F(FilamentExposureWithEngineTest, SetExposure) { using namespace filament; - Camera* camera = engine->createCamera(); + auto& em = utils::EntityManager::get(); + utils::Entity c = em.create(); + + Camera* camera = engine->createCamera(c); camera->setExposure(16.0f, 1 / 125.0f, 100.0f); EXPECT_FLOAT_EQ(16.0f, camera->getAperture()); @@ -62,13 +67,17 @@ TEST_F(FilamentExposureWithEngineTest, SetExposure) { EXPECT_LT(camera->getShutterSpeed(), 3600.0f); EXPECT_LT(camera->getSensitivity(), 1000000.0f); - engine->destroy(camera); + engine->destroyCameraComponent(c); + em.destroy(c); } TEST_F(FilamentExposureWithEngineTest, ComputeEV100) { using namespace filament; - Camera* camera = engine->createCamera(); + auto& em = utils::EntityManager::get(); + utils::Entity c = em.create(); + + Camera* camera = engine->createCamera(c); camera->setExposure(16.0f, 1 / 125.0f, 100.0f); int32_t ev100 = static_cast(roundf(Exposure::ev100(*camera))); @@ -98,7 +107,8 @@ TEST_F(FilamentExposureWithEngineTest, ComputeEV100) { ev100 = static_cast(roundf(Exposure::ev100(*camera))); EXPECT_EQ(16, ev100); - engine->destroy(camera); + engine->destroyCameraComponent(c); + em.destroy(c); } TEST_F(FilamentExposureTest, ComputeEV100FromLuminance) { diff --git a/libs/utils/include/utils/compiler.h b/libs/utils/include/utils/compiler.h index ef489a6ed3..62f091eaa5 100644 --- a/libs/utils/include/utils/compiler.h +++ b/libs/utils/include/utils/compiler.h @@ -37,7 +37,7 @@ #endif #if __has_attribute(deprecated) -# define UTILS_DEPRECATED __attribute__((deprecated)) +# define UTILS_DEPRECATED [[deprecated]] #else # define UTILS_DEPRECATED #endif diff --git a/samples/animation.cpp b/samples/animation.cpp index d3710c3ae7..85abc14407 100644 --- a/samples/animation.cpp +++ b/samples/animation.cpp @@ -44,6 +44,7 @@ struct App { IndexBuffer* ib; Material* mat; Camera* cam; + Entity camera; Skybox* skybox; Entity renderable; }; @@ -85,7 +86,8 @@ int main(int argc, char** argv) { .package(RESOURCES_BAKEDCOLOR_DATA, RESOURCES_BAKEDCOLOR_SIZE).build(*engine); app.renderable = EntityManager::get().create(); scene->addEntity(app.renderable); - app.cam = engine->createCamera(); + app.camera = utils::EntityManager::get().create(); + app.cam = engine->createCamera(app.camera); view->setCamera(app.cam); }; @@ -95,7 +97,9 @@ int main(int argc, char** argv) { engine->destroy(app.mat); engine->destroy(app.vb); engine->destroy(app.ib); - engine->destroy(app.cam); + + engine->destroyCameraComponent(app.camera); + utils::EntityManager::get().destroy(app.camera); }; FilamentApp::get().animate([&app](Engine* engine, View* view, double now) { diff --git a/samples/depthtesting.cpp b/samples/depthtesting.cpp index 708fe184b9..8b67846676 100644 --- a/samples/depthtesting.cpp +++ b/samples/depthtesting.cpp @@ -44,6 +44,7 @@ struct App { IndexBuffer* ib; Material* mat; Camera* cam; + Entity camera; Skybox* skybox; Entity whiteTriangle; Entity colorTriangle; @@ -71,7 +72,8 @@ int main(int argc, char** argv) { app.skybox = Skybox::Builder().color({0.1, 0.125, 0.25, 1.0}).build(*engine); scene->setSkybox(app.skybox); - app.cam = engine->createCamera(); + app.camera = utils::EntityManager::get().create(); + app.cam = engine->createCamera(app.camera); view->setCamera(app.cam); view->setPostProcessingEnabled(false); app.vb = VertexBuffer::Builder() @@ -124,7 +126,9 @@ int main(int argc, char** argv) { engine->destroy(app.mat); engine->destroy(app.vb); engine->destroy(app.ib); - engine->destroy(app.cam); + + engine->destroyCameraComponent(app.camera); + utils::EntityManager::get().destroy(app.camera); }; FilamentApp::get().animate([&app](Engine* engine, View* view, double now) { diff --git a/samples/hellotriangle.cpp b/samples/hellotriangle.cpp index 0601742047..8c237c68b1 100644 --- a/samples/hellotriangle.cpp +++ b/samples/hellotriangle.cpp @@ -44,6 +44,7 @@ struct App { IndexBuffer* ib; Material* mat; Camera* cam; + Entity camera; Skybox* skybox; Entity renderable; }; @@ -99,7 +100,8 @@ int main(int argc, char** argv) { .castShadows(false) .build(*engine, app.renderable); scene->addEntity(app.renderable); - app.cam = engine->createCamera(); + app.camera = utils::EntityManager::get().create(); + app.cam = engine->createCamera(app.camera); view->setCamera(app.cam); }; @@ -109,7 +111,8 @@ int main(int argc, char** argv) { engine->destroy(app.mat); engine->destroy(app.vb); engine->destroy(app.ib); - engine->destroy(app.cam); + engine->destroyCameraComponent(app.camera); + utils::EntityManager::get().destroy(app.camera); }; FilamentApp::get().animate([&app](Engine* engine, View* view, double now) { diff --git a/samples/point_sprites.cpp b/samples/point_sprites.cpp index 6a89f9ff7b..9623f9db71 100644 --- a/samples/point_sprites.cpp +++ b/samples/point_sprites.cpp @@ -55,6 +55,7 @@ struct App { Material* mat; MaterialInstance* matInstance; Camera* cam; + Entity camera; Skybox* skybox; Texture* tex; Entity renderable; @@ -154,7 +155,8 @@ void setup(App& app, Engine* engine, View* view, Scene* scene) { .build(*engine, app.renderable); scene->addEntity(app.renderable); - app.cam = engine->createCamera(); + app.camera = utils::EntityManager::get().create(); + app.cam = engine->createCamera(app.camera); view->setCamera(app.cam); app.skybox = Skybox::Builder().color({0.1, 0.125, 0.25, 1.0}).build(*engine); @@ -168,7 +170,9 @@ void cleanup(App& app, Engine* engine) { engine->destroy(app.mat); engine->destroy(app.vb); engine->destroy(app.ib); - engine->destroy(app.cam); + + engine->destroyCameraComponent(app.camera); + utils::EntityManager::get().destroy(app.camera); } void animate(App& app, Engine* engine, View* view, double now) { diff --git a/samples/texturedquad.cpp b/samples/texturedquad.cpp index e3fc4e5166..5228c8ee9b 100644 --- a/samples/texturedquad.cpp +++ b/samples/texturedquad.cpp @@ -53,6 +53,7 @@ struct App { Material* mat; MaterialInstance* matInstance; Camera* cam; + Entity camera; Skybox* skybox; Texture* tex; Entity renderable; @@ -113,7 +114,8 @@ int main(int argc, char** argv) { scene->setSkybox(app.skybox); view->setPostProcessingEnabled(false); - app.cam = engine->createCamera(); + app.camera = utils::EntityManager::get().create(); + app.cam = engine->createCamera(app.camera); view->setCamera(app.cam); // Create quad renderable @@ -157,7 +159,9 @@ int main(int argc, char** argv) { engine->destroy(app.tex); engine->destroy(app.vb); engine->destroy(app.ib); - engine->destroy(app.cam); + + engine->destroyCameraComponent(app.camera); + utils::EntityManager::get().destroy(app.camera); }; FilamentApp::get().animate([&app](Engine* engine, View* view, double now) { diff --git a/samples/vbotest.cpp b/samples/vbotest.cpp index 442c4b0b44..48a2f7b1b2 100644 --- a/samples/vbotest.cpp +++ b/samples/vbotest.cpp @@ -34,6 +34,7 @@ struct App { IndexBuffer* ib; Material* mat; Camera* cam; + utils::Entity camera; utils::Entity renderable; }; @@ -78,7 +79,8 @@ int main(int argc, char** argv) { scene->addEntity(app.renderable); // Replace the FilamentApp camera with identity. - view->setCamera(app.cam = engine->createCamera()); + app.camera = utils::EntityManager::get().create(); + view->setCamera(app.cam = engine->createCamera(app.camera)); }; auto cleanup = [&app](Engine* engine, View*, Scene*) { @@ -86,7 +88,8 @@ int main(int argc, char** argv) { engine->destroy(app.mat); engine->destroy(app.vb); engine->destroy(app.ib); - engine->destroy(app.cam); + engine->destroyCameraComponent(app.camera); + utils::EntityManager::get().destroy(app.camera); }; FilamentApp::get().run(config, setup, cleanup); diff --git a/samples/viewtest.cpp b/samples/viewtest.cpp index 63d7ef0812..1e2ee39039 100644 --- a/samples/viewtest.cpp +++ b/samples/viewtest.cpp @@ -30,6 +30,7 @@ using namespace filament; struct App { VertexBuffer* vb; IndexBuffer* ib; + utils::Entity camera; Camera* cam; Skybox* skybox; utils::Entity renderable; @@ -63,7 +64,8 @@ int main(int argc, char** argv) { .geometry(0, RenderableManager::PrimitiveType::TRIANGLES, app.vb, app.ib, 0, 3) .build(*engine, app.renderable); scene->addEntity(app.renderable); - app.cam = engine->createCamera(); + app.camera = utils::EntityManager::get().create(); + app.cam = engine->createCamera(app.camera); view->setCamera(app.cam); }; @@ -72,7 +74,9 @@ int main(int argc, char** argv) { engine->destroy(app.renderable); engine->destroy(app.vb); engine->destroy(app.ib); - engine->destroy(app.cam); + + engine->destroyCameraComponent(app.camera); + utils::EntityManager::get().destroy(app.camera); }; FilamentApp::get().run(config, setup, cleanup); diff --git a/web/filament-js/jsbindings.cpp b/web/filament-js/jsbindings.cpp index 2c8f186391..ca8a080917 100644 --- a/web/filament-js/jsbindings.cpp +++ b/web/filament-js/jsbindings.cpp @@ -79,6 +79,10 @@ #include #include +// Avoid warnings for deprecated Filament APIs. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + using namespace emscripten; using namespace filament; using namespace filamesh; @@ -1635,3 +1639,5 @@ class_("gltfio$ResourceLoader") .function("asyncUpdateLoad", &ResourceLoader::asyncUpdateLoad); } // EMSCRIPTEN_BINDINGS + +#pragma clang diagnostic pop