Skip to content

Commit

Permalink
Fixed OptiX denoiser with Python module.
Browse files Browse the repository at this point in the history
  • Loading branch information
chrismile committed Aug 22, 2024
1 parent 88210a8 commit b362e20
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 6 deletions.
8 changes: 4 additions & 4 deletions src/Denoiser/OptixVptDenoiser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ void OptixVptDenoiser::createDenoiser() {
}

OptixDenoiserOptions options;
options.guideAlbedo = useAlbedo ? 1 : 0;
options.guideNormal = useNormalMap ? 1 : 0;
options.guideAlbedo = useAlbedo && albedoImageVulkan ? 1 : 0;
options.guideNormal = useNormalMap && normalImageVulkan ? 1 : 0;
#if OPTIX_VERSION >= 80000
options.denoiseAlpha = denoiseAlpha ? OPTIX_DENOISER_ALPHA_MODE_COPY : OPTIX_DENOISER_ALPHA_MODE_DENOISE;
#endif
Expand Down Expand Up @@ -286,7 +286,7 @@ void OptixVptDenoiser::recreateSwapchain(uint32_t width, uint32_t height) {
inputImageOptix.rowStrideInBytes = inputWidth * 4 * sizeof(float);
inputImageOptix.data = inputImageBufferCu->getCudaDevicePtr();

if (useAlbedo) {
if (useAlbedo && albedoImageVulkan) {
albedoImageBufferCu = {};
albedoImageBufferVk = std::make_shared<sgl::vk::Buffer>(
device, inputWidth * inputHeight * 4 * sizeof(float),
Expand All @@ -304,7 +304,7 @@ void OptixVptDenoiser::recreateSwapchain(uint32_t width, uint32_t height) {
albedoImageOptix.data = albedoImageBufferCu->getCudaDevicePtr();
}

if (useNormalMap) {
if (useNormalMap && normalImageVulkan) {
normalImageBufferCu = {};
normalImageBufferVk = std::make_shared<sgl::vk::Buffer>(
device, inputWidth * inputHeight * 3 * sizeof(float),
Expand Down
7 changes: 5 additions & 2 deletions src/PathTracer/VolumetricPathTracingPass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1710,7 +1710,10 @@ void VolumetricPathTracingPass::checkRecreateDenoiser() {
}

void VolumetricPathTracingPass::_render() {
checkRecreateDenoiser();
bool useDenoiserThisFrame = featureMapSet.find(FeatureMapTypeVpt::TRANSMITTANCE_VOLUME) == featureMapSet.end();
if (useDenoiserThisFrame) {
checkRecreateDenoiser();
}

std::string eventName = getCurrentEventName();
if (createNewAccumulationTimer) {
Expand Down Expand Up @@ -2009,7 +2012,7 @@ void VolumetricPathTracingPass::_render() {
timerStopped = false;

if (featureMapType == FeatureMapTypeVpt::RESULT) {
if (useDenoiser && denoiser && denoiser->getIsEnabled() && !isIntermediatePass) {
if (useDenoiser && useDenoiserThisFrame && denoiser && denoiser->getIsEnabled() && !isIntermediatePass) {
if (!reachedTarget){
denoiseTimer->startGPU("denoise");
accumulationTimer->startGPU("denoise");
Expand Down

0 comments on commit b362e20

Please sign in to comment.