Ok, now the code compiles! I checked the code and functionally it looks
good. But you need to indent the code according to the BRL-CAD coding
style. e.g. indent the code with 4 spaces and use regular tabs with 8
spaces. This is particularly noticeable in the .cl file.
The style rules are under "CODING STYLE & STANDARDS" in the HACKING file of
BRL-CAD SVN trunk.
On Sun, Mar 20, 2016 at 2:58 AM, Param Hanji <param.catchch...@gmail.com>
wrote:
> Fixed it
>
>
> On Sun, Mar 20, 2016 at 6:47 AM Vasco Alexandre da Silva Costa <
> vasco.co...@gmail.com> wrote:
>
>> It doesn't compile. It seems you forgot a function declaration in a
>> header file:
>>
>> .../brlcad/trunk/src/librt/primitives/primitive_util.c: In function
>> ‘clt_solid_pack’:
>> .../brlcad/trunk/src/librt/primitives/primitive_util.c:648:25: error:
>> implicit declaration of function ‘clt_epa_pack’
>> [-Werror=implicit-function-declaration]
>> case ID_EPA: size = clt_epa_pack(pool, stp); break;
>> ^
>>
>>
>> On Sat, Mar 19, 2016 at 1:03 PM, Param Hanji <param.catchch...@gmail.com>
>> wrote:
>>
>>> Here's the new patch.
>>>
>>>
>>> On Sat, Mar 19, 2016 at 6:32 PM Param Hanji <param.catchch...@gmail.com>
>>> wrote:
>>>
>>>> Oops I did manually edit the patch. I ran diff again and uploaded the
>>>> patch without changes. I also changed the ID used to 19.
>>>>
>>>> On Sat 19 Mar, 2016, 2:51 AM Vasco Alexandre da Silva Costa, <
>>>> vasco.co...@gmail.com> wrote:
>>>>
>>>>> On Fri, Mar 18, 2016 at 9:14 PM, Vasco Alexandre da Silva Costa <
>>>>> vasco.co...@gmail.com> wrote:
>>>>>
>>>>>> On Fri, Mar 18, 2016 at 1:17 PM, Param Hanji <
>>>>>> param.catchch...@gmail.com> wrote:
>>>>>>
>>>>>>> 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.
>>>>>>>
>>>>>>
>>>>>> If you want a brief idea of how the ray-tracing algorithm works you
>>>>>> can look at the relevant Wikipedia page. Wikipedia is a decent resource
>>>>>> for
>>>>>> basic computer graphics knowledge:
>>>>>> https://en.wikipedia.org/wiki/Ray_tracing_%28graphics%29
>>>>>>
>>>>>> For knowing how CSG works, including the boolean ops, that lecture
>>>>>> PDF is a good resource.
>>>>>>
>>>>>>
>>>>>>> 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?
>>>>>>>
>>>>>>
>>>>>> That PDF you linked to is from a pre-proposal which was later changed
>>>>>> with output from Sean and the others. Eventually it was decided that we
>>>>>> would start with a first hit ray tracer and later on work on the boolean
>>>>>> evaluation proper to get working CSG. It just turns out that there was
>>>>>> too
>>>>>> much effort involved in getting the object partitioning and the rendering
>>>>>> pipeline up to speed. Not to mention all those primitives... So I
>>>>>> couldn't
>>>>>> finish work on boolean evaluation before the GSoC period ended. I just
>>>>>> did
>>>>>> some cleanups (e.g. goto removal) on bool.c.
>>>>>>
>>>>>> Which is a good thing too or there would be little left to work on
>>>>>> for this GSoC. :-)
>>>>>>
>>>>>> Just ignore that PDF you got from Google Drive, which is something I
>>>>>> wrote before the GSoC 2015 period started, and read the advice I gave you
>>>>>> about how to tackle bool.c in this maling-list which includes the
>>>>>> knowledge
>>>>>> I have now. I described a possible approach in detail here. I also said
>>>>>> which functions were most important (rt_bool_eval, rt_boolweave,
>>>>>> rt_bool_final)
>>>>>>
>>>>>
>>>>> PS: That project timeline in the PDF was shot down and I had to revise
>>>>> it. There was too much time doing research in it and not enough time
>>>>> actually coding. At the time I was unsure if the current bool weave
>>>>> algorithm BRL-CAD uses would make sense on a GPU or not. It turns out it
>>>>> does make sense but its like I said: you have to remove all the gotos,
>>>>> remove all pointers inside data structures, figure out the bounds of the
>>>>> memory you need a priori, and rethink the algorithm from those dynamic
>>>>> linked lists to a priori bounded arrays.
>>>>>
>>>>> --
>>>>> Vasco Alexandre da Silva Costa
>>>>> PhD in Computer Engineering (Computer Graphics)
>>>>> Instituto Superior Técnico/University of Lisbon, Portugal
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> 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
>>>>>
>>>>
>>>
>>> ------------------------------------------------------------------------------
>>> 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
>>>
>>>
>>
>>
>> --
>> Vasco Alexandre da Silva Costa
>> PhD in Computer Engineering (Computer Graphics)
>> Instituto Superior Técnico/University of Lisbon, Portugal
>>
>> ------------------------------------------------------------------------------
>> 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
>>
>
>
> ------------------------------------------------------------------------------
> 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
>
>
--
Vasco Alexandre da Silva Costa
PhD in Computer Engineering (Computer Graphics)
Instituto Superior Técnico/University of Lisbon, Portugal
------------------------------------------------------------------------------
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