Hello,

On Thu, Mar 17, 2016 at 4:57 AM Vasco Alexandre da Silva Costa <
vasco.co...@gmail.com> wrote:

> On Wed, Mar 16, 2016 at 9:44 PM, Param Hanji <param.catchch...@gmail.com>
> wrote:
>
> You will need a lot of time to port bool.c so you need to schedule
> appropriately. That code is rife with gotos, structs with pointers, and
> dynamic memory allocation. We don't want any of that in OpenCL. The sooner
> you start looking into that code the better. I did some patches last summer
> to remove many gotos from the existing code but there are still several
> left.
>
> I suggest you read the presentation Sean linked to so you can get an idea
> for what boolean operations and CSG are:
> http://web.iitd.ac.in/~hegde/cad/lecture/L30_solidmod_basics.pdf
>
> The main functions of interest in bool.c are rt_bool_eval, rt_boolweave,
> and rt_boolfinal. rt_boolweave and rt_bool_final do dynamic memory
> allocations with linked lists but, if you read their code carefully, the
> maximum output size is bounded as a function of the input size. The input
> is the list of intersection points. The size of the list of intersection
> points is already being computed by rt.cl:count_hits(). So you can pre
> allocate a chunk of memory with the maximum possible output size and pass
> that array to your functions.
> As for rt_bool_eval the boolean ops tree is stored as a tree of pointers
> to structs. Can't have that. The rt_bool_eval function uses gotos. Can't
> have those either.
>

I'll start looking into the code as soon as i can. Is there any resource I
can refer to get a brief high level understanding of how ray tracing
occurs. I have no knowledge of computer graphics and even theoretical
resources pertaining to the specific functions(eval, weave) would be
helpful. I'll look out for some on my own too.

>
> I started a patch in ANSI C to reimplement rt_bool_eval without gotos with
> a linearized tree, stored in an array, which can be easily copied to the
> compute device. You can find that patch here:
> https://sourceforge.net/p/brlcad/patches/417/
> The rt_bool_eval patch #417 is functional but it still has some warts in
> it.
>
>
I noticed that you had proposed to design a new implementation of the
boolean weave function in this pdf last year.

https://drive.google.com/file/d/0B85Rkmt7rnCTZV9HNVIyZTRUMWM/view

Was this discarded entirely? If not, does it make sense to change the way
weave is performed currently to facilitate easy portability to OpenCL? Or
should I just go about porting the existing code?

Best,
Param
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
_______________________________________________
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel

Reply via email to