Announcement

Collapse
No announcement yet.

Handling white spots resulting from hdr float values well above 1.0

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Handling white spots resulting from hdr float values well above 1.0

    I have a problem when using a V-Ray sun or hdr images with enormous float values as light sources. This results in white spots/pixels in my renderings.

    I understand that this is because the sub pixels are getting extremely large float values from the light source, and that when the sub pixel values are averaged, it results in overbright, white pixels.

    My solution has always been to turn on sub pixel mapping and clamping with a value of 1.0. This definitely gets rid of these white spots, but it also clamps any float values in my rendering down to 1.0.

    Am I destroying the exposure range of my 32 bit images by clamping down to 1.0? If so, how do you stay in 32bit yet get around the overbright pixel issue?

    Basically I want all the value of a dynamic range that an hdr brings, but I can't have white specks all over my reflective surfaces.

    Thoughts are appreciated!

  • #2
    Originally posted by drew_almighty View Post
    Basically I want all the value of a dynamic range that an hdr brings, but I can't have white specks all over my reflective surfaces.
    Short Answer: Sample the shit out of it. And then bloom the remaining hard edges. The fireflies are caused by any glossy effects that might hit or not hit a tiny bright lightsource. The fewer samples, the more randomness (because that one "accidental" hit on the overbright is averaged with more "dark" samples).

    Then you will still be facing hard edges (e.g. VrayLight edge to for example). This is not a rendering constraint. It's a matter of quantising the image information to pixels. There simply is no way to blend a value of 30 and a value of 0.1 and have the result between 0 and 1 unless you clamp.

    A compromise can be clamping to something above 1 (like 5 or something) which often helps a lot already.

    In regards to dynamic range. There's a difference between dynamic range and resolution. a 32bit float value is always a 32bit float value and offers the corresponding amount of possible values. So even if you clamp between 0 and 1 you still get more possible values than between 1 and infinity. So going float is always a big advantage. You can hardly ever use all the dynamic range you save tho, because part of speeding up renderers is not sampling hardly visible things. So dark areas have noise and you can not infinitely raise these without adding noise. But you won't see banding.

    What you are loosing with clamping tho is the correct brightness relations. So for example if you have a clamped HDR of the sun and you lower the exposure, your sun will drop brightness way to quick compared to darker areas of the image.

    Kind regards,
    Thorsten

    Comment


    • #3
      Well if you clamp them at 1 you can also just take a LDR image. After all, as Thorsten said.. sample the shit out of it, there is no real other way.
      As higher the range as more white dots you will get. But to get nice HDR reflections and Lightning (no matter if by a HDR image or
      some kind of High value light) you will need a certain range above 1. A VraySun at noon has roughly a multiplier of 70.
      A Paul Debevec HDRI can have a multiplier of 1000+. So it´s important to set your dynamic range in advance. I made a good experience with values of
      50-100 for the direct light and 25-30 for environment lighting. For HDR images I´d suggest using a domelight in case you don´t allready use it. It samples
      much cleaner compared to an HDR in the environment slot. It also depends on the GI engine you use. As far as I can tell the pathtracers have much more
      problems getting rid of those white spots so I usually stick to bruteforce/lightcache or IRmap/lightcache.
      Last edited by samuel_bubat; 15-11-2012, 03:05 AM.

      Comment


      • #4
        Thanks guys. I do use a dome for the environment and reflection HDR's, and I also use irradiance for primary and brute force for secondary. My final settings for samples are ridiculously high, so needing to take more samples seems like a dead end to me.

        I'll probably try clamping at a value of 5 or 6 and see if that helps.

        Comment


        • #5
          I think AA affects it. Stay away from Catmull-Rom.

          Comment


          • #6
            Check your AA settings, as catpower says using sharpening filters cause problems. If you're using really high max AA samples they might be limiting your light and material samples so what you're saying about using ridiculously high samples might not be giving you the result you expect. Could you pop up a render with a sample rate, reflection and raw reflection element cropped to one of the problem settings? Also stick up your AA sample settings, the material causing the problem and possibly what light sources you're using in the scene.

            Comment


            • #7
              Originally posted by instinct View Post
              Short Answer: Sample the shit out of it. And then bloom the remaining hard edges. The fireflies are caused by any glossy effects that might hit or not hit a tiny bright lightsource. The fewer samples, the more randomness (because that one "accidental" hit on the overbright is averaged with more "dark" samples).

              Then you will still be facing hard edges (e.g. VrayLight edge to for example). This is not a rendering constraint. It's a matter of quantising the image information to pixels. There simply is no way to blend a value of 30 and a value of 0.1 and have the result between 0 and 1 unless you clamp.

              A compromise can be clamping to something above 1 (like 5 or something) which often helps a lot already.

              In regards to dynamic range. There's a difference between dynamic range and resolution. a 32bit float value is always a 32bit float value and offers the corresponding amount of possible values. So even if you clamp between 0 and 1 you still get more possible values than between 1 and infinity. So going float is always a big advantage. You can hardly ever use all the dynamic range you save tho, because part of speeding up renderers is not sampling hardly visible things. So dark areas have noise and you can not infinitely raise these without adding noise. But you won't see banding.

              What you are loosing with clamping tho is the correct brightness relations. So for example if you have a clamped HDR of the sun and you lower the exposure, your sun will drop brightness way to quick compared to darker areas of the image.

              Kind regards,
              Thorsten
              I want to understand clearly about clamping:
              This is what I know:
              When we have a 32bit flot image, we have values higher than 1 which corresponds to 255 white.
              And if we clamp the image at 1, we force the values to be 1 as the maximum.
              No?
              Then how do we have a 32bit image when we force clamping at 1- can you please explain me?
              for my blog and tutorials:
              www.alfasmyrna.com

              Comment


              • #8
                Yep - a 32 bit image with clamping at 1 is still possible. You loose all of the full range of brightness and only get black to white or 0 to 1, but instead of 0 - 255 being your only choices of levels between black and white, you now have 0.0000000 to 1.0000000 or similar - you now have way more accurate colour between black and white. So, is there a major benefit of having a 32 bit float image but clamping it to 1? There's less reason to do it, but using 32 bit means you can colour correct the image more and have less problems with banding afterwards.

                Comment


                • #9
                  I see what you mean. But I think this is a very minor gain compared to a higher brightness range.
                  for my blog and tutorials:
                  www.alfasmyrna.com

                  Comment


                  • #10
                    Big time - it's only handy if you intend on doing really aggressive grading on your final images which would cause banding on a normal 0 - 255 image.

                    Comment


                    • #11
                      I typically make the sun invisible (turn off specular for it), for HDR or sun clamp around 5 and use quadratic AA filter and then sharpen in post
                      tends to help
                      "It's the rebels sir....They're here..."

                      Comment


                      • #12
                        I am using Area filter, so I doubt it's an AA filter sharpness issue.
                        It only happens where reflective surfaces receive float values well over 1.0 and throw off the average.
                        I can always fix it with subpixel mapping and clamping to 1.0, just a little unhappy that it removes the full dynamic range of the image.
                        But if you've got super high float values in light sources, I guess it's crazy to not expect those values to affect your reflections in 32bit renderings.

                        Comment

                        Working...
                        X