Skip to content

Commit bd67c9c

Browse files
authored
Implement missing getters in RenderableManager (#9673)
FIXES=[479883232]
1 parent 8f19826 commit bd67c9c

File tree

8 files changed

+221
-30
lines changed

8 files changed

+221
-30
lines changed

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

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,20 +366,41 @@ Java_com_google_android_filament_RenderableManager_nSetPriority(JNIEnv*, jclass,
366366
rm->setPriority((RenderableManager::Instance) i, (uint8_t) priority);
367367
}
368368

369+
extern "C" JNIEXPORT jint JNICALL
370+
Java_com_google_android_filament_RenderableManager_nGetPriority(JNIEnv*, jclass,
371+
jlong nativeRenderableManager, jint i) {
372+
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
373+
return (jint) rm->getPriority((RenderableManager::Instance) i);
374+
}
375+
369376
extern "C" JNIEXPORT void JNICALL
370377
Java_com_google_android_filament_RenderableManager_nSetChannel(JNIEnv*, jclass,
371378
jlong nativeRenderableManager, jint i, jint channel) {
372379
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
373380
rm->setChannel((RenderableManager::Instance) i, (uint8_t) channel);
374381
}
375382

383+
extern "C" JNIEXPORT jint JNICALL
384+
Java_com_google_android_filament_RenderableManager_nGetChannel(JNIEnv*, jclass,
385+
jlong nativeRenderableManager, jint i) {
386+
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
387+
return (jint) rm->getChannel((RenderableManager::Instance) i);
388+
}
389+
376390
extern "C" JNIEXPORT void JNICALL
377391
Java_com_google_android_filament_RenderableManager_nSetCulling(JNIEnv*, jclass,
378392
jlong nativeRenderableManager, jint i, jboolean enabled) {
379393
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
380394
rm->setCulling((RenderableManager::Instance) i, enabled);
381395
}
382396

397+
extern "C" JNIEXPORT jboolean JNICALL
398+
Java_com_google_android_filament_RenderableManager_nIsCullingEnabled(JNIEnv*, jclass,
399+
jlong nativeRenderableManager, jint i) {
400+
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
401+
return (jboolean) rm->isCullingEnabled((RenderableManager::Instance) i);
402+
}
403+
383404
extern "C" JNIEXPORT void JNICALL
384405
Java_com_google_android_filament_RenderableManager_nSetFogEnabled(JNIEnv*, jclass,
385406
jlong nativeRenderableManager, jint i, jboolean enabled) {
@@ -429,6 +450,13 @@ Java_com_google_android_filament_RenderableManager_nIsShadowReceiver(JNIEnv*, jc
429450
return (jboolean) rm->isShadowReceiver((RenderableManager::Instance) i);
430451
}
431452

453+
extern "C" JNIEXPORT jboolean JNICALL
454+
Java_com_google_android_filament_RenderableManager_nIsScreenSpaceContactShadowsEnabled(JNIEnv*, jclass,
455+
jlong nativeRenderableManager, jint i) {
456+
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
457+
return (jboolean) rm->isScreenSpaceContactShadowsEnabled((RenderableManager::Instance) i);
458+
}
459+
432460
extern "C" JNIEXPORT void JNICALL
433461
Java_com_google_android_filament_RenderableManager_nGetAxisAlignedBoundingBox(JNIEnv* env,
434462
jclass, jlong nativeRenderableManager, jint i, jfloatArray center_,
@@ -500,6 +528,13 @@ Java_com_google_android_filament_RenderableManager_nSetBlendOrderAt(JNIEnv*, jcl
500528
(uint16_t) blendOrder);
501529
}
502530

531+
extern "C" JNIEXPORT jint JNICALL
532+
Java_com_google_android_filament_RenderableManager_nGetBlendOrderAt(JNIEnv*, jclass,
533+
jlong nativeRenderableManager, jint i, jint primitiveIndex) {
534+
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
535+
return (jint) rm->getBlendOrderAt((RenderableManager::Instance) i, (size_t) primitiveIndex);
536+
}
537+
503538
extern "C" JNIEXPORT void JNICALL
504539
Java_com_google_android_filament_RenderableManager_nSetGlobalBlendOrderEnabledAt(JNIEnv*, jclass,
505540
jlong nativeRenderableManager, jint i, jint primitiveIndex, jboolean enabled) {
@@ -508,6 +543,13 @@ Java_com_google_android_filament_RenderableManager_nSetGlobalBlendOrderEnabledAt
508543
(bool) enabled);
509544
}
510545

546+
extern "C" JNIEXPORT jboolean JNICALL
547+
Java_com_google_android_filament_RenderableManager_nIsGlobalBlendOrderEnabledAt(JNIEnv*, jclass,
548+
jlong nativeRenderableManager, jint i, jint primitiveIndex) {
549+
RenderableManager *rm = (RenderableManager *) nativeRenderableManager;
550+
return (jboolean) rm->isGlobalBlendOrderEnabledAt((RenderableManager::Instance) i, (size_t) primitiveIndex);
551+
}
552+
511553
extern "C" JNIEXPORT jint JNICALL
512554
Java_com_google_android_filament_RenderableManager_nGetEnabledAttributesAt(JNIEnv*, jclass,
513555
jlong nativeRenderableManager, jint i, jint primitiveIndex) {

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

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,8 @@ public Builder priority(@IntRange(from = 0, to = 7) int priority) {
346346
*
347347
* @return Builder reference for chaining calls.
348348
*
349-
* @see Builder::blendOrder()
350-
* @see Builder::priority()
349+
* @see Builder#blendOrder()
350+
* @see Builder#priority()
351351
* @see RenderableManager::setBlendOrderAt()
352352
*/
353353
@NonNull
@@ -725,6 +725,10 @@ public void setPriority(@EntityInstance int i, @IntRange(from = 0, to = 7) int p
725725
nSetPriority(mNativeObject, i, priority);
726726
}
727727

728+
public int getPriority(@EntityInstance int i) {
729+
return nGetPriority(mNativeObject, i);
730+
}
731+
728732
/**
729733
* Changes the channel of a renderable
730734
*
@@ -734,6 +738,10 @@ public void setChannel(@EntityInstance int i, @IntRange(from = 0, to = 7) int ch
734738
nSetChannel(mNativeObject, i, channel);
735739
}
736740

741+
public int getChannel(@EntityInstance int i) {
742+
return nGetChannel(mNativeObject, i);
743+
}
744+
737745
/**
738746
* Changes whether or not frustum culling is on.
739747
*
@@ -743,6 +751,10 @@ public void setCulling(@EntityInstance int i, boolean enabled) {
743751
nSetCulling(mNativeObject, i, enabled);
744752
}
745753

754+
public boolean isCullingEnabled(@EntityInstance int i) {
755+
return nIsCullingEnabled(mNativeObject, i);
756+
}
757+
746758
/**
747759
* Changes whether or not the large-scale fog is applied to this renderable
748760
* @see Builder#fog
@@ -812,6 +824,10 @@ public void setScreenSpaceContactShadows(@EntityInstance int i, boolean enabled)
812824
nSetScreenSpaceContactShadows(mNativeObject, i, enabled);
813825
}
814826

827+
public boolean isScreenSpaceContactShadowsEnabled(@EntityInstance int i) {
828+
return nIsScreenSpaceContactShadowsEnabled(mNativeObject, i);
829+
}
830+
815831
/**
816832
* Checks if the renderable can cast shadows.
817833
*
@@ -932,6 +948,10 @@ public void setBlendOrderAt(@EntityInstance int instance, @IntRange(from = 0) in
932948
nSetBlendOrderAt(mNativeObject, instance, primitiveIndex, blendOrder);
933949
}
934950

951+
public int getBlendOrderAt(@EntityInstance int instance, @IntRange(from = 0) int primitiveIndex) {
952+
return nGetBlendOrderAt(mNativeObject, instance, primitiveIndex);
953+
}
954+
935955
/**
936956
* Changes whether the blend order is global or local to this Renderable (by default).
937957
*
@@ -946,6 +966,10 @@ public void setGlobalBlendOrderEnabledAt(@EntityInstance int instance, @IntRange
946966
nSetGlobalBlendOrderEnabledAt(mNativeObject, instance, primitiveIndex, enabled);
947967
}
948968

969+
public boolean isGlobalBlendOrderEnabledAt(@EntityInstance int instance, @IntRange(from = 0) int primitiveIndex) {
970+
return nIsGlobalBlendOrderEnabledAt(mNativeObject, instance, primitiveIndex);
971+
}
972+
949973
/**
950974
* Retrieves the set of enabled attribute slots in the given primitive's VertexBuffer.
951975
*/
@@ -1013,15 +1037,19 @@ public long getNativeObject() {
10131037
private static native void nSetAxisAlignedBoundingBox(long nativeRenderableManager, int i, float cx, float cy, float cz, float ex, float ey, float ez);
10141038
private static native void nSetLayerMask(long nativeRenderableManager, int i, int select, int value);
10151039
private static native void nSetPriority(long nativeRenderableManager, int i, int priority);
1040+
private static native int nGetPriority(long nativeRenderableManager, int i);
10161041
private static native void nSetChannel(long nativeRenderableManager, int i, int channel);
1042+
private static native int nGetChannel(long nativeRenderableManager, int i);
10171043
private static native void nSetCulling(long nativeRenderableManager, int i, boolean enabled);
1044+
private static native boolean nIsCullingEnabled(long nativeRenderableManager, int i);
10181045
private static native void nSetFogEnabled(long nativeRenderableManager, int i, boolean enabled);
10191046
private static native boolean nGetFogEnabled(long nativeRenderableManager, int i);
10201047
private static native void nSetLightChannel(long nativeRenderableManager, int i, int channel, boolean enable);
10211048
private static native boolean nGetLightChannel(long nativeRenderableManager, int i, int channel);
10221049
private static native void nSetCastShadows(long nativeRenderableManager, int i, boolean enabled);
10231050
private static native void nSetReceiveShadows(long nativeRenderableManager, int i, boolean enabled);
10241051
private static native void nSetScreenSpaceContactShadows(long nativeRenderableManager, int i, boolean enabled);
1052+
private static native boolean nIsScreenSpaceContactShadowsEnabled(long nativeRenderableManager, int i);
10251053
private static native boolean nIsShadowCaster(long nativeRenderableManager, int i);
10261054
private static native boolean nIsShadowReceiver(long nativeRenderableManager, int i);
10271055
private static native void nGetAxisAlignedBoundingBox(long nativeRenderableManager, int i, float[] center, float[] halfExtent);
@@ -1032,6 +1060,8 @@ public long getNativeObject() {
10321060
private static native long nGetMaterialInstanceAt(long nativeRenderableManager, int i, int primitiveIndex);
10331061
private static native void nSetGeometryAt(long nativeRenderableManager, int i, int primitiveIndex, int primitiveType, long nativeVertexBuffer, long nativeIndexBuffer, int offset, int count);
10341062
private static native void nSetBlendOrderAt(long nativeRenderableManager, int i, int primitiveIndex, int blendOrder);
1063+
private static native int nGetBlendOrderAt(long nativeRenderableManager, int i, int primitiveIndex);
10351064
private static native void nSetGlobalBlendOrderEnabledAt(long nativeRenderableManager, int i, int primitiveIndex, boolean enabled);
1065+
private static native boolean nIsGlobalBlendOrderEnabledAt(long nativeRenderableManager, int i, int primitiveIndex);
10361066
private static native int nGetEnabledAttributesAt(long nativeRenderableManager, int i, int primitiveIndex);
10371067
}

filament/include/filament/RenderableManager.h

Lines changed: 70 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,7 @@ class UTILS_PUBLIC RenderableManager : public FilamentAPI {
323323
* @see Builder::blendOrder()
324324
* @see Builder::priority()
325325
* @see RenderableManager::setBlendOrderAt()
326+
* @see RenderableManager::getChannel()
326327
*/
327328
Builder& channel(uint8_t channel) noexcept;
328329

@@ -615,6 +616,7 @@ class UTILS_PUBLIC RenderableManager : public FilamentAPI {
615616
*/
616617
void destroy(utils::Entity e) noexcept;
617618

619+
618620
/**
619621
* Changes the bounding box used for frustum culling.
620622
* The renderable must not have staticGeometry enabled.
@@ -624,6 +626,14 @@ class UTILS_PUBLIC RenderableManager : public FilamentAPI {
624626
*/
625627
void setAxisAlignedBoundingBox(Instance instance, const Box& aabb);
626628

629+
/**
630+
* Gets the bounding box used for frustum culling.
631+
*
632+
* \see Builder::boundingBox()
633+
* \see RenderableManager::setAxisAlignedBoundingBox()
634+
*/
635+
const Box& getAxisAlignedBoundingBox(Instance instance) const noexcept;
636+
627637
/**
628638
* Changes the visibility bits.
629639
*
@@ -633,27 +643,57 @@ class UTILS_PUBLIC RenderableManager : public FilamentAPI {
633643
*/
634644
void setLayerMask(Instance instance, uint8_t select, uint8_t values) noexcept;
635645

646+
/**
647+
* Get the visibility bits.
648+
*
649+
* \see Builder::layerMask()
650+
* \see View::setVisibleLayers().
651+
* \see RenderableManager::getLayerMask()
652+
*/
653+
uint8_t getLayerMask(Instance instance) const noexcept;
654+
636655
/**
637656
* Changes the coarse-level draw ordering.
638657
*
639658
* \see Builder::priority().
640659
*/
641660
void setPriority(Instance instance, uint8_t priority) noexcept;
642661

662+
/**
663+
* Get the coarse-level draw ordering.
664+
*
665+
* \see Builder::priority().
666+
*/
667+
uint8_t getPriority(Instance instance) const noexcept;
668+
643669
/**
644670
* Changes the channel a renderable is associated to.
645671
*
646672
* \see Builder::channel().
647673
*/
648674
void setChannel(Instance instance, uint8_t channel) noexcept;
649675

676+
/**
677+
* Get the channel a renderable is associated to.
678+
*
679+
* \see Builder::channel().
680+
*/
681+
uint8_t getChannel(Instance instance) const noexcept;
682+
650683
/**
651684
* Changes whether or not frustum culling is on.
652685
*
653686
* \see Builder::culling()
654687
*/
655688
void setCulling(Instance instance, bool enable) noexcept;
656689

690+
/**
691+
* Get whether or not frustum culling is on.
692+
*
693+
* \see Builder::culling()
694+
*/
695+
bool isCullingEnabled(Instance instance) const noexcept;
696+
657697
/**
658698
* Changes whether or not the large-scale fog is applied to this renderable
659699
* @see Builder::fog()
@@ -718,6 +758,13 @@ class UTILS_PUBLIC RenderableManager : public FilamentAPI {
718758
*/
719759
bool isShadowReceiver(Instance instance) const noexcept;
720760

761+
/**
762+
* Checks if the renderable can use screen-space contact shadows.
763+
*
764+
* \see Builder::screenSpaceContactShadows().
765+
*/
766+
bool isScreenSpaceContactShadowsEnabled(Instance instance) const noexcept;
767+
721768
/**
722769
* Updates the bone transforms in the range [offset, offset + boneCount).
723770
* The bones must be pre-allocated using Builder::skinning().
@@ -769,35 +816,21 @@ class UTILS_PUBLIC RenderableManager : public FilamentAPI {
769816

770817
/**
771818
* Gets the number of morphing in the given entity.
819+
* @see Builder::morphing()
772820
*/
773821
size_t getMorphTargetCount(Instance instance) const noexcept;
774822

775-
/**
776-
* Gets the bounding box used for frustum culling.
777-
*
778-
* \see Builder::boundingBox()
779-
* \see RenderableManager::setAxisAlignedBoundingBox()
780-
*/
781-
const Box& getAxisAlignedBoundingBox(Instance instance) const noexcept;
782-
783-
/**
784-
* Get the visibility bits.
785-
*
786-
* \see Builder::layerMask()
787-
* \see View::setVisibleLayers().
788-
* \see RenderableManager::getLayerMask()
789-
*/
790-
uint8_t getLayerMask(Instance instance) const noexcept;
791-
792823
/**
793824
* Gets the immutable number of primitives in the given renderable.
825+
* @see Builder::Builder(size_t count)
794826
*/
795827
size_t getPrimitiveCount(Instance instance) const noexcept;
796828

797829
/**
798830
* Returns the number of instances for this renderable.
799831
* @param instance Instance of the component obtained from getInstance().
800832
* @return The number of instances.
833+
* @see Builder::instances()
801834
*/
802835
size_t getInstanceCount(Instance instance) const noexcept;
803836

@@ -851,6 +884,16 @@ class UTILS_PUBLIC RenderableManager : public FilamentAPI {
851884
*/
852885
void setBlendOrderAt(Instance instance, size_t primitiveIndex, uint16_t order) noexcept;
853886

887+
/**
888+
* Get the drawing order for blended primitives.
889+
*
890+
* @param instance the renderable of interest
891+
* @param primitiveIndex the primitive of interest
892+
*
893+
* @see Builder::blendOrder(), setGlobalBlendOrderEnabledAt()
894+
*/
895+
uint16_t getBlendOrderAt(Instance instance, size_t primitiveIndex) const noexcept;
896+
854897
/**
855898
* Changes whether the blend order is global or local to this Renderable (by default).
856899
*
@@ -862,6 +905,16 @@ class UTILS_PUBLIC RenderableManager : public FilamentAPI {
862905
*/
863906
void setGlobalBlendOrderEnabledAt(Instance instance, size_t primitiveIndex, bool enabled) noexcept;
864907

908+
/**
909+
* Get whether the blend order is global or local to this Renderable (by default).
910+
*
911+
* @param instance the renderable of interest
912+
* @param primitiveIndex the primitive of interest
913+
*
914+
* @see Builder::globalBlendOrderEnabled(), setBlendOrderAt()
915+
*/
916+
bool isGlobalBlendOrderEnabledAt(Instance instance, size_t primitiveIndex) const noexcept;
917+
865918
/**
866919
* Retrieves the set of enabled attribute slots in the given primitive's VertexBuffer.
867920
*/

0 commit comments

Comments
 (0)