Skip to content

Commit

Permalink
Merge branch 'main' into globe-anchors
Browse files Browse the repository at this point in the history
  • Loading branch information
weegeekps committed Aug 4, 2023
2 parents 5a2c01c + 7f648af commit df5ebff
Show file tree
Hide file tree
Showing 25 changed files with 282 additions and 153 deletions.
50 changes: 1 addition & 49 deletions extern/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ add_external_project(
uriparser
webpdecoder
turbojpeg
meshoptimizer
OPTIONS
CESIUM_TESTS_ENABLED=OFF
CESIUM_COVERAGE_ENABLED=OFF
Expand Down Expand Up @@ -70,7 +71,6 @@ set(USDRT_ROOT "${NVIDIA_BUILD_DIR}/target-deps/usdrt")
set(CARB_ROOT "${NVIDIA_BUILD_DIR}/target-deps/carb_sdk_plugins")
set(KIT_SDK_ROOT "${NVIDIA_BUILD_DIR}/target-deps/kit-sdk")
set(PYBIND11_ROOT "${NVIDIA_BUILD_DIR}/target-deps/pybind11")
set(CUDA_ROOT "${NVIDIA_BUILD_DIR}/target-deps/cuda")

set(NVIDIA_USD_LIBRARIES
ar
Expand Down Expand Up @@ -239,54 +239,6 @@ add_prebuilt_project_header_only(
)
# cmake-format: on

if(WIN32)
# cmake-format: off
add_prebuilt_project(
RELEASE_INCLUDE_DIR
"${CUDA_ROOT}"
DEBUG_INCLUDE_DIR
"${CUDA_ROOT}"
RELEASE_LIBRARY_DIR
"${CUDA_ROOT}/cuda/lib/x64"
RELEASE_DLL_DIR
"${CUDA_ROOT}/cuda/bin"
DEBUG_LIBRARY_DIR
"${CUDA_ROOT}/cuda/lib/x64"
DEBUG_DLL_DIR
"${CUDA_ROOT}/cuda/bin"
RELEASE_LIBRARIES
cudart
DEBUG_LIBRARIES
cudart
RELEASE_DLL_LIBRARIES
cudart64_110
DEBUG_DLL_LIBRARIES
cudart64_110
TARGET_NAMES
cudart
)
# cmake-format: on
else()
# cmake-format: off
add_prebuilt_project(
RELEASE_INCLUDE_DIR
"${CUDA_ROOT}"
DEBUG_INCLUDE_DIR
"${CUDA_ROOT}"
RELEASE_LIBRARY_DIR
"${CUDA_ROOT}/cuda/lib64"
DEBUG_LIBRARY_DIR
"${CUDA_ROOT}/cuda/lib64"
RELEASE_LIBRARIES
cudart
DEBUG_LIBRARIES
cudart
TARGET_NAMES
cudart
)
# cmake-format: on
endif()

# cmake-format: off
# omni.ui gives us access to DynamicTextureProvider.h
add_prebuilt_project(
Expand Down
2 changes: 1 addition & 1 deletion extern/cesium-native
Submodule cesium-native updated 76 files
+6 −0 .gitmodules
+38 −0 CHANGES.md
+4 −0 CMakeLists.txt
+1 −2 Cesium3DTilesSelection/src/CesiumIonTilesetLoader.cpp
+0 −2 Cesium3DTilesSelection/src/GltfConverters.cpp
+7 −19 Cesium3DTilesSelection/src/LayerJsonTerrainLoader.cpp
+1 −3 Cesium3DTilesSelection/src/LayerJsonTerrainLoader.h
+1 −3 Cesium3DTilesSelection/src/RasterOverlayCollection.cpp
+3 −1 Cesium3DTilesSelection/src/Tile.cpp
+3 −1 Cesium3DTilesSelection/src/Tileset.cpp
+13 −12 Cesium3DTilesSelection/src/TilesetContentManager.cpp
+10 −0 Cesium3DTilesSelection/src/upsampleGltfForRasterOverlays.cpp
+17 −50 Cesium3DTilesSelection/test/TestLayerJsonTerrainLoader.cpp
+2 −4 Cesium3DTilesSelection/test/TestQuadtreeRasterOverlayTileProvider.cpp
+218 −1 Cesium3DTilesSelection/test/TestUpsampleGltfForRasterOverlay.cpp
+44 −0 CesiumAsync/include/CesiumAsync/GunzipAssetAccessor.h
+77 −41 CesiumAsync/src/CachingAssetAccessor.cpp
+119 −0 CesiumAsync/src/GunzipAssetAccessor.cpp
+22 −15 CesiumAsync/src/ResponseCacheControl.cpp
+40 −8 CesiumAsync/src/ResponseCacheControl.h
+38 −0 CesiumAsync/test/MockAssetAccessor.h
+1 −0 CesiumAsync/test/MockAssetRequest.h
+10 −0 CesiumAsync/test/MockTaskProcessor.h
+195 −97 CesiumAsync/test/TestCacheAssetAccessor.cpp
+2 −2 CesiumAsync/test/TestDiskCache.cpp
+195 −0 CesiumAsync/test/TestGunzipAssetAccessor.cpp
+8 −4 CesiumAsync/test/TestResponseCacheControl.cpp
+20 −4 CesiumGeospatial/include/CesiumGeospatial/LocalHorizontalCoordinateSystem.h
+15 −12 CesiumGeospatial/src/LocalHorizontalCoordinateSystem.cpp
+24 −0 CesiumGeospatial/test/TestLocalHorizontalCoordinateSystem.cpp
+32 −0 CesiumGltf/generated/include/CesiumGltf/ExtensionMeshPrimitiveKhrMaterialsVariants.h
+46 −0 CesiumGltf/generated/include/CesiumGltf/ExtensionMeshPrimitiveKhrMaterialsVariantsMappingsValue.h
+27 −0 CesiumGltf/generated/include/CesiumGltf/ExtensionModelKhrMaterialsVariants.h
+26 −0 CesiumGltf/generated/include/CesiumGltf/ExtensionModelKhrMaterialsVariantsValue.h
+1 −0 CesiumGltfReader/CMakeLists.txt
+95 −0 CesiumGltfReader/generated/src/ExtensionMeshPrimitiveKhrMaterialsVariantsJsonHandler.h
+47 −0 CesiumGltfReader/generated/src/ExtensionMeshPrimitiveKhrMaterialsVariantsMappingsValueJsonHandler.h
+95 −0 CesiumGltfReader/generated/src/ExtensionModelKhrMaterialsVariantsJsonHandler.h
+38 −0 CesiumGltfReader/generated/src/ExtensionModelKhrMaterialsVariantsValueJsonHandler.h
+234 −0 CesiumGltfReader/generated/src/GeneratedJsonHandlers.cpp
+8 −0 CesiumGltfReader/generated/src/registerExtensions.cpp
+20 −0 CesiumGltfReader/include/CesiumGltfReader/GltfReader.h
+72 −14 CesiumGltfReader/src/GltfReader.cpp
+130 −0 CesiumGltfReader/src/applyKHRTextureTransform.cpp
+19 −0 CesiumGltfReader/src/applyKHRTextureTransform.h
+158 −0 CesiumGltfReader/src/decodeMeshOpt.cpp
+24 −0 CesiumGltfReader/src/decodeMeshOpt.h
+180 −0 CesiumGltfReader/src/dequantizeMeshData.cpp
+15 −0 CesiumGltfReader/src/dequantizeMeshData.h
+171 −0 CesiumGltfReader/test/TestGltfReader.cpp
+ CesiumGltfReader/test/data/DucksMeshopt/Duck-vp-12-vt-12-vn-12.glb
+ CesiumGltfReader/test/data/DucksMeshopt/Duck-vp-15-vt-15-vn-15.glb
+ CesiumGltfReader/test/data/DucksMeshopt/Duck-vp-3-vt-3-vn-3.glb
+ CesiumGltfReader/test/data/DucksMeshopt/Duck-vp-6-vt-6-vn-6.glb
+ CesiumGltfReader/test/data/DucksMeshopt/Duck-vp-9-vt-9-vn-9.glb
+ CesiumGltfReader/test/data/DucksMeshopt/Duck.glb
+13 −0 CesiumGltfReader/test/data/DucksMeshopt/README.md
+9 −0 CesiumGltfReader/test/data/ktx2/README.md
+ CesiumGltfReader/test/data/ktx2/kota-automipmap.ktx2
+ CesiumGltfReader/test/data/ktx2/kota-mipmaps.ktx2
+ CesiumGltfReader/test/data/ktx2/kota-onelevel.ktx2
+ CesiumGltfReader/test/data/ktx2/kota.jpg
+127 −0 CesiumGltfWriter/generated/src/ModelJsonWriter.cpp
+46 −0 CesiumGltfWriter/generated/src/ModelJsonWriter.h
+8 −0 CesiumGltfWriter/generated/src/registerExtensions.cpp
+3 −0 CesiumUtility/CMakeLists.txt
+14 −0 CesiumUtility/include/CesiumUtility/Gunzip.h
+51 −0 CesiumUtility/src/Gunzip.cpp
+12 −0 ThirdParty.json
+2 −0 doc/CMakeLists.txt
+7 −0 extern/CMakeLists.txt
+1 −0 extern/meshoptimizer
+1 −0 extern/zlib
+1 −1 package.json
+20 −0 tools/generate-classes/glTF.json
+1 −1 tools/generate-classes/package.json
2 changes: 0 additions & 2 deletions extern/nvidia/deps/target-deps.packman.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
<filter include="usdrt"/>
<filter include="carb_sdk_plugins"/>
<filter include="pybind11"/>
<filter include="cuda"/>
</import>
<import path="../_build/target-deps/kit-sdk-debug/dev/all-deps.packman.xml">
<filter include="nv_usd_py310_debug"/>
Expand All @@ -18,5 +17,4 @@
<dependency name="usdrt" linkPath="../_build/target-deps/usdrt"/>
<dependency name="carb_sdk_plugins" linkPath="../_build/target-deps/carb_sdk_plugins"/>
<dependency name="pybind11" linkPath="../_build/target-deps/pybind11/pybind11"/>
<dependency name="cuda" linkPath="../_build/target-deps/cuda/cuda"/>
</project>
14 changes: 11 additions & 3 deletions exts/cesium.omniverse/cesium/omniverse/extension.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from .bindings import acquire_cesium_omniverse_interface, release_cesium_omniverse_interface, Viewport
from .ui.add_menu_controller import CesiumAddMenuController
from .install import perform_vendor_install
from .utils import wait_n_frames, dock_window_async
from .utils import wait_n_frames, dock_window_async, perform_action_after_n_frames_async
from .ui.asset_window import CesiumOmniverseAssetWindow
from .ui.debug_window import CesiumOmniverseDebugWindow
from .ui.main_window import CesiumOmniverseMainWindow
Expand Down Expand Up @@ -87,7 +87,7 @@ def on_startup(self):

# Show the window. It will call `self.show_window`
if show_on_startup:
ui.Workspace.show_window(CesiumOmniverseMainWindow.WINDOW_NAME)
asyncio.ensure_future(perform_action_after_n_frames_async(15, CesiumOmniverseExtension._open_window))

self._credits_viewport_controller = CreditsViewportController(_cesium_omniverse_interface)

Expand Down Expand Up @@ -231,7 +231,7 @@ def _on_stage_event(self, event):
# Show Fabric modal if Fabric is disabled.
fabric_enabled = omni_settings.get_settings().get_as_bool("/app/useFabricSceneDelegate")
if not fabric_enabled:
CesiumFabricModal()
asyncio.ensure_future(perform_action_after_n_frames_async(15, CesiumOmniverseExtension._open_modal))
elif event.type == int(omni.usd.StageEventType.CLOSED):
_cesium_omniverse_interface.on_stage_change(0)
if self._attributes_widget_controller is not None:
Expand Down Expand Up @@ -421,3 +421,11 @@ def _destroy_credits_viewport_frames(self):
for credits_viewport_frame in self._credits_viewport_frames:
credits_viewport_frame.destroy()
self._credits_viewport_frames.clear()

@staticmethod
def _open_window():
ui.Workspace.show_window(CesiumOmniverseMainWindow.WINDOW_NAME)

@staticmethod
def _open_modal():
CesiumFabricModal()
20 changes: 20 additions & 0 deletions exts/cesium.omniverse/cesium/omniverse/tests/extension_test.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import omni.kit.test
import omni.kit.ui_test as ui_test
import omni.usd
import pxr.Usd

import cesium.usd
from typing import Optional


Expand All @@ -25,3 +29,19 @@ async def test_window_docked(self):
await _window_ref.focus()
await ui_test.wait_n_updates(4)
self.assertTrue(_window_ref.window.docked)

async def test_blank_tileset(self):
global _window_ref

blankTilesetButton = _window_ref.find("**/Button[*].text=='Blank 3D Tiles Tileset'")
self.assertIsNotNone(blankTilesetButton)

stage: pxr.Usd.Stage = omni.usd.get_context().get_stage()
self.assertIsNotNone(stage)

self.assertFalse(any([i.IsA(cesium.usd.plugins.CesiumUsdSchemas.Tileset) for i in stage.Traverse()]))

await blankTilesetButton.click()

await ui_test.wait_n_updates(2) # passes without, but seems prudent
self.assertTrue(any([i.IsA(cesium.usd.plugins.CesiumUsdSchemas.Tileset) for i in stage.Traverse()]))
7 changes: 6 additions & 1 deletion exts/cesium.omniverse/cesium/omniverse/utils/utils.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Optional
from typing import Optional, Callable
import omni.kit
import omni.ui as ui

Expand All @@ -21,6 +21,11 @@ async def dock_window_async(
window.focus()


async def perform_action_after_n_frames_async(n: int, action: Callable[[], None]):
await wait_n_frames(n)
action()


def str_is_empty_or_none(s: Optional[str]):
if s is None:
return True
Expand Down
4 changes: 4 additions & 0 deletions exts/cesium.omniverse/config/extension.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,16 @@ kit = ["105.*"]
[dependencies]
"cesium.usd.plugins" = {}
"usdrt.scenegraph" = {}
"omni.ui" = {}
"omni.usd" = {}
"omni.ui.scene" = {}
"omni.usd.libs" = {}
"omni.kit.commands" = {}
"omni.kit.pipapi" = {}
"omni.kit.uiapp" = {}
"omni.kit.viewport.utility" = {}
"omni.kit.property.usd" = {}
"omni.kit.menu.utils" = {}

# Main python module this extension provides, it will be publicly available as "import cesium.omniverse"
[[python.module]]
Expand Down
2 changes: 1 addition & 1 deletion src/core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ setup_lib(
uriparser
webpdecoder
turbojpeg
meshoptimizer
cpr::cpr
stb::stb
ZLIB::ZLIB
Expand Down Expand Up @@ -83,7 +84,6 @@ setup_lib(
boost_python310
tbb
carb
cudart
omni_kit
omni_ui
pybind11
Expand Down
5 changes: 4 additions & 1 deletion src/core/include/cesium/omniverse/FabricGeometry.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ class FabricGeometry {
FabricGeometry(
const pxr::SdfPath& path,
const FabricGeometryDefinition& geometryDefinition,
bool debugRandomColors);
bool debugRandomColors,
long stageId);
~FabricGeometry();

void setGeometry(
Expand All @@ -44,10 +45,12 @@ class FabricGeometry {
private:
void initialize();
void reset();
bool stageDestroyed();

const omni::fabric::Path _pathFabric;
const FabricGeometryDefinition _geometryDefinition;
const bool _debugRandomColors;
const long _stageId;
};

} // namespace cesium::omniverse
4 changes: 3 additions & 1 deletion src/core/include/cesium/omniverse/FabricGeometryPool.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ class FabricGeometryPool final : public ObjectPool<FabricGeometry> {
int64_t poolId,
const FabricGeometryDefinition& geometryDefinition,
uint64_t initialCapacity,
bool debugRandomColors);
bool debugRandomColors,
long stageId);

[[nodiscard]] const FabricGeometryDefinition& getGeometryDefinition() const;

Expand All @@ -24,6 +25,7 @@ class FabricGeometryPool final : public ObjectPool<FabricGeometry> {
const int64_t _poolId;
const FabricGeometryDefinition _geometryDefinition;
const bool _debugRandomColors;
const long _stageId;
};

} // namespace cesium::omniverse
5 changes: 4 additions & 1 deletion src/core/include/cesium/omniverse/FabricMaterial.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ class FabricMaterial {
FabricMaterial(
pxr::SdfPath path,
const FabricMaterialDefinition& materialDefinition,
pxr::SdfAssetPath defaultTextureAssetPath);
pxr::SdfAssetPath defaultTextureAssetPath,
long stageId);
~FabricMaterial();

void setMaterial(int64_t tilesetId, const MaterialInfo& materialInfo);
Expand All @@ -46,9 +47,11 @@ class FabricMaterial {
void setTilesetId(int64_t tilesetId);
void setMaterialValues(const MaterialInfo& materialInfo);
void setBaseColorTextureValues(const pxr::SdfAssetPath& textureAssetPath, const TextureInfo& textureInfo);
bool stageDestroyed();

const FabricMaterialDefinition _materialDefinition;
const pxr::SdfAssetPath _defaultTextureAssetPath;
const long _stageId;

omni::fabric::Path _materialPathFabric;
omni::fabric::Path _shaderPathFabric;
Expand Down
4 changes: 3 additions & 1 deletion src/core/include/cesium/omniverse/FabricMaterialPool.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ class FabricMaterialPool final : public ObjectPool<FabricMaterial> {
int64_t poolId,
const FabricMaterialDefinition& materialDefinition,
uint64_t initialCapacity,
pxr::SdfAssetPath defaultTextureAssetPath);
pxr::SdfAssetPath defaultTextureAssetPath,
long stageId);

[[nodiscard]] const FabricMaterialDefinition& getMaterialDefinition() const;

Expand All @@ -26,6 +27,7 @@ class FabricMaterialPool final : public ObjectPool<FabricMaterial> {
const int64_t _poolId;
const FabricMaterialDefinition _materialDefinition;
const pxr::SdfAssetPath _defaultTextureAssetPath;
const long _stageId;
};

} // namespace cesium::omniverse
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,10 @@ class FabricPrepareRenderResources final : public Cesium3DTilesSelection::IPrepa
const Cesium3DTilesSelection::RasterOverlayTile& rasterTile,
void* pMainThreadRendererResources) noexcept override;

private:
[[nodiscard]] bool tilesetExists() const;
void detachTileset();

const OmniTileset& _tileset;
private:
const OmniTileset* _tileset;
};
} // namespace cesium::omniverse
15 changes: 12 additions & 3 deletions src/core/include/cesium/omniverse/FabricResourceManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,13 @@ class FabricResourceManager {
bool hasImagery,
const pxr::SdfPath& materialPath) const;

std::shared_ptr<FabricGeometry>
acquireGeometry(const CesiumGltf::Model& model, const CesiumGltf::MeshPrimitive& primitive, bool smoothNormals);
std::shared_ptr<FabricGeometry> acquireGeometry(
const CesiumGltf::Model& model,
const CesiumGltf::MeshPrimitive& primitive,
bool smoothNormals,
long stageId);

std::shared_ptr<FabricMaterial> acquireMaterial(const MaterialInfo& materialInfo, bool hasImagery);
std::shared_ptr<FabricMaterial> acquireMaterial(const MaterialInfo& materialInfo, bool hasImagery, long stageId);

std::shared_ptr<FabricTexture> acquireTexture();

Expand Down Expand Up @@ -78,6 +81,12 @@ class FabricResourceManager {
std::shared_ptr<FabricMaterialPool> getMaterialPool(const FabricMaterialDefinition& materialDefinition);
std::shared_ptr<FabricTexturePool> getTexturePool();

std::shared_ptr<FabricGeometryPool>
createGeometryPool(const FabricGeometryDefinition& geometryDefinition, long stageId);
std::shared_ptr<FabricMaterialPool>
createMaterialPool(const FabricMaterialDefinition& materialDefinition, long stageId);
std::shared_ptr<FabricTexturePool> createTexturePool();

int64_t getNextGeometryId();
int64_t getNextMaterialId();
int64_t getNextTextureId();
Expand Down
4 changes: 4 additions & 0 deletions src/core/include/cesium/omniverse/ObjectPool.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,10 @@ template <typename T> class ObjectPool {
return _queue.size();
}

[[nodiscard]] bool isEmpty() const {
return getNumberInactive() == getCapacity();
}

[[nodiscard]] double computePercentActive() const {
const auto numberActive = static_cast<double>(getNumberActive());
const auto capacity = static_cast<double>(getCapacity());
Expand Down
1 change: 1 addition & 0 deletions src/core/include/cesium/omniverse/UsdUtil.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class ScopedEdit {
static const auto GEOREFERENCE_PATH = pxr::SdfPath("/CesiumGeoreference");

pxr::UsdStageRefPtr getUsdStage();
long getUsdStageId();
omni::fabric::StageReaderWriter getFabricStageReaderWriter();
omni::fabric::StageReaderWriterId getFabricStageReaderWriterId();

Expand Down
Loading

0 comments on commit df5ebff

Please sign in to comment.