| 00:01.26 | zero_level | ``Erik I think we will require smth of this kind |
| 00:01.45 | zero_level | #define icv_add(a,b,c,n) do { \ |
| 00:01.46 | zero_level | <PROTECTED> |
| 00:01.46 | zero_level | <PROTECTED> |
| 00:01.46 | zero_level | <PROTECTED> |
| 00:01.46 | zero_level | <PROTECTED> |
| 00:01.48 | zero_level | <PROTECTED> |
| 00:01.50 | zero_level | <PROTECTED> |
| 00:01.53 | zero_level | <PROTECTED> |
| 00:04.09 | zero_level | <PROTECTED> |
| 00:30.50 | ``Erik | if the types are packed instead of named, HADD2() seems to be the macro |
| 00:31.19 | ``Erik | and as much as I adore pointer math, that certain case might be better served with a for loop and 'i' iterator for readability |
| 00:32.58 | ``Erik | (it's a tricky balance, but the real goal is to make it easily readable to a human... excessive abstraction makes it hard to read, excessive conciseness makes it hard to read... :) it's an art!) |
| 00:34.22 | ``Erik | my gut feeling is that a pixel op can be a macro, a full image thing should be a func... |
| 00:41.36 | zero_level | also ``Erik I want to ask an important point here. |
| 00:42.28 | zero_level | Since we are making this library for use in brlcad only do we assume the correctness of the arguments in the function by application programmer or check them every where ? |
| 00:43.08 | zero_level | for eg. check in icv_oper for size of the input images and the fact that they must be equal |
| 02:43.11 | zero_level | ``Erik, brlcad: do we create seperate icv_math.h for these macros ? |
| 02:43.52 | zero_level | in src/libicv |
| 03:00.54 | brlcad | [A |
| 03:08.35 | *** join/#brlcad zero_level__ (~zero_leve@117.205.28.89) | |
| 05:37.57 | Notify | 03BRL-CAD Wiki:Level zero * 5511 /wiki/User:Level_zero/GSOC13/logs: logs 24th July |
| 06:48.42 | Notify | 03BRL-CAD:phoenixyjll * 55833 (brlcad/trunk/include/brep.h brlcad/trunk/src/libbrep/intersect.cpp): Begin to implement curve-curve intersections. More tests and improvements are needed. |
| 07:02.08 | *** join/#brlcad kesha (~kesha@49.249.1.15) | |
| 07:32.50 | Notify | 03BRL-CAD:phoenixyjll * 55834 brlcad/trunk/src/libbrep/intersect.cpp: overlap_tolerance is used now. |
| 07:43.39 | Notify | 03BRL-CAD:phoenixyjll * 55835 brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp: Add the new CCI and CSI functions to brep_debug.cpp. |
| 07:50.44 | Notify | 03BRL-CAD Wiki:Phoenix * 5512 /wiki/User:Phoenix/GSoc2013/Reports: /* Week 2 */ |
| 08:14.54 | *** join/#brlcad kesha (~kesha@49.249.1.15) | |
| 08:41.48 | *** join/#brlcad kesha (~kesha@49.249.1.15) | |
| 08:54.47 | Notify | 03BRL-CAD:phoenixyjll * 55836 brlcad/trunk/src/libbrep/intersect.cpp: Fix a fatal typo. |
| 09:00.43 | Notify | 03BRL-CAD:phoenixyjll * 55837 brlcad/trunk/src/libbrep/intersect.cpp: Add logic in case that one side may fail. |
| 09:37.13 | *** join/#brlcad kesha (~kesha@49.249.1.15) | |
| 09:40.30 | Notify | 03BRL-CAD:phoenixyjll * 55838 brlcad/trunk/src/libbrep/intersect.cpp: Fix an opposite logic, and use pointers for ON_X_EVENTs. |
| 09:52.25 | *** join/#brlcad kesha (~kesha@49.249.1.15) | |
| 09:54.58 | *** join/#brlcad kesha__ (~kesha@49.249.1.15) | |
| 10:02.03 | Notify | 03BRL-CAD:phoenixyjll * 55839 brlcad/trunk/src/librt/primitives/brep/brep_debug.cpp: Fix wrong index... |
| 10:09.15 | *** join/#brlcad kesha__ (~kesha@49.249.191.238) | |
| 10:51.07 | *** join/#brlcad kesha__ (~kesha@49.249.9.138) | |
| 11:31.35 | *** join/#brlcad mpictor_ (~mpictor_@2600:1015:b115:5b2d:0:41:62b8:7a01) | |
| 11:44.55 | *** join/#brlcad vladbogo (~vlad@86.121.102.76) | |
| 12:15.09 | archivist | after reading an email, wonders why object oriented means optimised ! |
| 12:20.29 | *** join/#brlcad vladbogo_ (~vlad@86.124.248.7) | |
| 12:36.05 | *** join/#brlcad vladbogo__ (~vlad@86.121.100.209) | |
| 12:58.31 | *** join/#brlcad vladbogo__ (~vlad@86.121.103.81) | |
| 13:04.08 | *** join/#brlcad vladbogo_ (~vlad@86.121.100.72) | |
| 13:18.48 | brlcad | archivist: you're welcome to point that out ;) |
| 13:22.06 | *** join/#brlcad vladbogo__ (~vlad@86.121.102.222) | |
| 13:40.42 | ``Erik | src/libged/simulate/simcollisionalgo.h:85: error: cannot allocate an object of abstract type 'btRTCollisionAlgorithm' |
| 13:41.45 | ``Erik | kinda looks like a struct blah_s { struct blah_s thing; }; type issue to me, but it's been a long time since I've mucked with that much c++ O.o is there a pattern this should be shifted to (maybe seperate declaration and definition?) |
| 13:55.42 | brlcad | ``Erik: how/where are you just now seeing this? |
| 13:56.17 | vladbogo__ | hi all |
| 13:56.44 | vladbogo | I have just managed to integrate Qt in the brlcad cmake build |
| 13:57.57 | vladbogo | but I have a small problem: i get some warnings in the qt files. In order to do the testing I've disabled the strict compilation but there is any way to disable it just for the Qt? Or should I search for another solution? |
| 13:59.05 | *** join/#brlcad vladbogo_ (~vlad@86.121.102.115) | |
| 14:16.35 | *** join/#brlcad KimK (~Kim__@wsip-184-176-200-171.ks.ks.cox.net) | |
| 14:16.37 | *** join/#brlcad kesha__ (~kesha@49.249.9.138) | |
| 14:18.25 | *** join/#brlcad cstirk (~quassel@96.255.19.39) | |
| 14:18.42 | *** join/#brlcad kesha (~kesha@49.249.9.138) | |
| 14:27.59 | ``Erik | brlcad: been seeing it for a while on a machine that has bullet installed, have just been not building there or disabling bullet... (I thought I'd mentioned it a long time ago, but *shrug* I may be mistaken, or was unclear at the time, or things were busy, or ...) |
| 14:29.48 | ``Erik | the machine is osX.8 with the gcc and clang from the latest xcode, bullet installed from svn (my laptop at home) |
| 14:35.34 | *** join/#brlcad KimK (~Kim__@wsip-184-176-200-171.ks.ks.cox.net) | |
| 14:42.42 | *** join/#brlcad kesha__ (~kesha@49.249.9.138) | |
| 15:52.28 | ``Erik | seems the bullet api changed a bit between 2.80 (mar 2012) and 2.81 (oct 2012) |
| 15:56.45 | brlcad | I think we may have a GCI patch that fixes it |
| 15:56.51 | brlcad | sounds familiar |
| 16:00.33 | zero_level | hi brlcad, ``Erik |
| 16:04.06 | ``Erik | zero_level: extra checks are probably unnecessary but probably wouldn't hurt as we're not at a point of worrying about performance |
| 16:04.40 | ``Erik | zero_level: if you need new 'private' macros/functions, use a local header so we can keep the interface minimal/simple |
| 16:05.01 | ``Erik | (so src/libicv/icv_math.h which does not get installed) |
| 16:06.23 | zero_level | also ``Erik and brlcad have u seen my mail regarding existing use of libicv on brlcad-devel? |
| 16:06.40 | zero_level | do i submit a patch for icv_math.h ? |
| 16:10.28 | ``Erik | zero_level: don't do _icv, just update rt, libged and remrt... rt has functionality to translate the rgb doubles to [0-255] packed char arrays (!), so merely using a function to write the doubles in would be preferable |
| 16:12.19 | ``Erik | yeah, a patch should be fine.. I've having issues with sourceforge, so I've only gotten around to applying one patch and haven't really looked at the others much :/ |
| 16:12.26 | zero_level | I hope they use only Pix format . :-) |
| 16:13.01 | ``Erik | brlcad: I have no edit icon in the top right of the ticket, unless I'm really blind O.o I see an rss icon and a mail 'subscribe' icon, that's it |
| 16:14.18 | ``Erik | zero_level: rt converts the rgb doubles to pix format as it's raytracing, I'm not sure about the others but I'd assume they're all rigged up to use pix as the intermediate format right now... |
| 16:19.35 | *** join/#brlcad vladbogo__ (~vlad@86.121.103.51) | |
| 16:20.34 | *** join/#brlcad witness__ (uid10044@gateway/web/irccloud.com/x-vfaxbrnvcosfmimy) | |
| 16:29.53 | zero_level | brlcad : read your email. |
| 16:34.15 | zero_level | ``Erik,brlcad this kind of representation may have issues while saving and reading. Although colour channel -> representation may become easier. |
| 16:34.41 | zero_level | *colour space -> conversions may become easier |
| 17:00.22 | ``Erik | yeh, converting to something like cmyk for print would be neat down the road |
| 17:07.19 | zero_level | ``Erik what do u suggest should we go with double** data or struct pixel_s *data; |
| 17:13.05 | ``Erik | the struct approach is probably easier to read, and seems to be how OpenEXR approaches it, so probably not a bad ide |
| 17:13.08 | ``Erik | idea |
| 17:13.39 | zero_level | yes const Rgba *pixels |
| 17:13.54 | zero_level | as they implement in openexr ! |
| 17:18.19 | *** join/#brlcad caen23_ (~caen23@92.83.178.201) | |
| 17:30.15 | *** join/#brlcad witness__ (uid10044@gateway/web/irccloud.com/x-nocyhhlktjpqlwpm) | |
| 17:30.16 | *** join/#brlcad vladbogo__ (~vlad@86.121.103.51) | |
| 17:31.18 | *** join/#brlcad mpictor_ (~mpictor_@2600:1015:b10b:81fb:0:45:24f7:b801) | |
| 18:05.14 | *** join/#brlcad vladbogo__ (~vlad@86.124.248.7) | |
| 18:26.05 | *** join/#brlcad vladbogo_ (~vlad@86.121.99.159) | |
| 18:31.12 | brlcad | zero_level: techincal discussions in public please :) |
| 18:33.14 | brlcad | ``Erik: not to ask the obvious, but are you logged into sourceforge (edit icon) |
| 18:35.13 | brlcad | ``Erik: ah, I think I foudn the issue -- allure defaulted all developers to no permissions |
| 18:35.16 | brlcad | should be fixed now |
| 18:41.25 | archivist | brlcad, re buildbot question, I used to run two slaves from the mariadb fork of mysql, interesting experience, specially if the controller of the system tries to up the parallelism of the build and test process |
| 18:46.16 | *** join/#brlcad vladbogo__ (~vlad@86.121.98.183) | |
| 18:58.54 | brlcad | archivist: interesting in what way? |
| 19:00.37 | *** join/#brlcad vladbogo_ (~vlad@86.121.100.180) | |
| 19:01.24 | brlcad | zero_level: so one of the undertones that was not mentioned in my message about separating the channels is that I'd also like to have a per-pixel depth buffer |
| 19:03.03 | brlcad | RGBA is great if all you need to deal with is RGBA data (which is exactly what exr does) |
| 19:04.03 | brlcad | fully generalizing the image construct entails not assuming RGB, not assuming an alpha channel |
| 19:04.11 | brlcad | it's just channels of information |
| 19:04.22 | brlcad | 1 or more, each with some prescribed meaning |
| 19:05.01 | archivist | brlcad, made the PC unusable, was using this box for ubuntu 8.04 and another box for the same OS but with realtime extensions on a cnc machine |
| 19:05.31 | archivist | depending on the phase of the build/test |
| 19:07.16 | archivist | so there are trade offs between devs chasing results and the volunteer running a slave |
| 19:12.18 | *** join/#brlcad vladbogo__ (~vlad@86.121.102.245) | |
| 19:14.00 | brlcad | I wasn't even considering volunteer compute nodes yet |
| 19:14.02 | brlcad | :) |
| 19:26.42 | zero_level | ``Erik, brlcad what i see here is that each of two methods have there +pos and -ves. |
| 19:31.15 | *** join/#brlcad kesha (~kesha@49.249.9.138) | |
| 19:32.04 | brlcad | zero_level: do you think you can itemize/summarie them? |
| 19:36.51 | zero_level | brlcad here u go |
| 19:36.56 | zero_level | Storing them as double** Allows multiple formats for storing and loading images lot of preprocessing has to be done. Three arrays will have to brought. we could use vmath.h Although some operations like pow, scale, divide are still not in vmath thus will have to be implemented. |
| 19:37.33 | zero_level | storing them as RGBA Doesnot allow any other format. Not okay if we data of say BW format, HSV format, or CMYKA format Good for storing images in openexr format Expected to give good performance in processing since only one array will have to be brought to the cache while acessing an array of images. have to design icv_math.h |
| 19:38.19 | zero_level | i dont know if i have left few others |
| 19:39.12 | brlcad | hm, so the intent is not actually to USE vmath, just that the structures are similar and can be indexed directly |
| 19:39.44 | brlcad | vmath would only work for an interleaved array, i.e., a double *rgba |
| 19:40.53 | zero_level | ok cut the vmath thing. it is easier to build those macros. |
| 19:41.39 | brlcad | the performance claim would need to be profiled, I'd be doubtful either solution will be a performance issue |
| 19:41.58 | zero_level | ok |
| 19:42.22 | brlcad | an array of structs may or may not have cache alignment issues, may or may not stride cleanly |
| 19:42.50 | brlcad | an individual array (of either just one channel or interleaved rgba) will stride cleanly |
| 19:44.00 | brlcad | the question for caching is whether the next pixel is likely in cache or not and how many independent cache lines you have |
| 19:44.18 | brlcad | we could go for the best of both worlds |
| 19:44.26 | brlcad | a dynamic number of channels, but one array |
| 19:44.29 | brlcad | interleaved |
| 19:44.43 | brlcad | add another field to indicate how many channels there are |
| 19:45.10 | brlcad | so it could default to num_chan=4 for an RGBA array |
| 19:45.44 | brlcad | (i.e., a double *data; size_t channels;) |
| 19:46.26 | zero_level | then i believe we could use the char and double format by using void* |
| 19:46.39 | zero_level | and having macro like thesee |
| 19:47.21 | zero_level | UCHAR1C, UCHAR3C UCHAR4C and DOUBLE1C, DOUBLE3C ... |
| 19:47.42 | zero_level | this will be very handy i believe |
| 19:48.06 | zero_level | both keeping the old formats intact and looking for new versions |
| 19:50.40 | zero_level | brlcad : what do u say ? |
| 19:51.01 | brlcad | converting void pointers is very problematic |
| 19:51.51 | *** join/#brlcad Kimz (~AndChat32@49.249.9.138) | |
| 19:52.48 | brlcad | that also sounds crazy messy API-wise to deal with implementation-wise for the same aforementioned reasons |
| 19:53.14 | brlcad | something that takes an image needs to handle all the possible encoding types, and that becomes bad juju |
| 19:53.33 | brlcad | handling everything as double would avoid that |
| 19:54.26 | brlcad | a possible compromise might be to have a function that returns data in a specific format, like "double RGBA" to "char RGB", for functions we don't want to rewrite |
| 19:55.45 | brlcad | the only reason for abstracting the type would be memory/performance savings, and we don't yet have profile information to indicate it's a problem |
| 19:55.57 | vladbogo__ | hi all |
| 19:57.58 | vladbogo | brlcad: O have successfully integrated Qt in the brlcad cmake but I have a small problem: I get warnings during compilation in the Qt files. For testing I have disabled strict compilation but there is any way to do this just for Qt? |
| 19:58.55 | brlcad | vladbogo: it entirely depends what the warnings are, whether you can quiet them |
| 19:59.28 | vladbogo | the warnings I get are for float comparison using == |
| 19:59.35 | brlcad | we can turn off warnings for specific files, and do for much of our c++ sources, but sometimes we can quell them too |
| 19:59.49 | brlcad | and are you doing a float comparison? :) |
| 20:00.28 | vladbogo | no:) in the Qt files I've included I suppose there are some float comparisons |
| 20:00.54 | brlcad | just including a header shouldn't involve any comparisons... |
| 20:01.08 | brlcad | using a macro that involves a comparison might |
| 20:19.13 | vladbogo | brlcad: sorry for the delay: it took a while until it compiled. There are some inline functions defined in the header |
| 20:19.32 | brlcad | ahhh |
| 20:20.40 | vladbogo | I am currently not using that particular file but it's included in the cmake build |
| 20:26.15 | vladbogo | also I have another question: to successfully build Qt5 using cmake position independent code must be enabled. Where should I set the flag in order to maintain consistency? At the moment I set the flag in the libdm/CMakeLists |
| 20:32.40 | *** join/#brlcad mpictor_ (~mpictor_@2600:1015:b11f:68a:0:4c:cc98:8e01) | |
| 20:36.43 | *** join/#brlcad mpictor_ (~mpictor_@2600:1015:b11f:68a:0:4c:cc98:8e01) | |
| 20:42.15 | *** join/#brlcad mpictor_ (~mpictor_@2600:1015:b11f:68a:0:4c:cc98:8e01) | |
| 20:45.24 | *** join/#brlcad Kimz (~AndChat32@49.249.9.138) | |
| 20:48.34 | *** join/#brlcad mpictor (~mpictor_@2601:d:b280:9:7c7b:dd80:988b:1fbb) | |
| 21:02.04 | zero_level | also brlcad it is interesting to see that the opencv library stores it is char* imagedata for all its formats |
| 21:03.20 | zero_level | now to use double pointer it points this way douple_p = (double*) img->imagedata; |
| 21:05.49 | zero_level | this does it in interleaved fashion. Also preserves current functionality. And will be helpful for implementing high resolution images. |
| 21:06.39 | zero_level | this will require addition of nchannels, and resolution info. |
| 21:37.36 | ``Erik | zero_level: png stores packed byte arrays... we want the most flexible internal format... the encapsulation is the important part, the internal stuff could all be c++ and expose a nice simple C interface and it'd be all good... internal representation doesn't even have to be RGB, it could be something else as long as it's a superset of the data we want to wrangle |
| 21:37.48 | *** join/#brlcad mpictor_ (~mpictor_@2601:d:b280:9:7c7b:dd80:988b:1fbb) | |
| 21:38.38 | *** join/#brlcad mpictor_ (~mpictor_@2601:d:b280:9:7c7b:dd80:988b:1fbb) | |
| 21:54.43 | zero_level | ok ``Erik |
| 22:20.21 | *** join/#brlcad vladbogo (~vlad@86.121.102.245) | |
| 22:29.11 | *** join/#brlcad mpictor_ (~mpictor_@2601:d:b280:9:7c7b:dd80:988b:1fbb) | |
| 22:52.15 | *** join/#brlcad KimK (~Kim__@wsip-184-176-200-171.ks.ks.cox.net) | |
| 23:01.45 | brlcad | zero_level: you really seem adamant about needing or wanting to store multiple data lengths... at least you keep coming back to that point...but why? |
| 23:02.46 | brlcad | a char* encoding that can be cast to double* just means that it's bytes presumably corresponding to an array of doubles |
| 23:02.51 | *** join/#brlcad vladbogo (~vlad@86.121.102.245) | |
| 23:03.44 | brlcad | that's only useful if that char* might also be other lengths, which I don't yet see a need for until a profile shows that it's an order of magnitude problem |
| 23:04.29 | brlcad | zero_level: but you have raised a couple really good points about performance and at least three data structure options -- I think you should test them |
| 23:04.35 | zero_level | brlcad : i think when we could do that why not do it. In this case the positives are we will get support for current functionalities. |
| 23:05.34 | brlcad | well, I've stated several reasons why not |
| 23:06.04 | brlcad | there are positives and negatives |
| 23:06.08 | zero_level | brlcad: point regarding testing them all is great suggestion. But then that will be a 2month project in itself ;) |
| 23:06.14 | brlcad | the negatives seem huge to me |
| 23:06.26 | brlcad | no no |
| 23:06.57 | brlcad | you should be able to write a test in less than an hour for all three |
| 23:07.26 | brlcad | at best a couple hours to try some things, testing is supposed to be quick and just evaluates a simple concept |
| 23:07.49 | brlcad | if it takes you more than a couple hours, you're probably doing something VERY wrong ;) |
| 23:08.21 | zero_level | ok, you mean a code which is not part of brlcad src. Yes that could be done. |
| 23:09.08 | zero_level | i thought changing the existing usage evertime i implement a new type of data. |
| 23:09.27 | brlcad | I mean a simple test.c file with a main() that tests struct { double r, double g, ... } vs double *rgb; vs double **rgb |
| 23:11.17 | brlcad | zero_level: how much memory do you have? |
| 23:11.27 | zero_level | 6 GB |
| 23:11.33 | zero_level | physical memory |
| 23:11.55 | brlcad | okay, so you should be able to create a test image that's 10000x10000 |
| 23:14.15 | *** join/#brlcad vladbogo_ (~vlad@86.124.248.122) | |
| 23:14.32 | brlcad | allocate it, test time to generate random values, test time to fill a data structure with random values, test time to read all the data structure values from start to finish, test time from finish to start, test time to read half of them randomly, test time to zero the image |
| 23:14.52 | brlcad | do that for all three |
| 23:14.59 | brlcad | if you use libbu, it'll make timing easy |
| 23:15.32 | brlcad | gcc -L/path/to/brlcad/lib -L/path/to/brlcad/include test.c -lbu |
| 23:15.50 | brlcad | er, gcc -L/path/to/brlcad/lib -I/path/to/brlcad/include test.c -lbu |
| 23:22.44 | zero_level | i am using the fact that we store rgb of a pixel and also read rgb of pixel at a time |
| 23:23.32 | zero_level | *a particular pixel at a time. and not the r channel and g channel and.. as a whole |
| 23:24.00 | brlcad | relevance? |
| 23:25.31 | zero_level | because i guess that is how we will need in the operations. that is say pix(244,233) that is (244,233)th pixel and all the channels of that pixel |
| 23:25.50 | brlcad | you misunderstand ... |
| 23:25.56 | brlcad | and so what? |
| 23:26.20 | brlcad | we read/write pixels and that is how we will need in the operations ... and so what? |
| 23:26.57 | brlcad | you're not saying something, and I don't know what that is |
| 23:27.34 | zero_level | i think i got u. see u with the results. :-) ;) |
| 23:27.44 | brlcad | okay |
| 23:27.50 | brlcad | yes, that is the *entire* point of testing |
| 23:28.10 | brlcad | it might matter a lot, it might not matter at all |
| 23:28.26 | brlcad | it might be good for some things and bad for others |
| 23:28.43 | brlcad | that's the point of the 6 test timings |
| 23:28.55 | brlcad | and the three data structures (and any others you want to compare) |
| 23:29.21 | brlcad | keep it as simple and small as possible, so we can look and compare fairly |
| 23:30.05 | brlcad | maybe show me or erik after you get one structure set up so we can make sure you're testing right |
| 23:30.27 | brlcad | bu_gettime() will help with timing |
| 23:30.31 | zero_level | the source code or the resutl ? |
| 23:30.42 | brlcad | source code |
| 23:31.09 | brlcad | this should literally be less than 100 lines of code for one structure, probably less than 50 |
| 23:32.20 | zero_level | i am not sure about that |
| 23:32.38 | zero_level | but do we need the time for random values ? |
| 23:32.47 | zero_level | will it not be same for all of them |