ingowald / optix7course

Apache License 2.0
452 stars 80 forks source link

Normal output of first pass not used in last example #41

Closed lobneroO closed 1 year ago

lobneroO commented 1 year ago

In example 12 you write out a Normal channel in your first "pass" (is it called a pass in ray tracing?). For example 12, you say that "This example improves on the simple denoising by computing a separate normal buffer", but you only use the albedo and (lighted) color buffer:

denoiserOptions.inputKind = OPTIX_DENOISER_INPUT_RGB_ALBEDO;

I think you need to use denoiserOptions.inputKind = OPTIX_DENOISER_INPUT_RGB_ALBEDO_NORMAL; instead?

This is in example12_denoiseSeparateChannels/SampleRenderer.cpp line 794.

Also, this example is not mentioned at all in the tutorial pdf.

ingowald commented 1 year ago

Hm; yes, that does seem indeed right. It's a long time ago that I wrote that code, and I think I faintly remember there being some issue (at the time) where this wasn't implemented, or broken, or not supported in the optix version i used back then (that code was originally written when the denoiser had just come out).... though of course, it can also just be an oversight/copy-pasta error. Apologies! I just fixed that in the latest version - and thx for that ping!

BTW: Reason this isn't in the slides is that the slides are from an earlier course at siggraph, where I wrote all that code "just" as accompanying sample code, in the matter of a few days before the actual talk... then "upon popular request" a few additional things got added to the code after siggraph was over, but the slides of course never got updated after that talk was already given.