Skip to content

Commit

Permalink
Trying to get Feature ID Textures to work
Browse files Browse the repository at this point in the history
  • Loading branch information
j9liu committed Aug 2, 2023
1 parent da824ec commit 26c2adb
Show file tree
Hide file tree
Showing 11 changed files with 349 additions and 1,226 deletions.
21 changes: 20 additions & 1 deletion Config/Engine.ini
Original file line number Diff line number Diff line change
Expand Up @@ -127,4 +127,23 @@

+FunctionRedirects=(
OldName="CesiumFeatureTexturePropertyBlueprintLibrary.GetPropertyKeys",
NewName="CesiumPropertyTexturePropertyBlueprintLibrary.GetPropertyNames")
NewName="CesiumPropertyTexturePropertyBlueprintLibrary.GetPropertyNames")

+EnumRedirects=(OldName="ECesiumPropertyComponentType", NewName="ECesiumPropertyComponentType_DEPRECATED", ValueChanges=(
("Uint8","Uint8_DEPRECATED"),
("Float","Float_DEPRECATED"),
))

+EnumRedirects=(OldName="ECesiumPropertyType", NewName="ECesiumPropertyType_DEPRECATED", ValueChanges=(
("Scalar","Scalar_DEPRECATED"),
("Vec2","Vec2_DEPRECATED"),
("Vec3","Vec3_DEPRECATED"),
("Vec4","Vec4_DEPRECATED"),
))

+EnumRedirects=(OldName="ECesiumFeatureTableAccessType", NewName="ECesiumFeatureTableAccessType_DEPRECATED", ValueChanges=(
("Unknown","Unknown_DEPRECATED"),
("Texture","Texture_DEPRECATED"),
("Attribute","Attribute_DEPRECATED"),
("Mixed","Mixed_DEPRECATED"),
))
Binary file not shown.
5 changes: 2 additions & 3 deletions Source/CesiumRuntime/Private/Cesium3DTileset.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -938,9 +938,8 @@ void ACesium3DTileset::LoadTileset() {
const UCesiumFeaturesMetadataComponent* pFeaturesMetadataComponent =
this->FindComponentByClass<UCesiumFeaturesMetadataComponent>();
if (pFeaturesMetadataComponent) {
this->_featuresDescription = {pFeaturesMetadataComponent->FeatureIdSets};
this->_modelMetadataDescription = {
pFeaturesMetadataComponent->PropertyTables};
this->_featuresDescription = pFeaturesMetadataComponent->Features;
this->_modelMetadataDescription = pFeaturesMetadataComponent->ModelMetadata;
} else {
this->_featuresDescription = {};
this->_modelMetadataDescription = {};
Expand Down
17 changes: 8 additions & 9 deletions Source/CesiumRuntime/Private/CesiumEncodedFeaturesMetadata.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ std::optional<EncodedFeatureIdSet> encodeFeatureIdTexture(
TRACE_CPUPROFILER_EVENT_SCOPE(Cesium::EncodeFeatureIdTexture)

EncodedFeatureIdSet result;
EncodedFeatureIdTexture encodedFeatureIdTexture;
EncodedFeatureIdTexture& encodedFeatureIdTexture = result.texture.emplace();

encodedFeatureIdTexture.channels = featureIdTextureView.getChannels();
encodedFeatureIdTexture.textureCoordinateSetIndex =
Expand Down Expand Up @@ -147,12 +147,12 @@ std::optional<EncodedFeatureIdSet> encodeFeatureIdTexture(
encodedFeatureIdTexture.pTexture->filter = TextureFilter::TF_Nearest;

if (!encodedFeatureIdTexture.pTexture->pTextureData) {
UE_LOG(
LogCesium,
Error,
TEXT(
"Error encoding a feature table property. Most likely could not allocate enough texture memory."));
return std::nullopt;
UE_LOG(
LogCesium,
Error,
TEXT(
"Error encoding a feature ID texture. Most likely could not allocate enough texture memory."));
return std::nullopt;
}

FTexture2DMipMap* pMip = new FTexture2DMipMap();
Expand All @@ -172,8 +172,6 @@ std::optional<EncodedFeatureIdSet> encodeFeatureIdTexture(
pMip->BulkData.Unlock();
}

result.texture = encodedFeatureIdTexture;

return result;
}
} // namespace
Expand Down Expand Up @@ -234,6 +232,7 @@ EncodedPrimitiveFeatures encodePrimitiveFeaturesAnyThreadPart(
encodedSet->name = name;
encodedSet->index = i;
encodedSet->propertyTableName = pDescription->PropertyTableName;

result.featureIdSets.Add(*encodedSet);
}

Expand Down
24 changes: 24 additions & 0 deletions Source/CesiumRuntime/Private/CesiumEncodedFeaturesMetadata.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,30 @@ struct FCesiumPrimitiveFeaturesDescription;
*/
namespace CesiumEncodedFeaturesMetadata {

/**
* Naming convention for encoded features + metadata material parameters
*
* Feature Id Textures:
* - Base: "FIT_<feature table name>_"...
* - Texture: ..."TX"
* - Texture Coordinate Index: ..."UV"
* - Channel Mask: ..."CM"
*
* Feature Texture Properties:
* - Base: "FTX_<feature texture name>_<property name>_"...
* - Texture: ..."TX"
* - Texture Coordinate Index: ..."UV"
* - Swizzle: ..."SW"
*
* Encoded Feature Table Properties:
* - Encoded Property Table:
* "FTB_<feature table name>_<property name>"
*/
static const FString MaterialTextureSuffix = "_TX";
static const FString MaterialTexCoordSuffix = "_UV";
static const FString MaterialChannelsSuffix = "_CHANNELS";
static const FString MaterialNumChannelsSuffix = "_NUM_CHANNELS";

#pragma region Encoded Primitive Features

/**
Expand Down
Loading

0 comments on commit 26c2adb

Please sign in to comment.