POV-Ray : Newsgroups : povray.newusers : how to make a blurry reflection? : Re: how to make a blurry reflection? Server Time
24 Jun 2026 07:46:09 EDT (-0400)
  Re: how to make a blurry reflection?  
From: Kenneth
Date: 9 Jun 2026 13:30:00
Message: <web.6a284b38bb25f7d0e83955656e066e29@news.povray.org>
I ran some comparison tests of two of the blur methods-- averaging full TEXTURES
vs. simpler averaged NORMALS in a single texture. I had never achieved decent
results with the latter method, until I realized that strong antialiasing was
*required* to eliminate its 'noisy' appearance. For both methods, I used a very
small-scaled 'bumps' pattern; 'granite' looks a bit better but is slower to
render.

(For the averaged-textures method, I also used max_trace_level 4 in
global_settings; the default is 5, but higher values really slow down the render
when there are other reflective objects in a scene.)

I was surprised to see that the averaged-normals method looks OK when using only
one normal (or two or three averaged copies at most.) A normal can be thought of
as a grayscale pattern (either 0.0 to 1.0 or -0.5 to +0.5 ?)-- and averaging a
lot of offset copies really just 'smooths them out' to a flat median value.
.....which looks almost like no normal effect at all. The averaged-TEXTURES
method-- even though it uses multiple averaged normals as well-- is a different
situation, because it creates averaged *reflections* too.

Both methods produce a nice blur; the only real difference is render time-- and
the averaged-textures method does not necessarily need antialiasing, depending
on the number of textures used. But if you are going to use AA anyway, the
averaged-normals method is faster. (For its AA, I used the default Method 1,
with Antialias_Threshold 0.1 and Antialias_Depth 8. The current 3.8 betas have a
new AA Method 3, which looks better and is faster.)  As an added bonus, the
averaged-normals method does not 'blur' phong/specular highlights.

For the averaged-textures method, Alain's suggestion of using TWO overlapping
objects for the blurred sphere (the primary one with with no_reflection, the 2nd
one with no blur  and no_image) is an excellent one-- it vastly speeds up the
render (when there are other reflective objects in the scene), even though the
blurred object shows up on the other objects as non-blurred. That is not very
noticeable IMO, unless you are specifically looking for it.  The averaged
NORMALS method does not really need this trick (or the restricted
max_trace_level value) since it uses only *one* reflective texture, regardless
of its multiple normals.

--------------------------
I used the following values for both test methods:
#declare Norm_Scale = .0001;
#declare Blur_Softness = .35; // how 'smeared out' the blurring is
#declare Multiplier = 60; // 60 for A), 3 or even 1 for B)
#declare S = seed(13);

#declare TEX_1 =
texture{
     pigment {rgb .8}
     finish {ambient 0 emission 0 diffuse .2  reflection .7
             phong 1 phong_size 14}
       }


A)  Averaged TEXTURES example:
#declare C = 1;
sphere{0,1
   texture{
      average
      texture_map{
      #while(C <= Multiplier)
          [1
          TEX_1
          normal{
              bumps
              scale Norm_Scale
              bump_size Blur_Softness
              translate <rand(S),rand(S),rand(S)>*10
                }
          ]
     #declare C = C+1;
     #end
                }
          }
       }


B) Averaged NORMALS example:
#declare C = 1;
sphere{0,1
texture{TEX_1}
    normal{
       average
       normal_map{
       #while(C <= Multiplier)
          [1
          bumps
          bump_size Blur_Softness
          scale Norm_Scale
          translate <rand(S),rand(S),rand(S)>*10
          ]
       #declare C = C+1;
       #end
                 }
          }
   }


Post a reply to this message


Attachments:
Download 'blurred_reflections_tests_kw.jpg' (412 KB)

Preview of image 'blurred_reflections_tests_kw.jpg'
blurred_reflections_tests_kw.jpg


 

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.