From 0b139c906ca27ff81434152c1d5b8225ebdabde5 Mon Sep 17 00:00:00 2001 From: samcake Date: Tue, 31 Jan 2017 10:56:30 -0800 Subject: [PATCH 1/5] Assigniing default textures that make sense --- libraries/render-utils/src/MeshPartPayload.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libraries/render-utils/src/MeshPartPayload.cpp b/libraries/render-utils/src/MeshPartPayload.cpp index 5e47ed8b0f..1bce710d3a 100644 --- a/libraries/render-utils/src/MeshPartPayload.cpp +++ b/libraries/render-utils/src/MeshPartPayload.cpp @@ -150,11 +150,11 @@ void MeshPartPayload::bindMaterial(gpu::Batch& batch, const ShapePipeline::Locat if (!enableTextures) { batch.setResourceTexture(ShapePipeline::Slot::ALBEDO, textureCache->getWhiteTexture()); batch.setResourceTexture(ShapePipeline::Slot::MAP::ROUGHNESS, textureCache->getWhiteTexture()); - batch.setResourceTexture(ShapePipeline::Slot::MAP::NORMAL, nullptr); - batch.setResourceTexture(ShapePipeline::Slot::MAP::METALLIC, nullptr); - batch.setResourceTexture(ShapePipeline::Slot::MAP::OCCLUSION, nullptr); - batch.setResourceTexture(ShapePipeline::Slot::MAP::SCATTERING, nullptr); - batch.setResourceTexture(ShapePipeline::Slot::MAP::EMISSIVE_LIGHTMAP, nullptr); + batch.setResourceTexture(ShapePipeline::Slot::MAP::NORMAL, textureCache->getBlueTexture()); + batch.setResourceTexture(ShapePipeline::Slot::MAP::METALLIC, textureCache->getBlackTexture()); + batch.setResourceTexture(ShapePipeline::Slot::MAP::OCCLUSION, textureCache->getWhiteTexture()); + batch.setResourceTexture(ShapePipeline::Slot::MAP::SCATTERING, textureCache->getWhiteTexture()); + batch.setResourceTexture(ShapePipeline::Slot::MAP::EMISSIVE_LIGHTMAP, textureCache->getBlackTexture()); return; } From 6bdf50f2dbebaeaae5aa169e45461b46800c6ccb Mon Sep 17 00:00:00 2001 From: samcake Date: Wed, 1 Feb 2017 15:16:37 -0800 Subject: [PATCH 2/5] moving mip map gen to cpu --- libraries/model/src/model/TextureMap.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/model/src/model/TextureMap.cpp b/libraries/model/src/model/TextureMap.cpp index ab96a04f31..1b7f661eb3 100755 --- a/libraries/model/src/model/TextureMap.cpp +++ b/libraries/model/src/model/TextureMap.cpp @@ -52,6 +52,7 @@ std::atomic DECIMATED_TEXTURE_COUNT { 0 }; std::atomic RECTIFIED_TEXTURE_COUNT { 0 }; QImage processSourceImage(const QImage& srcImage, bool cubemap) { + PROFILE_RANGE(resource_parse, "processSourceImage"); const uvec2 srcImageSize = toGlm(srcImage.size()); uvec2 targetSize = srcImageSize; @@ -109,6 +110,7 @@ void TextureMap::setLightmapOffsetScale(float offset, float scale) { } const QImage TextureUsage::process2DImageColor(const QImage& srcImage, bool& validAlpha, bool& alphaAsMask) { + PROFILE_RANGE(resource_parse, "process2DImageColor"); QImage image = processSourceImage(srcImage, false); validAlpha = false; alphaAsMask = true; @@ -197,10 +199,11 @@ const QImage& image, bool isLinear, bool doCompress) { } } -#define CPU_MIPMAPS 0 +#define CPU_MIPMAPS 1 void generateMips(gpu::Texture* texture, QImage& image, gpu::Element formatMip) { #if CPU_MIPMAPS + PROFILE_RANGE(resource_parse, "generateMips"); auto numMips = texture->evalNumMips(); for (uint16 level = 1; level < numMips; ++level) { QSize mipSize(texture->evalMipWidth(level), texture->evalMipHeight(level)); @@ -214,6 +217,7 @@ void generateMips(gpu::Texture* texture, QImage& image, gpu::Element formatMip) void generateFaceMips(gpu::Texture* texture, QImage& image, gpu::Element formatMip, uint8 face) { #if CPU_MIPMAPS + PROFILE_RANGE(resource_parse, "generateFaceMips"); auto numMips = texture->evalNumMips(); for (uint16 level = 1; level < numMips; ++level) { QSize mipSize(texture->evalMipWidth(level), texture->evalMipHeight(level)); @@ -226,6 +230,7 @@ void generateFaceMips(gpu::Texture* texture, QImage& image, gpu::Element formatM } gpu::Texture* TextureUsage::process2DTextureColorFromImage(const QImage& srcImage, const std::string& srcImageName, bool isLinear, bool doCompress, bool generateMips) { + PROFILE_RANGE(resource_parse, "process2DTextureColorFromImage"); bool validAlpha = false; bool alphaAsMask = true; QImage image = process2DImageColor(srcImage, validAlpha, alphaAsMask); From 3aa239b004861008c8dbe0d9fec99544ab5e30bf Mon Sep 17 00:00:00 2001 From: sam Date: Wed, 1 Feb 2017 22:00:03 -0800 Subject: [PATCH 3/5] More instrumentation during texture load --- libraries/model/src/model/TextureMap.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libraries/model/src/model/TextureMap.cpp b/libraries/model/src/model/TextureMap.cpp index 1b7f661eb3..3c5fc004af 100755 --- a/libraries/model/src/model/TextureMap.cpp +++ b/libraries/model/src/model/TextureMap.cpp @@ -73,7 +73,8 @@ QImage processSourceImage(const QImage& srcImage, bool cubemap) { } if (targetSize != srcImageSize) { - qDebug(modelLog) << "Resizing texture from " << srcImageSize.x << "x" << srcImageSize.y << " to " << targetSize.x << "x" << targetSize.y; + PROFILE_RANGE(resource_parse, "processSourceImage Rectify"); + qDebug(modelLog) << "Resizing texture from " << srcImageSize.x << "x" << srcImageSize.y << " to " << targetSize.x << "x" << targetSize.y; return srcImage.scaled(fromGlm(targetSize)); } @@ -282,6 +283,7 @@ gpu::Texture* TextureUsage::createLightmapTextureFromImage(const QImage& srcImag gpu::Texture* TextureUsage::createNormalTextureFromNormalImage(const QImage& srcImage, const std::string& srcImageName) { + PROFILE_RANGE(resource_parse, "createNormalTextureFromNormalImage"); QImage image = processSourceImage(srcImage, false); if (image.format() != QImage::Format_RGB888) { @@ -316,6 +318,7 @@ double mapComponent(double sobelValue) { } gpu::Texture* TextureUsage::createNormalTextureFromBumpImage(const QImage& srcImage, const std::string& srcImageName) { + PROFILE_RANGE(resource_parse, "createNormalTextureFromBumpImage"); QImage image = processSourceImage(srcImage, false); if (image.format() != QImage::Format_RGB888) { @@ -388,6 +391,7 @@ gpu::Texture* TextureUsage::createNormalTextureFromBumpImage(const QImage& srcIm } gpu::Texture* TextureUsage::createRoughnessTextureFromImage(const QImage& srcImage, const std::string& srcImageName) { + PROFILE_RANGE(resource_parse, "createRoughnessTextureFromImage"); QImage image = processSourceImage(srcImage, false); if (!image.hasAlphaChannel()) { if (image.format() != QImage::Format_RGB888) { @@ -422,6 +426,7 @@ gpu::Texture* TextureUsage::createRoughnessTextureFromImage(const QImage& srcIma } gpu::Texture* TextureUsage::createRoughnessTextureFromGlossImage(const QImage& srcImage, const std::string& srcImageName) { + PROFILE_RANGE(resource_parse, "createRoughnessTextureFromGlossImage"); QImage image = processSourceImage(srcImage, false); if (!image.hasAlphaChannel()) { if (image.format() != QImage::Format_RGB888) { @@ -460,6 +465,7 @@ gpu::Texture* TextureUsage::createRoughnessTextureFromGlossImage(const QImage& s } gpu::Texture* TextureUsage::createMetallicTextureFromImage(const QImage& srcImage, const std::string& srcImageName) { + PROFILE_RANGE(resource_parse, "createMetallicTextureFromImage"); QImage image = processSourceImage(srcImage, false); if (!image.hasAlphaChannel()) { if (image.format() != QImage::Format_RGB888) { From 446aaf3bce1f2842af75de4d8dc5940726cd8956 Mon Sep 17 00:00:00 2001 From: samcake Date: Thu, 2 Feb 2017 11:58:02 -0800 Subject: [PATCH 4/5] Turn off cpu mip map to add instrumentation to master --- libraries/model/src/model/TextureMap.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/model/src/model/TextureMap.cpp b/libraries/model/src/model/TextureMap.cpp index 3c5fc004af..faa80a3196 100755 --- a/libraries/model/src/model/TextureMap.cpp +++ b/libraries/model/src/model/TextureMap.cpp @@ -200,7 +200,7 @@ const QImage& image, bool isLinear, bool doCompress) { } } -#define CPU_MIPMAPS 1 +#define CPU_MIPMAPS 0 void generateMips(gpu::Texture* texture, QImage& image, gpu::Element formatMip) { #if CPU_MIPMAPS From c4ec0cc069838643cd444a2ef92fca2cb109952d Mon Sep 17 00:00:00 2001 From: sam Date: Thu, 2 Feb 2017 22:09:52 -0800 Subject: [PATCH 5/5] fixing a bad cDebug --- libraries/model/src/model/TextureMap.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/model/src/model/TextureMap.cpp b/libraries/model/src/model/TextureMap.cpp index faa80a3196..5903be11d3 100755 --- a/libraries/model/src/model/TextureMap.cpp +++ b/libraries/model/src/model/TextureMap.cpp @@ -74,7 +74,7 @@ QImage processSourceImage(const QImage& srcImage, bool cubemap) { if (targetSize != srcImageSize) { PROFILE_RANGE(resource_parse, "processSourceImage Rectify"); - qDebug(modelLog) << "Resizing texture from " << srcImageSize.x << "x" << srcImageSize.y << " to " << targetSize.x << "x" << targetSize.y; + qCDebug(modelLog) << "Resizing texture from " << srcImageSize.x << "x" << srcImageSize.y << " to " << targetSize.x << "x" << targetSize.y; return srcImage.scaled(fromGlm(targetSize)); }