MCPcopy Create free account
hub / github.com/NVIDIA-RTX/RTXNTC / SaveCompressedTextureSet

Function SaveCompressedTextureSet

tools/cli/NtcCommandLine.cpp:1542–1588  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1540}
1541
1542bool SaveCompressedTextureSet(ntc::IContext* context, ntc::ITextureSet* textureSet)
1543{
1544 ntc::FileStreamWrapper outputStream(context);
1545
1546 ntc::Status ntcStatus = context->OpenFile(g_options.saveCompressedFileName, true, outputStream.ptr());
1547 if (ntcStatus != ntc::Status::Ok)
1548 {
1549 fprintf(stderr, "Cannot open output file '%s', code = %s\n%s\n",
1550 g_options.saveCompressedFileName, ntc::StatusToString(ntcStatus), ntc::GetLastErrorMessage());
1551 return false;
1552 }
1553
1554 ntcStatus = textureSet->ConfigureLosslessCompression(g_options.losslessCompression);
1555 CHECK_NTC_RESULT(ConfigureLosslessCompression);
1556
1557 ntc::LosslessCompressionStats losslessStats;
1558 ntcStatus = textureSet->SaveToStream(outputStream, &losslessStats);
1559 if (ntcStatus != ntc::Status::Ok)
1560 {
1561 fprintf(stderr, "Failed to save compressed texture to output file '%s', code = %s\n%s\n",
1562 g_options.saveCompressedFileName, ntc::StatusToString(ntcStatus), ntc::GetLastErrorMessage());
1563 return false;
1564 }
1565
1566 uint64_t const fileSize = outputStream->Tell();
1567 size_t const texturePixels = GetTextureSetPixelCount(textureSet);
1568 float const bpp = 8.f * float(fileSize) / float(texturePixels);
1569
1570 printf("Saved '%s'\n", g_options.saveCompressedFileName);
1571 printf("File size: %" PRIu64 " bytes, %.2f bits per pixel.\n", fileSize, bpp);
1572 if (g_options.losslessCompression.compressBCModeBuffers || g_options.losslessCompression.compressLatents)
1573 {
1574 double const compressedBufferRatioPercents = (losslessStats.originalSizeOfCompressedBuffers == 0) ? 0.0 :
1575 100.0 * double(losslessStats.sizeOfCompressedBuffers) / double(losslessStats.originalSizeOfCompressedBuffers);
1576
1577 double const overallCmpressionRatioPercents = 100.0 *
1578 double(losslessStats.sizeOfCompressedBuffers + losslessStats.sizeOfUncompressedBuffers) /
1579 double(losslessStats.originalSizeOfCompressedBuffers + losslessStats.sizeOfUncompressedBuffers);
1580
1581 printf("%s compressed %d buffers out of %d, compressed ratio %.1f%%, overall ratio %.1f%%, time %.2f ms\n",
1582 ntc::CompressionTypeToString(g_options.losslessCompression.algorithm),
1583 losslessStats.compressedBuffers, losslessStats.totalBuffers,
1584 compressedBufferRatioPercents, overallCmpressionRatioPercents, losslessStats.compressionTimeMs);
1585 }
1586
1587 return true;
1588}
1589
1590ntc::ITextureSet* LoadCompressedTextureSet(ntc::IContext* context)
1591{

Callers 2

buildUIMethod · 0.85
mainFunction · 0.85

Calls 1

GetTextureSetPixelCountFunction · 0.85

Tested by

no test coverage detected