POV-Ray : Newsgroups : povray.binaries.images : A speed enhancement for blurred reflections (144KB PNG) Server Time
30 Jul 2024 18:24:08 EDT (-0400)
  A speed enhancement for blurred reflections (144KB PNG) (Message 1 to 10 of 18)  
Goto Latest 10 Messages Next 8 Messages >>>
From: stbenge
Subject: A speed enhancement for blurred reflections (144KB PNG)
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


 

From: Christian Froeschlin
Subject: Re: A speed enhancement for blurred reflections (144KB PNG)
Date: 22 Jan 2011 17:19:04
Message: <4d3b57d8$1@news.povray.org>
Neat. It's similar to max_trace_level for area lights
in MegaPOV. Maybe a general mechanism for reduced quality
settings in reflections would be nice for future versions.


Post a reply to this message

From: stbenge
Subject: Re: A speed enhancement for blurred reflections (144KB PNG)
Date: 22 Jan 2011 20:44:09
Message: <4d3b87e9@news.povray.org>
On 1/22/2011 2:18 PM, Christian Froeschlin wrote:
> Neat. It's similar to max_trace_level for area lights
> in MegaPOV. Maybe a general mechanism for reduced quality
> settings in reflections would be nice for future versions.

Especially if said future version natively supported blurred 
reflection/refraction. I wouldn't mind a loss of accuracy for such a 
feature (at least it would still be raytraced :) ).


Post a reply to this message

From: clipka
Subject: Re: A speed enhancement for blurred reflections (144KB PNG)
Date: 23 Jan 2011 07:52:10
Message: <4d3c247a$1@news.povray.org>
Am 22.01.2011 22:58, schrieb stbenge:

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

I'd suggest a minor modification to this approach: For the no_image 
version, do use the same normals pertubation as for the no_reflection 
version, except that only a single layer is used.


The downside of your approach is of course that it won't work well with 
a mix of both blurred and non-blurred surfaces in the same scene, e.g. a 
dull brass figure in front of a mirror.


Post a reply to this message

From: Dave Blandston
Subject: Re: A speed enhancement for blurred reflections (144KB PNG)
Date: 23 Jan 2011 11:55:00
Message: <web.4d3c5c5ece9e302b1df6284f0@news.povray.org>
stbenge <myu### [at] hotmailcom> wrote:
> 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.

That's a great idea and it works like a charm, but...

http://news.povray.org/povray.binaries.images/message/%3C4baab97a%241%40news.povray.org%3E/#%3C4baab97a%241%40news.povr
ay.org%3E

-Just shows you guys are both very sharp!

Regards,
Dave Blandston


Post a reply to this message

From: Mr
Subject: Re: A speed enhancement for blurred reflections (144KB PNG)
Date: 23 Jan 2011 13:00:01
Message: <web.4d3c6c77ce9e302b1cd033bf0@news.povray.org>
stbenge <myu### [at] hotmailcom> wrote:
 > 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.

Would there be a corresponding technique for speeding up blurred refractions?


Post a reply to this message

From: stbenge
Subject: Re: A speed enhancement for blurred reflections (144KB PNG)
Date: 23 Jan 2011 14:53:51
Message: <4d3c874f$1@news.povray.org>
On 1/23/2011 8:50 AM, Dave Blandston wrote:
> That's a great idea and it works like a charm, but...
>
>
http://news.povray.org/povray.binaries.images/message/%3C4baab97a%241%40news.povray.org%3E/#%3C4baab97a%241%40news.povr
> ay.org%3E
>
> -Just shows you guys are both very sharp!
>
> Regards,
> Dave Blandston

That figures! I do remember that thread, but I can't remember if had 
read through all of it or not... Ideas often get lodged into my 
subconsciousness, surfacing now and again giving me the impression that 
they are original thoughts. At any rate, it's a good speed enhancement 
that needed more exposure ;)

~Sam


Post a reply to this message

From: stbenge
Subject: Re: A speed enhancement for blurred reflections (144KB PNG)
Date: 23 Jan 2011 15:03:05
Message: <4d3c8979@news.povray.org>
On 1/23/2011 4:52 AM, clipka wrote:
> I'd suggest a minor modification to this approach: For the no_image
> version, do use the same normals pertubation as for the no_reflection
> version, except that only a single layer is used.

One layer, as in two total averaged copies of the texture?

> The downside of your approach is of course that it won't work well with
> a mix of both blurred and non-blurred surfaces in the same scene, e.g. a
> dull brass figure in front of a mirror.

The main problem is that the object possessing the blurred reflection 
interacts with itself too much. Reflection groups would be the way to 
go, but they would probably be difficult to set up (if they existed).

~Sam


Post a reply to this message

From: stbenge
Subject: Re: A speed enhancement for blurred reflections (144KB PNG)
Date: 23 Jan 2011 15:07:57
Message: <4d3c8a9d@news.povray.org>
On 1/23/2011 9:59 AM, Mr wrote:
>
>   stbenge<myu### [at] hotmailcom>  wrote:
>   >  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.
>
> Would there be a corresponding technique for speeding up blurred refractions?

There would, if POV had a "no_refraction" modifier. The best (and 
fastest) method for blurred refractions that I can think of is to bake 
all your scene's textures to meshes (and/or use Rune's illusion.inc), 
add a small surface normal to the refractive material and use high focal 
blur settings.

~Sam


Post a reply to this message

From: Christian Froeschlin
Subject: Re: A speed enhancement for blurred reflections (144KB PNG)
Date: 23 Jan 2011 17:42:27
Message: <4d3caed3$1@news.povray.org>
stbenge wrote:

> There would, if POV had a "no_refraction" modifier.

Even then a scene might not benefit much, as a second
blurred refraction object would need to be positioned
such that it appears in the first blurred refraction
for this technique to help. Refraction tends to be
less annoyingly recursive than reflection ;)

BTW I just tried: if the refraction leads to total
internal reflection the no_reflection modifier will
take effect.


Post a reply to this message

Goto Latest 10 Messages Next 8 Messages >>>

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