@@ -1500,14 +1500,13 @@ void Renderer::takeAndSaveScreenShot(const std::filesystem::path& screenshotFile
1500
1500
filename_wo_ext.replace_extension ();
1501
1501
if (m_tonemapOutput)
1502
1502
ext::ScreenShot::createScreenShot (m_driver,m_assetManager,m_tonemapOutput.get (),filename_wo_ext.string ()+" .exr" ,format);
1503
+ if (m_albedoRslv)
1504
+ ext::ScreenShot::createScreenShot (m_driver,m_assetManager,m_albedoRslv.get (),filename_wo_ext.string ()+" _albedo.exr" ,format);
1505
+ if (m_normalRslv)
1506
+ ext::ScreenShot::createScreenShot (m_driver,m_assetManager,m_normalRslv.get (),filename_wo_ext.string ()+" _normal.exr" ,format);
1503
1507
1504
1508
if (denoise)
1505
1509
{
1506
- if (m_albedoRslv)
1507
- ext::ScreenShot::createScreenShot (m_driver,m_assetManager,m_albedoRslv.get (),filename_wo_ext.string ()+" _albedo.exr" ,format);
1508
- if (m_normalRslv)
1509
- ext::ScreenShot::createScreenShot (m_driver,m_assetManager,m_normalRslv.get (),filename_wo_ext.string ()+" _normal.exr" ,format);
1510
-
1511
1510
const std::string defaultBloomFile = " ../../media/kernels/physical_flare_512.exr" ;
1512
1511
const std::string defaultTonemapperArgs = " ACES=0.4,0.8" ;
1513
1512
constexpr auto defaultBloomScale = 0 .1f ;
@@ -1535,6 +1534,98 @@ void Renderer::takeAndSaveScreenShot(const std::filesystem::path& screenshotFile
1535
1534
}
1536
1535
}
1537
1536
1537
+ void Renderer::denoiseCubemapFaces (
1538
+ std::filesystem::path filePaths[6 ],
1539
+ const std::string& mergedFileName,
1540
+ int borderPixels,
1541
+ const DenoiserArgs& denoiserArgs)
1542
+ {
1543
+ auto commandQueue = m_rrManager->getCLCommandQueue ();
1544
+ ocl::COpenCLHandler::ocl.pclFinish (commandQueue);
1545
+
1546
+ glFinish ();
1547
+
1548
+ std::string renderFilePaths[6 ] = {};
1549
+ std::string albedoFilePaths[6 ] = {};
1550
+ std::string normalFilePaths[6 ] = {};
1551
+ for (uint32_t i = 0 ; i < 6 ; ++i)
1552
+ renderFilePaths[i] = filePaths[i].replace_extension ().string () + " .exr" ;
1553
+ for (uint32_t i = 0 ; i < 6 ; ++i)
1554
+ albedoFilePaths[i] = filePaths[i].replace_extension ().string () + " _albedo.exr" ;
1555
+ for (uint32_t i = 0 ; i < 6 ; ++i)
1556
+ normalFilePaths[i] = filePaths[i].replace_extension ().string () + " _normal.exr" ;
1557
+
1558
+ std::string mergedRenderFilePath = mergedFileName + " .exr" ;
1559
+ std::string mergedAlbedoFilePath = mergedFileName + " _albedo.exr" ;
1560
+ std::string mergedNormalFilePath = mergedFileName + " _normal.exr" ;
1561
+ std::string mergedDenoisedFilePath = mergedFileName + " _denoised.exr" ;
1562
+
1563
+ std::ostringstream mergeRendersCmd;
1564
+ mergeRendersCmd << " call ../mergeCubemap.bat" ;
1565
+ for (uint32_t i = 0 ; i < 6 ; ++i)
1566
+ mergeRendersCmd << " " << renderFilePaths[i];
1567
+ mergeRendersCmd << " " << mergedRenderFilePath;
1568
+ std::system (mergeRendersCmd.str ().c_str ());
1569
+
1570
+ std::ostringstream mergeAlbedosCmd;
1571
+ mergeAlbedosCmd << " call ../mergeCubemap.bat " ;
1572
+ for (uint32_t i = 0 ; i < 6 ; ++i)
1573
+ mergeAlbedosCmd << " " << albedoFilePaths[i];
1574
+ mergeAlbedosCmd << " " << mergedAlbedoFilePath;
1575
+ std::system (mergeAlbedosCmd.str ().c_str ());
1576
+
1577
+ std::ostringstream mergeNormalsCmd;
1578
+ mergeNormalsCmd << " call ../mergeCubemap.bat " ;
1579
+ for (uint32_t i = 0 ; i < 6 ; ++i)
1580
+ mergeNormalsCmd << " " << normalFilePaths[i];
1581
+ mergeNormalsCmd << " " << mergedNormalFilePath;
1582
+ std::system (mergeNormalsCmd.str ().c_str ());
1583
+
1584
+ const std::string defaultBloomFile = " ../../media/kernels/physical_flare_512.exr" ;
1585
+ const std::string defaultTonemapperArgs = " ACES=0.4,0.8" ;
1586
+ constexpr auto defaultBloomScale = 0 .1f ;
1587
+ constexpr auto defaultBloomIntensity = 0 .1f ;
1588
+ auto bloomFilePathStr = (denoiserArgs.bloomFilePath .string ().empty ()) ? defaultBloomFile : denoiserArgs.bloomFilePath .string ();
1589
+ auto bloomScale = (denoiserArgs.bloomScale == 0 .0f ) ? defaultBloomScale : denoiserArgs.bloomScale ;
1590
+ auto bloomIntensity = (denoiserArgs.bloomIntensity == 0 .0f ) ? defaultBloomIntensity : denoiserArgs.bloomIntensity ;
1591
+ auto tonemapperArgs = (denoiserArgs.tonemapperArgs .empty ()) ? defaultTonemapperArgs : denoiserArgs.tonemapperArgs ;
1592
+
1593
+ std::ostringstream denoiserCmd;
1594
+ // 1.ColorFile 2.AlbedoFile 3.NormalFile 4.BloomPsfFilePath(STRING) 5.BloomScale(FLOAT) 6.BloomIntensity(FLOAT) 7.TonemapperArgs(STRING)
1595
+ denoiserCmd << " call ../denoiser_hook.bat" ;
1596
+ denoiserCmd << " \" " << mergedRenderFilePath << " \" " ;
1597
+ denoiserCmd << " \" " << mergedAlbedoFilePath << " \" " ;
1598
+ denoiserCmd << " \" " << mergedNormalFilePath << " \" " ;
1599
+ denoiserCmd << " \" " << bloomFilePathStr << " \" " ;
1600
+ denoiserCmd << " " << bloomScale;
1601
+ denoiserCmd << " " << bloomIntensity;
1602
+ denoiserCmd << " " << " \" " << tonemapperArgs << " \" " ;
1603
+ // NOTE/TODO/FIXME : Do as I say, not as I do
1604
+ // https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=87152177
1605
+ std::cout << " \n ---[DENOISER_BEGIN]---" << std::endl;
1606
+ std::system (denoiserCmd.str ().c_str ());
1607
+ std::cout << " \n ---[DENOISER_END]---" << std::endl;
1608
+
1609
+ auto extractCubemapFaces = [&](const std::string& extension) -> void
1610
+ {
1611
+ std::ostringstream extractImagesCmd;
1612
+ auto mergedDenoisedWithoutExtension = std::filesystem::path (mergedDenoisedFilePath).replace_extension ().string ();
1613
+ extractImagesCmd << " call ../extractCubemap.bat " ;
1614
+ extractImagesCmd << " " << std::to_string (borderPixels);
1615
+ extractImagesCmd << " " << mergedDenoisedWithoutExtension + extension;
1616
+ for (uint32_t i = 0 ; i < 6 ; ++i)
1617
+ {
1618
+ auto renderFilePathWithoutExtension = std::filesystem::path (renderFilePaths[i]).replace_extension ().string ();
1619
+ extractImagesCmd << " " << renderFilePathWithoutExtension + " _denoised" + extension;
1620
+ }
1621
+ std::system (extractImagesCmd.str ().c_str ());
1622
+ };
1623
+
1624
+ extractCubemapFaces (" .exr" );
1625
+ extractCubemapFaces (" .png" );
1626
+ extractCubemapFaces (" .jpg" );
1627
+ }
1628
+
1538
1629
// one day it will just work like that
1539
1630
// #include <nbl/builtin/glsl/sampling/box_muller_transform.glsl>
1540
1631
0 commit comments