|
|
Le 19/10/2010 19:10, Le_Forgeron nous fit lire :
> Le 19/10/2010 18:50, Warp nous fit lire :
>> Christian Froeschlin <chr### [at] chrfrde> wrote:
>>> I seem to be hitting a wall when stacking more than 64
>>> transparent objects ("Fatal error in renderer: Out of memory").
>>> The actual memory used by the process was only a few MB. Also,
>>> it doesn't help to set "max_trace_level" to a larger value,
>>> but AFAIU passing through transparency without reflection no
>>> longer adds to the trace level in 3.7 anyway (using beta 39).
>>
>> There's an easy way of testing if the problem happens because of that
>> feature: Add a tiny bit of refraction to the transparent objects. This
>> will make it use max_trace_level as usual. (Of course you should probably
>> increase max_trace_level to at least 65 to get a proper comparison.)
>>
>
> max_trace_level is a red herring.
>
> The issue is an exception (bad_alloc) in Run()
> (source/backend/support/task.cpp); 65 planes might be the real trigger.
>
> More on that later.
Found!
We are, with 65 planes, pushing too many interiors
source/backend/frame.h:
typedef FixedSimpleVector<Interior *, 64> RayInteriorVector;
render/tracepixel.cpp: 981, inside InitRayContainerStateTree();
containingInteriors.push_back(object->interior);
Work around for your scene: flip the z vector (plane { -z, 0 } instead
of plane { z, 0 }
Post a reply to this message
|
|