Skip to content

Commit

Permalink
Merge branch 'master' of github.com:gwaldron/osgearth
Browse files Browse the repository at this point in the history
  • Loading branch information
gwaldron committed Jan 10, 2024
2 parents c54655c + 658fe0d commit 5e01b51
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 38 deletions.
68 changes: 40 additions & 28 deletions CMakeModules/FindCesiumNative.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,44 +9,56 @@ FIND_PATH(CESIUM_NATIVE_INCLUDE_DIR CesiumUtility/Uri.h

MACRO( FIND_CESIUM_LIBRARY MYLIBRARY MYLIBRARYNAME )

FIND_LIBRARY(${MYLIBRARY}
FIND_LIBRARY(${MYLIBRARY}_LIBRARY_DEBUG
NAMES
${MYLIBRARYNAME}
${MYLIBRARYNAME}d
PATHS
${CESIUM_NATIVE_DIR}/lib
$ENV{CESIUM_NATIVE_DIR}
PATH_SUFFIXES lib64 lib
NO_DEFAULT_PATH
)

FIND_LIBRARY(${MYLIBRARY}_LIBRARY_RELEASE
NAMES
${MYLIBRARYNAME}
PATHS
${CESIUM_NATIVE_DIR}/lib
$ENV{CESIUM_NATIVE_DIR}
PATH_SUFFIXES lib64 lib
NO_DEFAULT_PATH
)

select_library_configurations(${MYLIBRARY})

ENDMACRO(FIND_CESIUM_LIBRARY LIBRARY LIBRARYNAME)

FIND_CESIUM_LIBRARY(CESIUM_NATIVE_3DTILES_LIBRARY Cesium3DTiles)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_3DTILES_SELECTION_LIBRARY Cesium3DTilesSelection)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GEOSPATIAL_LIBRARY CesiumGeospatial)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_UTILITY_LIBRARY CesiumUtility)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_ION_CLIENT_LIBRARY CesiumIonClient)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GLTF_READER_LIBRARY CesiumGltfReader)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_3DTILES_READER_LIBRARY Cesium3DTilesReader)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GEOMETRY_LIBRARY CesiumGeometry)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GLTF_LIBRARY CesiumGltf)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_KTX_READ_LIBRARY ktx_read)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_DRACO_LIBRARY draco)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_SPDLOG_LIBRARY spdlog)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_ASYNC++_LIBRARY async++)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_WEBPDECODER_LIBRARY webpdecoder)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_MESHOPTIMIZER_LIBRARY meshoptimizer)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_URIPARSER_LIBRARY uriparser)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_TURBOJPEG_LIBRARY turbojpeg)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_CSPRNG_LIBRARY csprng)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_MODPB64_LIBRARY modp_b64)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_JSONREADER_LIBRARY CesiumJsonReader)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_ASYNC_LIBRARY CesiumAsync)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_S2GEOMETRY_LIBRARY s2geometry)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_RASTER_OVERLAYS_LIBRARY CesiumRasterOverlays)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_3DTILES_CONTENT_LIBRARY Cesium3DTilesContent)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GLTF_CONTENT_LIBRARY CesiumGltfContent)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_TINYXML2_LIBRARY tinyxml2)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_3DTILES Cesium3DTiles)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_3DTILES_SELECTION Cesium3DTilesSelection)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GEOSPATIAL CesiumGeospatial)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_UTILITY CesiumUtility)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_ION_CLIENT CesiumIonClient)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GLTF_READER CesiumGltfReader)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_3DTILES_READER Cesium3DTilesReader)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GEOMETRY CesiumGeometry)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GLTF CesiumGltf)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_KTX_READ ktx_read)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_DRACO draco)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_SPDLOG spdlog)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_ASYNC++ async++)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_WEBPDECODER webpdecoder)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_MESHOPTIMIZER meshoptimizer)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_URIPARSER uriparser)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_TURBOJPEG turbojpeg)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_CSPRNG csprng)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_MODPB64 modp_b64)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_JSONREADER CesiumJsonReader)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_ASYNC CesiumAsync)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_S2GEOMETRY s2geometry)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_RASTER_OVERLAYS CesiumRasterOverlays)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_3DTILES_CONTENT Cesium3DTilesContent)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_GLTF_CONTENT CesiumGltfContent)
FIND_CESIUM_LIBRARY(CESIUM_NATIVE_TINYXML2 tinyxml2)



Expand Down
3 changes: 3 additions & 0 deletions CMakeModules/FindDraco.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,9 @@ else()
find_library(draco_LIBRARIES NAMES draco.lib libdraco.a)
endif()

include(SelectLibraryConfigurations)
select_library_configurations(draco)

# Store path to library.
get_filename_component(draco_LIBRARY_DIRS ${draco_LIBRARIES} DIRECTORY)

Expand Down
4 changes: 2 additions & 2 deletions src/osgEarth/ArcGISServer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -259,8 +259,8 @@ ArcGISServer::MapService::init( const URI& _uri, const osgDB::ReaderWriter::Opti
std::string format = "png";
int tile_rows = 256;
int tile_cols = 256;
int min_level = 25;
int max_level = 0;
int min_level = 0;
int max_level = 25;
int num_tiles_wide = 1;
int num_tiles_high = 1;

Expand Down
30 changes: 22 additions & 8 deletions src/osgEarthCesium/PrepareRenderResources.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include <osg/Texture2D>
#include <osg/Geometry>
#include <osgEarth/ImageUtils>
#include <osgEarth/Lighting>
#include <osgEarth/Notify>
#include <osgEarth/Registry>
#include <osg/MatrixTransform>
Expand All @@ -35,6 +36,11 @@ using namespace osgEarth::Cesium;

namespace
{
#ifdef GL_R
const GLenum redFormat = GL_R;
#else
const GLenum redFormat = GL_RED;
#endif

osg::Image* getOsgImage(CesiumGltf::ImageCesium& image)
{
Expand All @@ -48,7 +54,7 @@ namespace
switch (image.channels)
{
case 1:
format = GL_R;
format = redFormat;
texFormat = GL_R8;
break;
case 2:
Expand Down Expand Up @@ -82,7 +88,7 @@ namespace
texFormat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
break;
case CesiumGltf::GpuCompressedPixelFormat::BC4_R:
format = GL_R;
format = redFormat;
texFormat = GL_COMPRESSED_RED_RGTC1_EXT;
break;
case CesiumGltf::GpuCompressedPixelFormat::BC5_RG:
Expand Down Expand Up @@ -114,7 +120,7 @@ namespace
return nullptr;
break;
case CesiumGltf::GpuCompressedPixelFormat::ETC2_EAC_R11:
format = GL_R;
format = redFormat;
texFormat = GL_COMPRESSED_R11_EAC;
break;
case CesiumGltf::GpuCompressedPixelFormat::ETC2_EAC_RG11:
Expand Down Expand Up @@ -533,13 +539,21 @@ class NodeBuilder

if (primitive.material >= 0 && primitive.material < _model->materials.size())
{
osg::StateSet* stateSet = geom->getOrCreateStateSet();
auto& material = _model->materials[primitive.material];
auto pbr = material.pbrMetallicRoughness;
unsigned int baseColorTexture = pbr->baseColorTexture->index;
if (baseColorTexture >= 0 && baseColorTexture < _textures.size())
{
osg::StateSet* stateSet = geom->getOrCreateStateSet();
stateSet->setTextureAttributeAndModes(0, _textures[baseColorTexture], osg::StateAttribute::ON);
if (pbr->baseColorFactor.size() > 0) {
osgEarth::MaterialGL3* material = new osgEarth::MaterialGL3();
osg::Vec4d color(pbr->baseColorFactor[0], pbr->baseColorFactor[1], pbr->baseColorFactor[2], pbr->baseColorFactor[3]);
material->setDiffuse(osg::Material::FRONT_AND_BACK, color);
stateSet->setAttributeAndModes(material);
}
if (pbr->baseColorTexture.has_value()) {
unsigned int baseColorTexture = pbr->baseColorTexture->index;
if (baseColorTexture >= 0 && baseColorTexture < _textures.size())
{
stateSet->setTextureAttributeAndModes(0, _textures[baseColorTexture], osg::StateAttribute::ON);
}
}
}

Expand Down

0 comments on commit 5e01b51

Please sign in to comment.