Skip to content

Commit d183347

Browse files
committed
Merge branch 'rc/1.65.1' into release
2 parents ce71136 + 4a65fa7 commit d183347

File tree

126 files changed

+1932
-889
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

126 files changed

+1932
-889
lines changed

CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,6 +532,15 @@ if (FILAMENT_SUPPORTS_OPENGL)
532532
add_definitions(-DFILAMENT_SUPPORTS_OPENGL)
533533
endif()
534534

535+
if (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel")
536+
option(FILAMENT_ENABLE_PERFETTO "Enable perfetto SDK on Android" OFF)
537+
else()
538+
option(FILAMENT_ENABLE_PERFETTO "Enable perfetto SDK on Android" ON)
539+
endif()
540+
if (FILAMENT_ENABLE_PERFETTO)
541+
add_definitions(-DFILAMENT_ENABLE_PERFETTO)
542+
endif()
543+
535544
# By default, build with Vulkan support on desktop platforms, although clients must request to use
536545
# it at run time.
537546
if (WIN32 OR WEBGL OR IOS)

NEW_RELEASE_NOTES.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,3 @@ We are chaning the way Vulkan buffers are handled. We need to switch over to a m
77
appropriate header in [RELEASE_NOTES.md](./RELEASE_NOTES.md).
88

99
## Release notes for next branch cut
10-
11-
- materials: added `getEyeFromViewMatrix()` for vertex shader [⚠️ **Recompile Materials**]

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ repositories {
3131
}
3232
3333
dependencies {
34-
implementation 'com.google.android.filament:filament-android:1.65.0'
34+
implementation 'com.google.android.filament:filament-android:1.65.1'
3535
}
3636
```
3737

@@ -51,7 +51,7 @@ Here are all the libraries available in the group `com.google.android.filament`:
5151
iOS projects can use CocoaPods to install the latest release:
5252

5353
```shell
54-
pod 'Filament', '~> 1.65.0'
54+
pod 'Filament', '~> 1.65.1'
5555
```
5656

5757
## Documentation

RELEASE_NOTES.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ A new header is inserted each time a *tag* is created.
77
Instead, if you are authoring a PR for the main branch, add your release note to
88
[NEW_RELEASE_NOTES.md](./NEW_RELEASE_NOTES.md).
99

10+
## v1.65.1
11+
12+
- `setFrameScheduledCallback` now works on all backends (frame presentation scheduling is still only
13+
available on Metal). Non-Metal backends can use the callback to be notified when Filament has
14+
finished processing a frame on the CPU.
15+
- materials: added `getEyeFromViewMatrix()` for vertex shader [⚠️ **Recompile Materials**]
16+
- matc: make `--workarounds=none` the default [**Recompile Materials to take effect**]
17+
1018
## v1.65.0
1119

1220
lighting: the intermediate froxel record buffer is now dynamically sized [⚠️ **New Material Version**]

android/filamat-android/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
cmake_minimum_required(VERSION 3.19)
22
project(filamat-android)
33

4+
set(CMAKE_CXX_STANDARD 20)
5+
46
option(FILAMENT_ENABLE_MATDBG "Enables Material debugger" OFF)
57

68
set(FILAMENT_DIR ${FILAMENT_DIST_DIR})

android/filament-android/CMakeLists.txt

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ option(FILAMENT_ENABLE_MATDBG "Enables Material debugger" OFF)
77
option(FILAMENT_DISABLE_MATOPT "Disables material optimizations" OFF)
88
option(FILAMENT_SUPPORTS_WEBGPU "Enables WebGPU on Android" OFF)
99

10+
set(CMAKE_CXX_STANDARD 20)
11+
1012
set(FILAMENT_DIR ${FILAMENT_DIST_DIR})
1113

1214
add_library(filament STATIC IMPORTED)
@@ -130,6 +132,14 @@ add_library(filament-jni SHARED
130132
../common/NioUtils.cpp
131133
)
132134

135+
target_include_directories(filament-jni PRIVATE
136+
..
137+
${FILAMENT_DIR}/include
138+
../../filament/backend/include
139+
../../third_party/robin-map
140+
../../third_party/perfetto
141+
../../libs/utils/include)
142+
133143
# Ordering is significant in the following list. The PRIVATE qualifier prevents transitive deps.
134144
target_link_libraries(filament-jni
135145
PRIVATE filament-generatePrefilterMipmap
@@ -144,29 +154,21 @@ target_link_libraries(filament-jni
144154
PRIVATE android
145155
PRIVATE jnigraphics
146156
PRIVATE utils
147-
PRIVATE perfetto
148-
PRIVATE abseil
157+
PRIVATE perfetto # needed only when FILAMENT_ENABLE_PERFETTO is defined
158+
PRIVATE abseil # needed only when FILAMENT_USE_ABSEIL_LOGGING is defined
149159
PRIVATE zstd
150160

151161
# libgeometry is PUBLIC because gltfio uses it.
152162
PUBLIC geometry
153163

154-
$<$<STREQUAL:${FILAMENT_ENABLE_FGVIEWER},ON>:fgviewer>
155-
$<$<STREQUAL:${FILAMENT_ENABLE_MATDBG},ON>:matdbg>
156-
$<$<STREQUAL:${FILAMENT_ENABLE_MATDBG},ON>:filamat>
157-
$<$<STREQUAL:${FILAMENT_SUPPORTS_VULKAN},ON>:bluevk>
158-
$<$<STREQUAL:${FILAMENT_SUPPORTS_VULKAN},ON>:vkshaders>
159-
$<$<STREQUAL:${FILAMENT_SUPPORTS_WEBGPU},ON>:webgpu_dawn>
160-
$<$<STREQUAL:${FILAMENT_SUPPORTS_VULKAN},ON>:smol-v>
164+
PRIVATE $<$<STREQUAL:${FILAMENT_ENABLE_FGVIEWER},ON>:fgviewer>
165+
PRIVATE $<$<STREQUAL:${FILAMENT_ENABLE_MATDBG},ON>:matdbg>
166+
PRIVATE $<$<STREQUAL:${FILAMENT_ENABLE_MATDBG},ON>:filamat>
167+
PRIVATE $<$<STREQUAL:${FILAMENT_SUPPORTS_VULKAN},ON>:bluevk>
168+
PRIVATE $<$<STREQUAL:${FILAMENT_SUPPORTS_VULKAN},ON>:vkshaders>
169+
PRIVATE $<$<STREQUAL:${FILAMENT_SUPPORTS_VULKAN},ON>:smol-v>
170+
PRIVATE $<$<STREQUAL:${FILAMENT_SUPPORTS_WEBGPU},ON>:webgpu_dawn>
161171
)
162172

163-
target_include_directories(filament-jni PRIVATE
164-
..
165-
${FILAMENT_DIR}/include
166-
../../filament/backend/include
167-
../../third_party/robin-map
168-
../../third_party/perfetto
169-
../../libs/utils/include)
170-
171173
# Force a relink when the version script is changed:
172174
set_target_properties(filament-jni PROPERTIES LINK_DEPENDS ${VERSION_SCRIPT})

android/filament-android/src/main/cpp/RenderableManager.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,13 @@ Java_com_google_android_filament_RenderableManager_nGetPrimitiveCount(JNIEnv*, j
450450
return (jint) rm->getPrimitiveCount((RenderableManager::Instance) i);
451451
}
452452

453+
extern "C" JNIEXPORT jint JNICALL
454+
Java_com_google_android_filament_RenderableManager_nGetInstanceCount(JNIEnv*, jclass,
455+
jlong nativeRenderableManager, jint i) {
456+
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
457+
return (jint) rm->getInstanceCount((RenderableManager::Instance) i);
458+
}
459+
453460
extern "C" JNIEXPORT void JNICALL
454461
Java_com_google_android_filament_RenderableManager_nSetMaterialInstanceAt(JNIEnv*, jclass,
455462
jlong nativeRenderableManager, jint i, jint primitiveIndex, jlong nativeMaterialInstance) {

android/filament-android/src/main/java/com/google/android/filament/RenderableManager.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,14 @@ public int getPrimitiveCount(@EntityInstance int i) {
851851
return nGetPrimitiveCount(mNativeObject, i);
852852
}
853853

854+
/**
855+
* Gets the immutable number of instances in the given renderable.
856+
*/
857+
@IntRange(from = 0)
858+
public int getInstanceCount(@EntityInstance int i) {
859+
return nGetInstanceCount(mNativeObject, i);
860+
}
861+
854862
/**
855863
* Changes the material instance binding for the given primitive.
856864
*
@@ -1018,6 +1026,7 @@ public long getNativeObject() {
10181026
private static native boolean nIsShadowReceiver(long nativeRenderableManager, int i);
10191027
private static native void nGetAxisAlignedBoundingBox(long nativeRenderableManager, int i, float[] center, float[] halfExtent);
10201028
private static native int nGetPrimitiveCount(long nativeRenderableManager, int i);
1029+
private static native int nGetInstanceCount(long nativeRenderableManager, int i);
10211030
private static native void nSetMaterialInstanceAt(long nativeRenderableManager, int i, int primitiveIndex, long nativeMaterialInstance);
10221031
private static native void nClearMaterialInstanceAt(long nativeRenderableManager, int i, int primitiveIndex);
10231032
private static native long nGetMaterialInstanceAt(long nativeRenderableManager, int i, int primitiveIndex);

android/filament-android/src/main/java/com/google/android/filament/View.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ public Scene getScene() {
231231
*
232232
* <p>
233233
* The View does not take ownership of the Scene pointer. Before destroying a Camera, be sure
234-
* to remove it from all assoicated Views.
234+
* to remove it from all associated Views. If the camera isn't set, Renderer::render() will result in a no-op.
235235
* </p>
236236
*
237237
* @see #getCamera

android/filament-utils-android/CMakeLists.txt

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
cmake_minimum_required(VERSION 3.19)
22
project(filament-utils-android)
33

4+
option(FILAMENT_SUPPORTS_VULKAN "Enables Vulkan on Android" OFF)
5+
option(FILAMENT_ENABLE_FGVIEWER "Enables Frame Graph Viewer" OFF)
6+
option(FILAMENT_ENABLE_MATDBG "Enables Material debugger" OFF)
7+
option(FILAMENT_DISABLE_MATOPT "Disables material optimizations" OFF)
8+
option(FILAMENT_SUPPORTS_WEBGPU "Enables WebGPU on Android" OFF)
9+
10+
set(CMAKE_CXX_STANDARD 20)
11+
412
set(FILAMENT_DIR ${FILAMENT_DIST_DIR})
513
set(IMAGEIO_DIR ../../libs/imageio)
614

@@ -30,7 +38,16 @@ add_library(iblprefilter STATIC IMPORTED)
3038
set_target_properties(iblprefilter PROPERTIES IMPORTED_LOCATION
3139
${FILAMENT_DIR}/lib/${ANDROID_ABI}/libfilament-iblprefilter.a)
3240

33-
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libfilament-utils-jni.map")
41+
add_library(utils STATIC IMPORTED)
42+
set_target_properties(utils PROPERTIES IMPORTED_LOCATION
43+
${FILAMENT_DIR}/lib/${ANDROID_ABI}/libutils.a)
44+
45+
add_library(perfetto STATIC IMPORTED)
46+
set_target_properties(perfetto PROPERTIES IMPORTED_LOCATION
47+
${FILAMENT_DIR}/lib/${ANDROID_ABI}/libperfetto.a)
48+
49+
set(VERSION_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/libfilament-utils-jni.map")
50+
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,--version-script=${VERSION_SCRIPT}")
3451
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,max-page-size=16384")
3552

3653
add_library(filament-utils-jni SHARED
@@ -53,22 +70,25 @@ add_library(filament-utils-jni SHARED
5370
target_compile_definitions(filament-utils-jni PUBLIC IMAGEIO_LITE=1)
5471

5572
target_include_directories(filament-utils-jni PRIVATE
56-
${FILAMENT_DIR}/include
5773
..
74+
${FILAMENT_DIR}/include
5875
../../filament/backend/include
5976
${IMAGEIO_DIR}/include
6077
../../libs/utils/include)
6178

62-
set_target_properties(filament-utils-jni PROPERTIES LINK_DEPENDS
63-
${CMAKE_CURRENT_SOURCE_DIR}/libfilament-utils-jni.symbols)
79+
set_target_properties(filament-utils-jni PROPERTIES LINK_DEPENDS ${VERSION_SCRIPT})
6480

6581
# The ordering in the following list is important because CMake does not have dependency information.
6682
target_link_libraries(filament-utils-jni
67-
gltfio-jni
68-
civetweb
69-
camutils
70-
iblprefilter
71-
image
72-
ktxreader
73-
viewer
83+
PRIVATE gltfio-jni
84+
PRIVATE civetweb
85+
PRIVATE camutils
86+
PRIVATE iblprefilter
87+
PRIVATE image
88+
PRIVATE filament-jni
89+
PRIVATE ktxreader
90+
PRIVATE viewer
91+
PRIVATE log
92+
PRIVATE utils
93+
PRIVATE perfetto # needed only when FILAMENT_ENABLE_PERFETTO is defined
7494
)

0 commit comments

Comments
 (0)