|
 |
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'

|
 |