SL-18513 Put profile markers around GLTF code.
parent
8faa5a3305
commit
9f21fba6d9
|
|
@ -42,6 +42,7 @@ LLGLTFMaterial::LLGLTFMaterial(const LLGLTFMaterial& rhs)
|
|||
|
||||
LLGLTFMaterial& LLGLTFMaterial::operator=(const LLGLTFMaterial& rhs)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
//have to do a manual operator= because of LLRefCount
|
||||
mBaseColorId = rhs.mBaseColorId;
|
||||
mNormalId = rhs.mNormalId;
|
||||
|
|
@ -65,7 +66,7 @@ LLGLTFMaterial& LLGLTFMaterial::operator=(const LLGLTFMaterial& rhs)
|
|||
|
||||
bool LLGLTFMaterial::fromJSON(const std::string& json, std::string& warn_msg, std::string& error_msg)
|
||||
{
|
||||
#if 1
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
tinygltf::TinyGLTF gltf;
|
||||
|
||||
tinygltf::Model model_in;
|
||||
|
|
@ -74,18 +75,14 @@ bool LLGLTFMaterial::fromJSON(const std::string& json, std::string& warn_msg, st
|
|||
{
|
||||
setFromModel(model_in, 0);
|
||||
|
||||
//DEBUG generate json and print
|
||||
LL_INFOS() << asJSON(true) << LL_ENDL;
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
return false;
|
||||
}
|
||||
|
||||
std::string LLGLTFMaterial::asJSON(bool prettyprint) const
|
||||
{
|
||||
#if 1
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
tinygltf::TinyGLTF gltf;
|
||||
|
||||
tinygltf::Model model_out;
|
||||
|
|
@ -97,13 +94,11 @@ std::string LLGLTFMaterial::asJSON(bool prettyprint) const
|
|||
gltf.WriteGltfSceneToStream(&model_out, str, prettyprint, false);
|
||||
|
||||
return str.str();
|
||||
#else
|
||||
return "";
|
||||
#endif
|
||||
}
|
||||
|
||||
void LLGLTFMaterial::setFromModel(const tinygltf::Model& model, S32 mat_index)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if (model.materials.size() <= mat_index)
|
||||
{
|
||||
return;
|
||||
|
|
@ -198,6 +193,7 @@ std::string gltf_get_texture_image(const tinygltf::Model& model, const T& textur
|
|||
template<typename T>
|
||||
void LLGLTFMaterial::setFromTexture(const tinygltf::Model& model, const T& texture_info, TextureInfo texture_info_id, LLUUID& texture_id_out)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
const std::string uri = gltf_get_texture_image(model, texture_info);
|
||||
texture_id_out.set(uri);
|
||||
|
||||
|
|
@ -219,6 +215,7 @@ void LLGLTFMaterial::setFromTexture(const tinygltf::Model& model, const T& textu
|
|||
|
||||
void LLGLTFMaterial::writeToModel(tinygltf::Model& model, S32 mat_index) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if (model.materials.size() < mat_index+1)
|
||||
{
|
||||
model.materials.resize(mat_index + 1);
|
||||
|
|
@ -277,6 +274,7 @@ void gltf_allocate_texture_image(tinygltf::Model& model, T& texture_info, const
|
|||
template<typename T>
|
||||
void LLGLTFMaterial::writeToTexture(tinygltf::Model& model, T& texture_info, TextureInfo texture_info_id, const LLUUID& texture_id, bool is_override, const LLUUID& base_texture_id) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
if (texture_id.isNull() || (is_override && texture_id == base_texture_id))
|
||||
{
|
||||
return;
|
||||
|
|
@ -447,6 +445,7 @@ F32 LLGLTFMaterial::getDefaultTextureRotation()
|
|||
|
||||
void LLGLTFMaterial::applyOverride(const LLGLTFMaterial& override_mat)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
// TODO: potentially reimplement this with a more general purpose JSON merge
|
||||
|
||||
if (override_mat.mBaseColorId != getDefaultBaseColorId())
|
||||
|
|
|
|||
|
|
@ -198,6 +198,7 @@ LLSD LLTextureEntry::asLLSD() const
|
|||
|
||||
void LLTextureEntry::asLLSD(LLSD& sd) const
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
sd["imageid"] = mID;
|
||||
sd["colors"] = ll_sd_from_color4(mColor);
|
||||
sd["scales"] = mScaleS;
|
||||
|
|
@ -225,6 +226,7 @@ void LLTextureEntry::asLLSD(LLSD& sd) const
|
|||
|
||||
bool LLTextureEntry::fromLLSD(const LLSD& sd)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
const char *w, *x;
|
||||
w = "imageid";
|
||||
if (sd.has(w))
|
||||
|
|
|
|||
|
|
@ -61,6 +61,7 @@ namespace
|
|||
|
||||
bool operator()(const LLDispatcher* dispatcher, const std::string& key, const LLUUID& invoice, const sparam_t& strings) override
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
// receive override data from simulator via LargeGenericMessage
|
||||
// message should have:
|
||||
// object_id - UUID of LLViewerObject
|
||||
|
|
@ -196,6 +197,7 @@ void LLGLTFMaterialList::queueOverrideUpdate(const LLUUID& id, S32 side, LLGLTFM
|
|||
|
||||
void LLGLTFMaterialList::applyQueuedOverrides(LLViewerObject* obj)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
const LLUUID& id = obj->getID();
|
||||
auto iter = mQueuedOverrides.find(id);
|
||||
|
||||
|
|
@ -225,9 +227,11 @@ void LLGLTFMaterialList::applyQueuedOverrides(LLViewerObject* obj)
|
|||
|
||||
LLGLTFMaterial* LLGLTFMaterialList::getMaterial(const LLUUID& id)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
uuid_mat_map_t::iterator iter = mList.find(id);
|
||||
if (iter == mList.end())
|
||||
{
|
||||
LL_PROFILE_ZONE_NAMED("gltf fetch")
|
||||
LLFetchedGLTFMaterial* mat = new LLFetchedGLTFMaterial();
|
||||
mList[id] = mat;
|
||||
|
||||
|
|
@ -242,55 +246,66 @@ LLGLTFMaterial* LLGLTFMaterialList::getMaterial(const LLUUID& id)
|
|||
gAssetStorage->getAssetData(id, LLAssetType::AT_MATERIAL,
|
||||
[=](const LLUUID& id, LLAssetType::EType asset_type, void* user_data, S32 status, LLExtStat ext_status)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED("gltf asset callback");
|
||||
if (status)
|
||||
{
|
||||
LL_WARNS() << "Error getting material asset data: " << LLAssetStorage::getErrorString(status) << " (" << status << ")" << LL_ENDL;
|
||||
}
|
||||
|
||||
LLFileSystem file(id, asset_type, LLFileSystem::READ);
|
||||
auto size = file.getSize();
|
||||
if (!size)
|
||||
std::vector<char> buffer;
|
||||
|
||||
{
|
||||
LL_DEBUGS() << "Zero size material." << LL_ENDL;
|
||||
mat->mFetching = false;
|
||||
mat->unref();
|
||||
return;
|
||||
LL_PROFILE_ZONE_SCOPED("gltf read asset");
|
||||
LLFileSystem file(id, asset_type, LLFileSystem::READ);
|
||||
auto size = file.getSize();
|
||||
if (!size)
|
||||
{
|
||||
LL_DEBUGS() << "Zero size material." << LL_ENDL;
|
||||
mat->mFetching = false;
|
||||
mat->unref();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
buffer.resize(size);
|
||||
file.read((U8*)&buffer[0], buffer.size());
|
||||
}
|
||||
|
||||
std::vector<char> buffer;
|
||||
buffer.resize(size);
|
||||
file.read((U8*)&buffer[0], buffer.size());
|
||||
|
||||
LLSD asset;
|
||||
|
||||
// read file into buffer
|
||||
std::istrstream str(&buffer[0], buffer.size());
|
||||
|
||||
if (LLSDSerialize::deserialize(asset, str, buffer.size()))
|
||||
{
|
||||
if (asset.has("version") && asset["version"] == "1.0")
|
||||
LL_PROFILE_ZONE_SCOPED("gltf deserialize asset");
|
||||
|
||||
LLSD asset;
|
||||
|
||||
// read file into buffer
|
||||
std::istrstream str(&buffer[0], buffer.size());
|
||||
|
||||
if (LLSDSerialize::deserialize(asset, str, buffer.size()))
|
||||
{
|
||||
if (asset.has("type") && asset["type"].asString() == "GLTF 2.0")
|
||||
if (asset.has("version") && asset["version"] == "1.0")
|
||||
{
|
||||
if (asset.has("data") && asset["data"].isString())
|
||||
if (asset.has("type") && asset["type"].asString() == "GLTF 2.0")
|
||||
{
|
||||
std::string data = asset["data"];
|
||||
|
||||
std::string warn_msg, error_msg;
|
||||
|
||||
if (!mat->fromJSON(data, warn_msg, error_msg))
|
||||
if (asset.has("data") && asset["data"].isString())
|
||||
{
|
||||
LL_WARNS() << "Failed to decode material asset: " << LL_ENDL;
|
||||
LL_WARNS() << warn_msg << LL_ENDL;
|
||||
LL_WARNS() << error_msg << LL_ENDL;
|
||||
std::string data = asset["data"];
|
||||
|
||||
std::string warn_msg, error_msg;
|
||||
|
||||
if (!mat->fromJSON(data, warn_msg, error_msg))
|
||||
{
|
||||
LL_WARNS() << "Failed to decode material asset: " << LL_ENDL;
|
||||
LL_WARNS() << warn_msg << LL_ENDL;
|
||||
LL_WARNS() << error_msg << LL_ENDL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Failed to deserialize material LLSD" << LL_ENDL;
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Failed to deserialize material LLSD" << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
mat->mFetching = false;
|
||||
|
|
|
|||
|
|
@ -5350,6 +5350,7 @@ S32 LLViewerObject::setTEMaterialParams(const U8 te, const LLMaterialPtr pMateri
|
|||
|
||||
S32 LLViewerObject::setTEGLTFMaterialOverride(U8 te, LLGLTFMaterial* override_mat)
|
||||
{
|
||||
LL_PROFILE_ZONE_SCOPED;
|
||||
S32 retval = TEM_CHANGE_NONE;
|
||||
|
||||
LLTextureEntry* tep = getTE(te);
|
||||
|
|
|
|||
Loading…
Reference in New Issue