Skip to content

Commit

Permalink
Added TranslucencySortPriority property to TilesetActor
Browse files Browse the repository at this point in the history
This property is included as it has a secondary use of controlling the draw order of components in an RVT.
  • Loading branch information
wickerman123 committed Feb 6, 2025
1 parent 49d4aa5 commit 8a26674
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 22 deletions.
7 changes: 7 additions & 0 deletions Source/CesiumRuntime/Private/Cesium3DTileset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -566,6 +566,13 @@ void ACesium3DTileset::SetRuntimeVirtualTextures(
}
}

void ACesium3DTileset::SetTranslucencySortPriority(int32 InTranslucencySortPriority) {
if (this->TranslucencySortPriority != InTranslucencySortPriority) {
this->TranslucencySortPriority = InTranslucencySortPriority;
this->DestroyTileset();
}
}

void ACesium3DTileset::PlayMovieSequencer() {
this->_beforeMoviePreloadAncestors = this->PreloadAncestors;
this->_beforeMoviePreloadSiblings = this->PreloadSiblings;
Expand Down
1 change: 1 addition & 0 deletions Source/CesiumRuntime/Private/CesiumGltfComponent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3040,6 +3040,7 @@ static void loadPrimitiveGameThreadPart(
}
pMesh->RuntimeVirtualTextures = primData.pTilesetActor->GetRuntimeVirtualTextures();
pMesh->VirtualTextureRenderPassType = primData.pTilesetActor->GetVirtualTextureRenderPassType();
pMesh->TranslucencySortPriority = primData.pTilesetActor->GetTranslucencySortPriority();

pStaticMesh = NewObject<UStaticMesh>(pMesh, componentName);
pMesh->SetStaticMesh(pStaticMesh);
Expand Down
45 changes: 23 additions & 22 deletions Source/CesiumRuntime/Public/Cesium3DTileset.h
Original file line number Diff line number Diff line change
Expand Up @@ -972,6 +972,23 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor {
ERuntimeVirtualTextureMainPassType VirtualTextureRenderPassType =
ERuntimeVirtualTextureMainPassType::Exclusive;

/**
* Translucent objects with a lower sort priority draw behind objects with a higher priority.
* Translucent objects with the same priority are rendered from back-to-front based on their bounds origin.
* This setting is also used to sort objects being drawn into a runtime virtual texture.
*
* Ignored if the object is not translucent. The default priority is zero.
* Warning: This should never be set to a non-default value unless you know what you are doing, as it will prevent the renderer from sorting correctly.
* It is especially problematic on dynamic gameplay effects.
*/
UPROPERTY(
EditAnywhere,
BlueprintGetter = GetTranslucencySortPriority,
BlueprintSetter = SetTranslucencySortPriority,
AdvancedDisplay,
Category=Rendering)
int32 TranslucencySortPriority;

protected:
UPROPERTY()
FString PlatformName;
Expand Down Expand Up @@ -1024,36 +1041,20 @@ class CESIUMRUNTIME_API ACesium3DTileset : public AActor {
return RuntimeVirtualTextures;
}

UFUNCTION(BlueprintGetter, Category = "VirtualTexture")
uint8 GetVirtualTextureLodBias() const {
return VirtualTextureLodBias;
}

UFUNCTION(BlueprintSetter, Category = "VirtualTexture")
void SetVirtualTextureLodBias(uint8 InVirtualTextureLodBias);

UFUNCTION(BlueprintSetter, Category = "VirtualTexture")
void SetRuntimeVirtualTextures(TArray<URuntimeVirtualTexture*> InRuntimeVirtualTextures);

UFUNCTION(BlueprintGetter, Category = "VirtualTexture")
uint8 GetVirtualTextureCullMips() const { return VirtualTextureCullMips; }

UFUNCTION(BlueprintSetter, Category = "VirtualTexture")
void SetVirtualTextureCullMips(uint8 InVirtualTextureCullMips);

UFUNCTION(BlueprintGetter, Category = "VirtualTexture")
uint8 GetVirtualTextureMinCoverage() const {
return VirtualTextureMinCoverage;
}

UFUNCTION(BlueprintSetter, Category = "VirtualTexture")
void SetVirtualTextureMinCoverage(uint8 InVirtualTextureMinCoverage);

UFUNCTION(BlueprintGetter, Category = "VirtualTexture")
ERuntimeVirtualTextureMainPassType GetVirtualTextureRenderPassType() const {
return VirtualTextureRenderPassType;
}

UFUNCTION(BlueprintGetter, Category = Rendering)
int32 GetTranslucencySortPriority() {return TranslucencySortPriority;}

UFUNCTION(BlueprintSetter, Category = Rendering)
void SetTranslucencySortPriority(int32 InTranslucencySortPriority);

UFUNCTION(BlueprintSetter, Category = "Cesium")
void SetCesiumIonServer(UCesiumIonServer* Server);

Expand Down

0 comments on commit 8a26674

Please sign in to comment.