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

Callers 2

buildUIMethod · 0.85
mainFunction · 0.85

Calls 1

GetTextureSetPixelCountFunction · 0.85

Tested by

no test coverage detected