Hi,
I've converted most of the 'rt_brep_shot' code to C and some of it to
OpenCL already.
I wanted to know the best way to implement the *erase* function. I've taken
'hits' as pointer to array (*struct brep_hit *hits;*). While *begin* and
*end* are easily implemented, I'm stuck at direct implementation of *erase*.
Warm Regards,
Sreyansh
On Thu, Jun 21, 2018 at 9:19 PM Vasco Alexandre da Silva Costa <
vasco.co...@gmail.com> wrote:
> Basically the game plan to tackle NURBS I can think of is the one I sent
> to the list on March 20th:
>
> "With regards to BREP support, that should be more complex, since, for
> one, that is coded in C++ and also uses an auxiliary library also in C++.
> In order to run that on OpenCL 1.2 you would likely need to port C++ parts
> of the library to OpenCL/C, including the generic ray-BREP intersection
> code, and the primitive-BREP conversion functions for any primitives you
> need to support.
>
> It should also be possible, as a first step, to basically just make a
> function that serializes the NURBS surfaces, etc, of the BREP form of the
> primitive, pass that serialized form to the GPU, and then port just the
> generic ray-BREP intersection code, rather than doing the whole BREP
> conversion on the OpenCL side as well. i.e. serialize just the 'ON_Brep *'
> of the primitives, then pass that to the OpenCL side which then performs
> the actual intersections.
>
> For example, this is the Ellipsoid->BREP conversion function: (you need to
> serialize and send to OpenCL the output of this)
>
> https://svn.code.sf.net/p/brlcad/code/brlcad/trunk/src/librt/primitives/ell/ell_brep.cpp
>
> It outputs the 'ON_Brep *' for that primitive.
>
> This contains the generic ray-BREP intersection function 'rt_brep_shot':
> (what you need to convert to OpenCL)
>
> https://svn.code.sf.net/p/brlcad/code/brlcad/trunk/src/librt/primitives/brep/brep.cpp
>
> In case you decide to tackle this, it is probably best to first make a
> simplified ANSI C version of 'rt_brep_shot' since that should be easier to
> port to OpenCL/C."
>
>
> On Thu, Jun 21, 2018 at 2:35 PM, Christopher Sean Morrison <brl...@mac.com
> > wrote:
>
>> Sreyansh,
>>
>> rt_brep_prep() and rt_brep_shot() are the entry points for BREP/NURBS ray
>> tracing. They use the openNURBS toolkit for data structures and our
>> libbrep library for surface evaluation. That’s currently a very
>> complicated C/C++ interaction between librt, libbrep, and openNURBS.
>>
>> Vasco may have a better idea, but what may make sense is to extract all
>> of the evaluation functions in openNURBS used by rt_brep_shot() into
>> libbrep. Then you'll only have to concern yourself with OpenCL code in one
>> place and not worry about openNURBS for ray tracing — it would only be used
>> for import/export (reading from and writing to disk).
>>
>> As for examples, openNURBS is the 3DM file format. So that means you can
>> import a 3DM model (e.g., from GrabCAD or Google searches). You could also
>> just use our db/nist examples.
>>
>> Cheers!
>> Sean
>>
>>
>> On Jun 21, 2018, at 4:55 AM, Sreyansh Jain <sreyanshjai...@gmail.com>
>> wrote:
>>
>> Hi,
>>
>> Can you give me a detailed procedure with examples on what exactly to do
>> for BREP support? Right now, I'm converting the rt_brep_shot() function
>> from C++ to C since that would be easy to port to OpenCL/C.
>>
>>
>> On Sat, Jun 16, 2018 at 3:07 AM Sreyansh Jain <sreyanshjai...@gmail.com>
>> wrote:
>>
>>> Also, I've worked it out that after installing Ubuntu 16.04, apart from
>>> the dependencies mentioned in https://brlcad.org/wiki/Compiling, you
>>> need to install package* libgl1-mesa-dev *for opengl support. It's
>>> working for me now in Ubuntu 16.04 as well. Can you check once and update?
>>>
>>> On Sat, Jun 16, 2018 at 2:16 AM Sreyansh Jain <sreyanshjai...@gmail.com>
>>> wrote:
>>>
>>>> Hi,
>>>>
>>>> @Vasco: Thank you for the first evaluation results and feedback. I'm
>>>> done with both the METABALL and PIPE shot routines. I'm unable to do do
>>>> OpenCL kernels for memory size computation for bu_lists/arrays and
>>>> allocation. Any previous example which I can refer to?
>>>>
>>>> @Sean: I deployed the superell patch in my local system, but results
>>>> were not showing up. I'm sure they don't have any unintended changes. I've
>>>> checked my code thoroughly. It should be my local installation problem. Can
>>>> you check and let me know if it's working?
>>>>
>>>> On Fri, Jun 8, 2018 at 1:14 AM Christopher Sean Morrison <
>>>> brl...@mac.com> wrote:
>>>>
>>>>> Sorry to hear your system crashed. Good job backing up your data. We
>>>>> need to get you set up so you are able to directly save changes as you go.
>>>>>
>>>>> Have you made sure your changes still apply to trunk? You should
>>>>> manually inspect it also to make sure it doesn’t have unintended changes.
>>>>> If you have, I may be able to test it later today.
>>>>>
>>>>> Thank you for letting us know!
>>>>>
>>>>> Cheers!
>>>>> Sean
>>>>>
>>>>> On Jun 6, 2018, at 5:54 PM, Sreyansh Jain <sreyanshjai...@gmail.com>
>>>>> wrote:
>>>>>
>>>>> Hey,
>>>>>
>>>>> My system crashed. While I've had the backup of most of the files, the
>>>>> very recent ones got lost. I wanted to inform that my work will be a bit
>>>>> slowed for few days while I'll be working on my friend's laptop and get
>>>>> mine fixed.
>>>>>
>>>>> Also, did you check whether there's problem with my superell patch or
>>>>> did I not properly apply it in my system?
>>>>>
>>>>> Thanks.
>>>>>
>>>>> On Tue, Jun 5, 2018, 9:11 PM Vasco Alexandre da Silva Costa <
>>>>> vasco.co...@gmail.com> wrote:
>>>>>
>>>>>> On Tue, Jun 5, 2018 at 7:29 AM, Sreyansh Jain <
>>>>>> sreyanshjai...@gmail.com> wrote:
>>>>>>
>>>>>>> Okay, let me look into it.
>>>>>>>
>>>>>>> I've started with METABALL primitive, although it is incomplete I
>>>>>>> believe (metaball method). Should I retain both new and old code
>>>>>>> (shootalgo=2 and shootalgo=3) or just one in OpenCL?
>>>>>>>
>>>>>>
>>>>>> For starters just pick one of those. You can start with the default
>>>>>> (new) code.
>>>>>>
>>>>>>
>>>>>>> Also, how do I take input/define *ap->a_onehit *, *rp->r_min* and
>>>>>>> *rp->r_max
>>>>>>> *in OpenCL?
>>>>>>>
>>>>>>
>>>>>> You can start by just assuming that ap->a_onehit is TRUE. If you do
>>>>>> need that in the rendering phase, you can pass it as a parameter to the
>>>>>> respective kernels in
>>>>>> https://svn.code.sf.net/p/brlcad/code/brlcad/trunk/src/librt/primitives/primitive_util.c:clt_frame()
>>>>>> which is called in
>>>>>> https://svn.code.sf.net/p/brlcad/code/brlcad/trunk/src/rt/do.c:clt_run()
>>>>>> .
>>>>>>
>>>>>> As for rp->r_min, and rp->r_max IIRC those are the rmin,rmax bounds
>>>>>> determined in rt_in_rpp() in rt.cl. You can get their values from
>>>>>> bounds->p_min,bounds->p_max in rt.cl:shootray(). You'll have to pass
>>>>>> those to the shot() function and then the respective METABALL shot
>>>>>> function.
>>>>>>
>>>>>> Regards,
>>>>>> -vasc
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> Check out the vibrant tech community on one of the world's most
>>>>>> engaging tech sites, Slashdot.org <http://slashdot.org/>!
>>>>>> http://sdm.link/slashdot
>>>>>> _______________________________________________
>>>>>> BRL-CAD Developer mailing list
>>>>>> brlcad-devel@lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/brlcad-devel
>>>>>>
>>>>>
>> ------------------------------------------------------------------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org!
>> http://sdm.link/slashdot_______________________________________________
>> BRL-CAD Developer mailing list
>> brlcad-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/brlcad-devel
>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> _______________________________________________
>> 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
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> BRL-CAD Developer mailing list
> brlcad-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/brlcad-devel
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
BRL-CAD Developer mailing list
brlcad-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-devel