Merge branch 'master' into kimkulling/waveform_obj_optimizations
commit
0513eff44f
|
@ -56,7 +56,7 @@ IF(ASSIMP_HUNTER_ENABLED)
|
||||||
add_definitions(-DASSIMP_USE_HUNTER)
|
add_definitions(-DASSIMP_USE_HUNTER)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
PROJECT(Assimp VERSION 5.2.0)
|
PROJECT(Assimp VERSION 5.2.4)
|
||||||
|
|
||||||
# All supported options ###############################################
|
# All supported options ###############################################
|
||||||
|
|
||||||
|
@ -302,8 +302,12 @@ ELSEIF( MINGW )
|
||||||
SET(CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}")
|
SET(CMAKE_CXX_FLAGS "-std=gnu++11 ${CMAKE_CXX_FLAGS}")
|
||||||
SET(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}")
|
SET(CMAKE_C_FLAGS "-fPIC ${CMAKE_C_FLAGS}")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
SET(CMAKE_CXX_FLAGS "-fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long -Wa,-mbig-obj -O3 ${CMAKE_CXX_FLAGS}")
|
IF (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
SET(CMAKE_C_FLAGS "-fno-strict-aliasing ${CMAKE_C_FLAGS}")
|
SET(CMAKE_CXX_FLAGS "-fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long -Wa,-mbig-obj -g ${CMAKE_CXX_FLAGS}")
|
||||||
|
ELSE()
|
||||||
|
SET(CMAKE_CXX_FLAGS "-fvisibility=hidden -fno-strict-aliasing -Wall -Wno-long-long -Wa,-mbig-obj -O3 ${CMAKE_CXX_FLAGS}")
|
||||||
|
ENDIF()
|
||||||
|
SET(CMAKE_C_FLAGS "-fno-strict-aliasing ${CMAKE_C_FLAGS}")
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
IF ( IOS AND NOT ASSIMP_HUNTER_ENABLED)
|
IF ( IOS AND NOT ASSIMP_HUNTER_ENABLED)
|
||||||
|
|
|
@ -262,7 +262,7 @@ void Discreet3DSImporter::ConvertMaterial(D3DS::Material &oldMat,
|
||||||
unsigned int iWire = 1;
|
unsigned int iWire = 1;
|
||||||
mat.AddProperty<int>((int *)&iWire, 1, AI_MATKEY_ENABLE_WIREFRAME);
|
mat.AddProperty<int>((int *)&iWire, 1, AI_MATKEY_ENABLE_WIREFRAME);
|
||||||
}
|
}
|
||||||
|
// fallthrough
|
||||||
case D3DS::Discreet3DS::Gouraud:
|
case D3DS::Discreet3DS::Gouraud:
|
||||||
eShading = aiShadingMode_Gouraud;
|
eShading = aiShadingMode_Gouraud;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -1284,7 +1284,7 @@ void Discreet3DSImporter::ParseColorChunk(aiColor3D *out, bool acceptPercent) {
|
||||||
switch (chunk.Flag) {
|
switch (chunk.Flag) {
|
||||||
case Discreet3DS::CHUNK_LINRGBF:
|
case Discreet3DS::CHUNK_LINRGBF:
|
||||||
bGamma = true;
|
bGamma = true;
|
||||||
|
// fallthrough
|
||||||
case Discreet3DS::CHUNK_RGBF:
|
case Discreet3DS::CHUNK_RGBF:
|
||||||
if (sizeof(float) * 3 > diff) {
|
if (sizeof(float) * 3 > diff) {
|
||||||
*out = clrError;
|
*out = clrError;
|
||||||
|
@ -1297,6 +1297,7 @@ void Discreet3DSImporter::ParseColorChunk(aiColor3D *out, bool acceptPercent) {
|
||||||
|
|
||||||
case Discreet3DS::CHUNK_LINRGBB:
|
case Discreet3DS::CHUNK_LINRGBB:
|
||||||
bGamma = true;
|
bGamma = true;
|
||||||
|
// fallthrough
|
||||||
case Discreet3DS::CHUNK_RGBB: {
|
case Discreet3DS::CHUNK_RGBB: {
|
||||||
if (sizeof(char) * 3 > diff) {
|
if (sizeof(char) * 3 > diff) {
|
||||||
*out = clrError;
|
*out = clrError;
|
||||||
|
|
|
@ -870,6 +870,7 @@ void ASEImporter::ConvertMaterial(ASE::Material &mat) {
|
||||||
unsigned int iWire = 1;
|
unsigned int iWire = 1;
|
||||||
mat.pcInstance->AddProperty<int>((int *)&iWire, 1, AI_MATKEY_ENABLE_WIREFRAME);
|
mat.pcInstance->AddProperty<int>((int *)&iWire, 1, AI_MATKEY_ENABLE_WIREFRAME);
|
||||||
}
|
}
|
||||||
|
// fallthrough
|
||||||
case D3DS::Discreet3DS::Gouraud:
|
case D3DS::Discreet3DS::Gouraud:
|
||||||
eShading = aiShadingMode_Gouraud;
|
eShading = aiShadingMode_Gouraud;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -325,10 +325,10 @@ void SectionParser ::Next() {
|
||||||
stream.SetCurrentPos(current.start + current.size);
|
stream.SetCurrentPos(current.start + current.size);
|
||||||
|
|
||||||
const char tmp[] = {
|
const char tmp[] = {
|
||||||
(const char)stream.GetI1(),
|
(char)stream.GetI1(),
|
||||||
(const char)stream.GetI1(),
|
(char)stream.GetI1(),
|
||||||
(const char)stream.GetI1(),
|
(char)stream.GetI1(),
|
||||||
(const char)stream.GetI1()
|
(char)stream.GetI1()
|
||||||
};
|
};
|
||||||
current.id = std::string(tmp, tmp[3] ? 4 : tmp[2] ? 3 : tmp[1] ? 2 : 1);
|
current.id = std::string(tmp, tmp[3] ? 4 : tmp[2] ? 3 : tmp[1] ? 2 : 1);
|
||||||
|
|
||||||
|
|
|
@ -986,7 +986,7 @@ void BlenderImporter::ConvertMesh(const Scene & /*in*/, const Object * /*obj*/,
|
||||||
// key is material number, value is the TextureUVMapping for the material
|
// key is material number, value is the TextureUVMapping for the material
|
||||||
typedef std::map<uint32_t, TextureUVMapping> MaterialTextureUVMappings;
|
typedef std::map<uint32_t, TextureUVMapping> MaterialTextureUVMappings;
|
||||||
MaterialTextureUVMappings matTexUvMappings;
|
MaterialTextureUVMappings matTexUvMappings;
|
||||||
const uint32_t maxMat = static_cast<const uint32_t>(mesh->mat.size());
|
const uint32_t maxMat = static_cast<uint32_t>(mesh->mat.size());
|
||||||
for (uint32_t m = 0; m < maxMat; ++m) {
|
for (uint32_t m = 0; m < maxMat; ++m) {
|
||||||
// get material by index
|
// get material by index
|
||||||
const std::shared_ptr<Material> pMat = mesh->mat[m];
|
const std::shared_ptr<Material> pMat = mesh->mat[m];
|
||||||
|
|
|
@ -1616,6 +1616,7 @@ void ColladaParser::ReadIndexData(XmlNode &node, Mesh &pMesh) {
|
||||||
XmlParser::getValueAsString(currentNode, v);
|
XmlParser::getValueAsString(currentNode, v);
|
||||||
const char *content = v.c_str();
|
const char *content = v.c_str();
|
||||||
vcount.reserve(numPrimitives);
|
vcount.reserve(numPrimitives);
|
||||||
|
SkipSpacesAndLineEnd(&content);
|
||||||
for (unsigned int a = 0; a < numPrimitives; a++) {
|
for (unsigned int a = 0; a < numPrimitives; a++) {
|
||||||
if (*content == 0) {
|
if (*content == 0) {
|
||||||
throw DeadlyImportError("Expected more values while reading <vcount> contents.");
|
throw DeadlyImportError("Expected more values while reading <vcount> contents.");
|
||||||
|
@ -2057,7 +2058,7 @@ void ColladaParser::ReadSceneNode(XmlNode &node, Node *pNode) {
|
||||||
XmlParser::getStdStrAttribute(currentNode, "id", child->mID);
|
XmlParser::getStdStrAttribute(currentNode, "id", child->mID);
|
||||||
}
|
}
|
||||||
if (XmlParser::hasAttribute(currentNode, "sid")) {
|
if (XmlParser::hasAttribute(currentNode, "sid")) {
|
||||||
XmlParser::getStdStrAttribute(currentNode, "id", child->mSID);
|
XmlParser::getStdStrAttribute(currentNode, "sid", child->mSID);
|
||||||
}
|
}
|
||||||
if (XmlParser::hasAttribute(currentNode, "name")) {
|
if (XmlParser::hasAttribute(currentNode, "name")) {
|
||||||
XmlParser::getStdStrAttribute(currentNode, "name", child->mName);
|
XmlParser::getStdStrAttribute(currentNode, "name", child->mName);
|
||||||
|
|
|
@ -1540,6 +1540,7 @@ void LWOImporter::LoadLWO2File() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// --- intentionally no break here
|
// --- intentionally no break here
|
||||||
|
// fallthrough
|
||||||
case AI_LWO_VMAP: {
|
case AI_LWO_VMAP: {
|
||||||
if (skip)
|
if (skip)
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -313,6 +313,9 @@ void LWSImporter::SetupNodeName(aiNode *nd, LWS::NodeDesc &src) {
|
||||||
std::string::size_type t = src.path.substr(s).find_last_of('.');
|
std::string::size_type t = src.path.substr(s).find_last_of('.');
|
||||||
|
|
||||||
nd->mName.length = ::ai_snprintf(nd->mName.data, MAXLEN, "%s_(%08X)", src.path.substr(s).substr(0, t).c_str(), combined);
|
nd->mName.length = ::ai_snprintf(nd->mName.data, MAXLEN, "%s_(%08X)", src.path.substr(s).substr(0, t).c_str(), combined);
|
||||||
|
if (nd->mName.length > MAXLEN) {
|
||||||
|
nd->mName.length = MAXLEN;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -357,6 +357,8 @@ namespace pmx
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
void virtual Read(std::istream *stream, PmxSetting *setting) = 0;
|
void virtual Read(std::istream *stream, PmxSetting *setting) = 0;
|
||||||
|
|
||||||
|
virtual ~PmxMorphOffset() = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PmxMorphVertexOffset : public PmxMorphOffset
|
class PmxMorphVertexOffset : public PmxMorphOffset
|
||||||
|
|
|
@ -891,12 +891,12 @@ inline void Mesh::Decode_O3DGC(const SCompression_Open3DGC &pCompression_Open3DG
|
||||||
auto get_buf_offset = [](Ref<Accessor> &pAccessor) -> size_t { return pAccessor->byteOffset + pAccessor->bufferView->byteOffset; };
|
auto get_buf_offset = [](Ref<Accessor> &pAccessor) -> size_t { return pAccessor->byteOffset + pAccessor->bufferView->byteOffset; };
|
||||||
|
|
||||||
// Indices
|
// Indices
|
||||||
ifs.SetCoordIndex((IndicesType *const)(decoded_data + get_buf_offset(primitives[0].indices)));
|
ifs.SetCoordIndex((IndicesType *)(decoded_data + get_buf_offset(primitives[0].indices)));
|
||||||
// Coordinates
|
// Coordinates
|
||||||
ifs.SetCoord((o3dgc::Real *const)(decoded_data + get_buf_offset(primitives[0].attributes.position[0])));
|
ifs.SetCoord((o3dgc::Real *)(decoded_data + get_buf_offset(primitives[0].attributes.position[0])));
|
||||||
// Normals
|
// Normals
|
||||||
if (size_normal) {
|
if (size_normal) {
|
||||||
ifs.SetNormal((o3dgc::Real *const)(decoded_data + get_buf_offset(primitives[0].attributes.normal[0])));
|
ifs.SetNormal((o3dgc::Real *)(decoded_data + get_buf_offset(primitives[0].attributes.normal[0])));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t idx = 0, idx_end = size_floatattr.size(), idx_texcoord = 0; idx < idx_end; idx++) {
|
for (size_t idx = 0, idx_end = size_floatattr.size(), idx_texcoord = 0; idx < idx_end; idx++) {
|
||||||
|
@ -904,7 +904,7 @@ inline void Mesh::Decode_O3DGC(const SCompression_Open3DGC &pCompression_Open3DG
|
||||||
case o3dgc::O3DGC_IFS_FLOAT_ATTRIBUTE_TYPE_TEXCOORD:
|
case o3dgc::O3DGC_IFS_FLOAT_ATTRIBUTE_TYPE_TEXCOORD:
|
||||||
if (idx_texcoord < primitives[0].attributes.texcoord.size()) {
|
if (idx_texcoord < primitives[0].attributes.texcoord.size()) {
|
||||||
// See above about absent attributes.
|
// See above about absent attributes.
|
||||||
ifs.SetFloatAttribute(static_cast<unsigned long>(idx), (o3dgc::Real *const)(decoded_data + get_buf_offset(primitives[0].attributes.texcoord[idx])));
|
ifs.SetFloatAttribute(static_cast<unsigned long>(idx), (o3dgc::Real *)(decoded_data + get_buf_offset(primitives[0].attributes.texcoord[idx])));
|
||||||
idx_texcoord++;
|
idx_texcoord++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -374,6 +374,8 @@ struct CustomExtension {
|
||||||
mValues(other.mValues) {
|
mValues(other.mValues) {
|
||||||
// empty
|
// empty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CustomExtension& operator=(const CustomExtension&) = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Base class for all glTF top-level objects
|
//! Base class for all glTF top-level objects
|
||||||
|
|
|
@ -86,6 +86,13 @@ class Int128
|
||||||
|
|
||||||
Int128(const Int128 &val): hi(val.hi), lo(val.lo){}
|
Int128(const Int128 &val): hi(val.hi), lo(val.lo){}
|
||||||
|
|
||||||
|
Int128 operator = (const Int128 &val)
|
||||||
|
{
|
||||||
|
lo = val.lo;
|
||||||
|
hi = val.hi;
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
long64 operator = (const long64 &val)
|
long64 operator = (const long64 &val)
|
||||||
{
|
{
|
||||||
lo = val;
|
lo = val;
|
||||||
|
|
|
@ -61,7 +61,7 @@ TEST_F( utVersion, aiGetVersionMajorTest ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F( utVersion, aiGetVersionPatchTest ) {
|
TEST_F( utVersion, aiGetVersionPatchTest ) {
|
||||||
EXPECT_EQ(aiGetVersionPatch(), 0U );
|
EXPECT_EQ(aiGetVersionPatch(), 4U );
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F( utVersion, aiGetCompileFlagsTest ) {
|
TEST_F( utVersion, aiGetCompileFlagsTest ) {
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
#include "revision.h"
|
#include "revision.h"
|
||||||
#include "winres.h"
|
#if defined(__GNUC__) && defined(_WIN32)
|
||||||
|
#include "winresrc.h"
|
||||||
|
#else
|
||||||
|
#include "winres.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
#pragma code_page(1252)
|
#pragma code_page(1252)
|
||||||
|
|
Loading…
Reference in New Issue