POV-Ray : Newsgroups : povray.binaries.images : A speed enhancement for blurred reflections (144KB PNG) : A speed enhancement for blurred reflections (144KB PNG) Server Time
2 Nov 2024 10:18:02 EDT (-0400)
  A speed enhancement for blurred reflections (144KB PNG)  
From: stbenge
Date: 22 Jan 2011 16:59:30
Message: <4d3b5342@news.povray.org>
Hi,

A while ago somebody came up with a novel idea for rendering blurred 
reflections in POV-Ray. It used an averaged texture_map where each entry 
was reflective and had a jittered surface normal. Unfortunately the 
setup rendered very slowly when multiple inter-reflecting surfaces were 
present.

A speed enhancement can be used to cut the render time down 
significantly, with an arguably acceptable loss of accuracy. Under this 
setup, two instances of the same object are used. One copy is visible, 
uses blurred reflection, and has a no_reflection modifier applied to it. 
The other copy uses non-blurred reflection, but with a no_image modifier 
applied.

The image to the left uses a standard technique for creating blurred 
reflections. The object has a very small bumps normal. The scene uses 
focal blur with 1000 blur_samples and 0 variance. It took 3 minutes, 14 
seconds to render.

The image to the right uses the averaged texture_map technique with the 
aforementioned speed enhancement. The texture uses 256 averaged samples. 
It took only 34 seconds to render with medium AA settings.

They were both rendered on three cores and without any light_sources.

I didn't make a full render of the original averaged texture_map 
technique (it's way too slow), but the results would be comparable to 
using the focal blur method, though with different artifacts.

Here's the basic setup:

#declare Obj =
union{
  box{-1,1 scale<10,1,10> translate -y*5}
  sphere{0,4}
}

#declare Texture_Metallic =
texture{
  finish{
   reflection .9
  }
}

#declare Texture_Blurred_Metallic =
texture{
  average
  texture_map{
   #declare R=seed(1001);
   #declare V=0;
   #while(V<256)
    [1
     Texture_Metallic
     normal{
      bumps .2
      scale 4
      translate<rand(R),rand(R),rand(R)>*100
     }
    ]
    #declare V=V+1;
   #end
  }
}

object{Obj
  texture{ Texture_Blurred_Metallic }
  no_reflection
}

object{Obj
  texture{Texture_Metallic}
  no_image
}

This would probably be most useful for things like dull painted 
surfaces, wooden floors, plastic, etc.

~Sam


Post a reply to this message


Attachments:
Download 'rblur.png' (141 KB)

Preview of image 'rblur.png'
rblur.png


 

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