| 00:00.05 | vasc | that's gonna be a problem with all these object types. but i'll think of a way |
| 00:00.17 | Stragus | Fetching as a texture is faster than direct memory access on some hardware, Nvidia Kepler for example |
| 00:00.31 | Stragus | (2.5 times faster on Kepler, no kidding) |
| 00:00.32 | vasc | oh it is? |
| 00:00.38 | vasc | interesting |
| 00:00.55 | vasc | i thought they had changed the L2 cache so it wasn't a problem anymore |
| 00:01.17 | vasc | then again |
| 00:01.25 | vasc | it should be doing streaming loads. |
| 00:01.25 | vasc | hm |
| 00:01.26 | Stragus | Later Kepler with CUDA compute 3.5 has ldg() to fetch read-only data through the texture cache, but compute 3.0 must "manually" use the texture cache |
| 00:01.43 | Stragus | Doesn't matter, texture cache is always faster on CUDA compute 3.0 |
| 00:02.03 | vasc | so i have to use that ldg() syscall? |
| 00:02.12 | Stragus | That only works on compute 3.5 |
| 00:02.20 | Stragus | If you want good performance on 3.0, you need texture fetches |
| 00:02.35 | Stragus | And that's a CUDA thing, no idea if it's available on OpenCL |
| 00:02.46 | vasc | oh right |
| 00:02.51 | vasc | well |
| 00:02.57 | vasc | the opencl texture support is kinda crappy |
| 00:03.12 | Stragus | So... there are many good reasons to try to pack everything in a single big chunk of memory |
| 00:03.17 | Notify | 03BRL-CAD Wiki:Bhollister * 9019 /wiki/MGED_CMD_nmg: /* Example(s) */ |
| 00:03.45 | vasc | i think i know what i'll do |
| 00:03.56 | vasc | i'll first compute the size of each solid in the solid list |
| 00:04.08 | vasc | and then i'll do a prefix sum to figure out the offset of each solid |
| 00:04.16 | Stragus | Sounds reasonable |
| 00:04.49 | vasc | the question is where to store the solid type data |
| 00:05.20 | Stragus | In the same big chunk of memory |
| 00:05.26 | vasc | there are 44 solid types |
| 00:05.28 | vasc | so |
| 00:05.37 | Stragus | So? It's just data, doesn't matter what type it is |
| 00:05.40 | vasc | that's like 6 bits |
| 00:05.50 | vasc | well |
| 00:06.02 | vasc | i could stuff it in the solid ids |
| 00:06.14 | vasc | and then i would have like 18 bits |
| 00:06.20 | vasc | oh no |
| 00:06.22 | vasc | 28 bits |
| 00:06.29 | vasc | 26 |
| 00:06.32 | vasc | geez |
| 00:06.32 | Stragus | scratches his head |
| 00:06.34 | Stragus | Right, 26 :p |
| 00:06.57 | vasc | 67 million solids |
| 00:07.02 | vasc | i think that should be enough |
| 00:08.07 | Notify | 03BRL-CAD Wiki:Bhollister * 9020 /wiki/User:Bhollister/DevLogJuly2015: /* Wed, July 15, 2015 */ |
| 00:08.35 | vasc | if we need more i'll just switch to 64 bits |
| 00:08.48 | vasc | and then we get 58 bits |
| 00:08.53 | Stragus | No, just separate the two values then |
| 00:09.05 | Stragus | GPU hardware is better at managing 32 bits values than 64 bits |
| 00:09.15 | vasc | well |
| 00:09.23 | vasc | i'm supposed to use 64-bit doubles and everything |
| 00:09.29 | Stragus | Ouch. |
| 00:09.31 | vasc | really. its a design requirement |
| 00:09.32 | vasc | yep |
| 00:09.34 | vasc | its baaaad |
| 00:09.53 | Stragus | I understand why they need it, but it's not going to be very fast |
| 00:10.03 | vasc | i'll try to make it a compile option |
| 00:10.05 | Stragus | You could support both |
| 00:10.14 | Stragus | Or a runtime option, better |
| 00:10.20 | bhollister | starseeker: updated design docs. need input on newly proposed subcommands before proceeding with their impl. |
| 00:11.03 | vasc | that's gonna be a lot harder |
| 00:11.05 | vasc | although... |
| 00:11.25 | vasc | the thing about opencl is that you don't run binaries |
| 00:11.37 | vasc | you pass source code to the driver and it compiles it on program load |
| 00:11.53 | Stragus | There you go |
| 00:12.20 | vasc | yeah i can just pass a compiler flag to the graphics driver saying which type i want |
| 00:13.06 | Stragus | Yes well, your big-chunk-of-memory data must be of the right type |
| 00:13.28 | Stragus | In my raytracer, I compile the same files many, many times with different #if stuff |
| 00:13.39 | Stragus | To produce a bunch of pipelines optimized for different needs |
| 00:14.17 | vasc | AoS it is |
| 00:14.43 | vasc | SoA is just too much of a problem with all these data types |
| 00:14.50 | Stragus | o.O |
| 00:15.01 | Stragus | Come on, you are going to absolutely destroy performance |
| 00:15.06 | vasc | not really |
| 00:15.13 | Stragus | Yes really |
| 00:15.17 | vasc | its never going to be good |
| 00:15.29 | vasc | because you can have different solid types |
| 00:15.32 | Stragus | It's never going to be good, so it can be much worse and it doesn't matter? :p |
| 00:15.50 | Stragus | That's not a problem if the rays are coherent, they will hit the same solids and be processed simultaneously |
| 00:15.51 | vasc | fine. tell me how to implement SoA with different solid types |
| 00:16.12 | vasc | spheres, ellipsoids, torus, triangle meshes, etc |
| 00:16.13 | Stragus | You can even be clever with ballot() call for the wrap to "vote" on the best execution path |
| 00:16.15 | vasc | all in the same cell |
| 00:16.34 | Stragus | Sure, so you make sure all rays process the same solids coherently, simultaneously |
| 00:16.41 | vasc | ah |
| 00:17.12 | vasc | i can leave that to the next guy |
| 00:17.18 | vasc | :-) |
| 00:17.19 | vasc | well |
| 00:17.24 | Stragus | That next guy will have to rewrite your code to fix this! :) |
| 00:17.29 | vasc | yep |
| 00:17.42 | vasc | well |
| 00:18.08 | vasc | the thing is last time i read about it the coherent grid raytracing isn't faster than the non-coherent one on a gpu |
| 00:18.23 | vasc | so... |
| 00:18.30 | Stragus | The next guy will have to rewrite everything, all the data layout *and* the code, plus wrap coherency considerations and so on |
| 00:18.36 | vasc | nah |
| 00:18.37 | Stragus | Whatever you read, it is totally wrong |
| 00:18.43 | Stragus | wrote a CUDA raytracer |
| 00:18.46 | vasc | as long as its cache coherent its ok |
| 00:19.12 | vasc | if the data is packed decently enough |
| 00:19.16 | vasc | oh now i remembered |
| 00:19.21 | vasc | i'm using spatial subdivision |
| 00:19.28 | vasc | i'll have solids in more than one cell |
| 00:19.30 | vasc | hmmmm |
| 00:20.18 | vasc | so i can only do a coarse sort and hope its coherent |
| 00:20.18 | Stragus | Coherent raytracing is like 10x faster than incoherent rays |
| 00:20.30 | vasc | or i duplicate data and use more mem |
| 00:20.39 | vasc | not on a gpu |
| 00:20.42 | Stragus | Yes, on a GPU |
| 00:20.45 | vasc | at least its what people told me |
| 00:21.03 | Stragus | Seriously, I wrote a CUDA raytracer, it was presented at a Nvidia conference, 1 billion rays per second on decent geometry |
| 00:21.11 | vasc | i know |
| 00:21.20 | Stragus | I have benchmarked all Nvidia hardware a lot |
| 00:21.22 | vasc | i talked with some UT Austin guys in 2009 and they told me that |
| 00:22.06 | vasc | its the SIMT model |
| 00:22.10 | vasc | i guess |
| 00:22.20 | vasc | all the threads will bang the same data anyway |
| 00:22.28 | Stragus | AMD hardware is similar, except a little less flexible than Nvidia's |
| 00:23.01 | Stragus | What you want is all rays to process the same solid simultaneously if they are going to hit it |
| 00:23.11 | vasc | but they already do that more or less |
| 00:23.17 | vasc | or will anyway |
| 00:23.38 | vasc | if the traversal space is similar |
| 00:23.59 | Stragus | Simutaleously? Not one ray processing it first because it reached an intersected cell first, followed by 25 more rays, then some 5 rays, and finally a last ray? |
| 00:24.03 | vasc | if it isn't the coherent grid thing doesn't help a lot either |
| 00:24.05 | Stragus | Your grid can break apart the bundle |
| 00:24.14 | vasc | yeah that's what will happen |
| 00:24.19 | vasc | well |
| 00:24.30 | vasc | later. much later. |
| 00:24.33 | vasc | that's v2.0 stuff. |
| 00:24.43 | Stragus | Okay. But just plan ahead for this |
| 00:25.06 | vasc | its like i said i think a bvh would be better |
| 00:25.18 | vasc | so thinking about coherent grids probably a waste of time |
| 00:25.51 | Stragus | Coherent grids can be faster if the geometry or objects are somehow uniformly distributed... which is not a common case |
| 00:25.54 | vasc | lets just focus on eliminating dynamic memory allocations and gotos, and crap like that for now |
| 00:25.59 | Stragus | :) Okay |
| 00:26.17 | vasc | if its really simple it can be changed later |
| 00:26.33 | vasc | right now this thing is a nightmare to port to opencl |
| 00:26.57 | Stragus | It's certainly fine to start with something quick and dirty, but just plan ahead so the transition to something better will go smoothly |
| 00:27.09 | vasc | yep |
| 00:27.22 | vasc | unfortunately the quick and dirty is still taking a bloody long time |
| 00:27.30 | vasc | because there's a looooot of things to do |
| 00:27.33 | Stragus | :) Yes, I can imagine that |
| 00:28.50 | vasc | the csg boolean thing |
| 00:28.57 | vasc | simplifying that will be interesting... |
| 00:29.01 | vasc | a headache |
| 00:29.15 | vasc | last time i looked at it the code was branching like hell with gotos everywhere |
| 00:30.12 | Stragus | I assume you know it's important to keep the flow as synchroneous as possible on GPU |
| 00:30.24 | Stragus | A lot more computations is better than branches |
| 00:30.34 | vasc | yeah |
| 00:30.42 | vasc | the question is how to do that to rt_boolweave |
| 00:31.30 | Stragus | 's eyes hurt |
| 00:31.40 | Stragus | I sympathize. |
| 00:33.00 | vasc | figuring out a way without dynamic memory allocation would be a start |
| 00:33.26 | vasc | that thing is all branches and dynamic double linked lists |
| 00:33.56 | vasc | and its called on the buffered dynamic linked list of multi-hit intersection for every single cell we intersect |
| 00:35.22 | Stragus | You should clarify with brlcad if you must somehow buffer all hits and return them to CPU code, or if a GPU inlined callback would be sufficient |
| 00:36.07 | Stragus | The first one is messy and slow, and that's a lot of data to constantly copy from GPU to CPU |
| 00:36.28 | vasc | yes |
| 00:36.36 | vasc | well they prefer to keep 100% compat with everything |
| 00:36.51 | vasc | so my guess its that they prefer the first option but its gonna be bad on the long run |
| 00:37.07 | Stragus | They'll need new code to efficiently use a GPU raytracer |
| 00:37.34 | vasc | i thought first i could render on the gpu and cpu and somehow merge results of the whole render |
| 00:37.42 | vasc | but with this multi-hit thing its more tricky |
| 00:38.12 | vasc | like render the gpu accel solids on the gpu and the ones that aren't ported to the gpu would be rendered on the cpu |
| 00:38.28 | vasc | if it was single-hit it would be easy |
| 00:38.29 | Stragus | That doesn't sound good |
| 00:39.16 | vasc | you would just need the depth, object, material, at each pixel |
| 00:39.25 | vasc | on cpu and gpu |
| 00:39.32 | vasc | and then you figured out which was in front |
| 00:39.37 | vasc | for each pixel |
| 00:40.44 | vasc | its not like i can call cpu code inside the gpu |
| 00:40.49 | vasc | unless i pause it all the time |
| 00:40.50 | vasc | hmm |
| 00:41.01 | Stragus | That sounds like much more trouble than just porting all solid types |
| 00:41.14 | vasc | there's like 44 |
| 00:41.15 | vasc | of them |
| 00:41.22 | vasc | i'm gonna port like i dunno 8 |
| 00:41.56 | Stragus | Many of them will be very similar |
| 00:42.22 | vasc | yeah but there's no time before gsoc ends |
| 00:43.16 | Stragus | I would port 8 and leave it to someone else to complete |
| 00:43.23 | Stragus | That cpu-gpu mix is really asking for trouble |
| 00:43.27 | vasc | i also think its the best option yes |
| 00:44.01 | vasc | i'll need to talk about it again with sean |
| 00:44.11 | Stragus | nods |
| 00:46.10 | vasc | thinking about it some more a bvh would simplify some things |
| 00:46.36 | vasc | if i knew the leaves all had the same max number of objects i could still buffer the hits on each cell without using dynamic memory allocation |
| 00:47.24 | Stragus | Why the leaves? Wouldn't it be the maximum count of intersections in the whole scene? |
| 00:48.38 | vasc | i won't claim that i get how the csg stuff works well |
| 00:48.49 | Stragus | I would probably do something like... reserve 8 hits per ray, and each ray can "request" additional chunks of 8 hits when running out of hit space, through some atomics in a giant shared buffer for all hits |
| 00:48.50 | vasc | but it seems to call rt_booleanweave for every cell it intersects |
| 00:49.12 | Stragus | ... giant shared buffer for all rays* |
| 00:49.38 | vasc | but yeah it probably just does that |
| 00:50.24 | vasc | can't you incrementally do the csg? |
| 00:50.37 | vasc | probably need to think this over |
| 00:50.42 | Stragus | You probably know more about CSG than I do :/ |
| 00:51.16 | vasc | i don't know that much |
| 00:51.28 | vasc | i only know its boolean ops in ray tracing |
| 00:51.43 | vasc | i've seen brute force csg ray tracers |
| 00:51.45 | vasc | that's about it |
| 00:51.49 | vasc | but this one ain't brute force |
| 00:54.06 | vasc | at the time i started this sean suggested thinking about other similar algorithms to see if i could do this differently |
| 01:00.16 | Stragus | That sounds like good advice to me |
| 01:00.34 | Stragus | The algorithm's design is probably 30 years old |
| 01:03.43 | Notify | 03BRL-CAD Wiki:Terry.e.wen * 9021 /wiki/User:Terry.e.wen/log: |
| 01:09.05 | *** join/#brlcad vasc__ (~vasc@bl7-122-190.dsl.telepac.pt) | |
| 01:21.48 | vasc__ | night |
| 02:59.44 | Notify | 03BRL-CAD:starseeker * 65655 brlcad/trunk/src/libged/nmg_cmface.c: Apply patch #390 from Brad Hollister, removing unused tmp variable. |
| 03:05.39 | Notify | 03BRL-CAD:starseeker * 65656 brlcad/trunk/src/libged/nmg_cmface.c: Apply patch #390 version 2 from Brad Hollister |
| 04:33.06 | *** join/#brlcad infobot (ibot@69-58-76-73.ut.vivintwireless.net) | |
| 04:33.06 | *** topic/#brlcad is BRL-CAD || http://brlcad.org || logs: http://ibot.rikers.org/%23brlcad/ || Congrats to all GCI 2014 winners Peter & Marc! || Congratulations to our 12 GSoC students! || Don't ask if someone is here, just ask your questions and wait for a response. ;-) | |
| 05:08.53 | *** join/#brlcad gurwinder (3b599fa2@gateway/web/freenode/ip.59.89.159.162) | |
| 05:16.13 | *** join/#brlcad milinda (~milinda@112.134.13.69) | |
| 05:46.36 | *** join/#brlcad milinda (~milinda@124.43.140.87) | |
| 06:05.20 | *** join/#brlcad milinda (~milinda@124.43.181.242) | |
| 06:47.31 | *** join/#brlcad milinda (~milinda@124.43.92.201) | |
| 07:05.15 | *** join/#brlcad milinda (~milinda@112.135.69.88) | |
| 07:36.11 | *** join/#brlcad milinda (~milinda@112.134.225.229) | |
| 07:37.00 | *** join/#brlcad kintel (~kintel@unaffiliated/kintel) | |
| 08:33.36 | Notify | 03BRL-CAD Wiki:MeShubham99 * 9022 /wiki/User:MeShubham99/GSoc15/log_developmen: /* Week 8 */ |
| 09:15.38 | *** join/#brlcad tess (~tess@122.173.205.133) | |
| 10:04.49 | *** join/#brlcad infobot (ibot@69-58-76-73.ut.vivintwireless.net) | |
| 10:04.49 | *** topic/#brlcad is BRL-CAD || http://brlcad.org || logs: http://ibot.rikers.org/%23brlcad/ || Congrats to all GCI 2014 winners Peter & Marc! || Congratulations to our 12 GSoC students! || Don't ask if someone is here, just ask your questions and wait for a response. ;-) | |
| 10:12.52 | *** join/#brlcad gurwinder (75c7660a@gateway/web/freenode/ip.117.199.102.10) | |
| 10:31.54 | *** join/#brlcad tess (~tess@122.173.205.133) | |
| 11:20.01 | *** join/#brlcad milinda (~milinda@112.134.236.34) | |
| 11:28.20 | *** join/#brlcad milinda (~milinda@112.134.236.34) | |
| 11:53.40 | *** join/#brlcad Stragus (~alexis@modemcable090.29-19-135.mc.videotron.ca) | |
| 12:44.23 | *** join/#brlcad teepee-- (bc5c2134@gateway/web/freenode/ip.188.92.33.52) | |
| 12:49.15 | Notify | 03BRL-CAD:ejno * 65657 brlcad/trunk/src/libgcv/conv/fastgen4/fastgen4_write.cpp: remove unnecessary try block |
| 13:53.55 | *** join/#brlcad milinda (~milinda@124.43.66.153) | |
| 14:40.25 | Notify | 03BRL-CAD:brlcad * 65658 brlcad/trunk/TODO: some more thoughts on extending libbu's parallelism functionality |
| 15:00.03 | *** join/#brlcad konrado (~konro@154.70.99.62) | |
| 15:03.28 | *** join/#brlcad tess_ (~tess@122.173.205.133) | |
| 15:23.56 | Notify | 03BRL-CAD Wiki:MeShubham99 * 9023 /wiki/User:MeShubham99/GSoc15/log_developmen: /* Week 8 */ |
| 15:25.39 | *** join/#brlcad milinda (~milinda@124.43.185.227) | |
| 16:23.06 | *** join/#brlcad milinda (~milinda@124.43.185.227) | |
| 16:54.58 | *** join/#brlcad sofat (~sofat@202.164.45.204) | |
| 17:02.54 | brlcad | Stragus: vasc's problem (regarding solving all problems at once) is that he has a very strict near-term deadline, and has to have made some useful progress by the end .. AND then pass that work on to someone else to continue |
| 17:03.12 | brlcad | so he doesn't really have that luxury |
| 17:11.16 | Stragus | Ah right, I'm still not too familiar with the whole GSoC concept |
| 17:12.46 | Stragus | By the way, I assume you know that if someone is going to port the raytracer to OpenCL, you really need to change the interface and adapt all the code using the raytracer... |
| 17:12.59 | Stragus | It's really not designed for parallel hardware |
| 17:21.33 | brlcad | Stragus: also the opencl implementat that calls a kernel on each solid intersection that you seemed surprised by had absolutely nothing to do with performance (it was only a validation of the calculations being correct for a specific primitive converted, full stop) |
| 17:22.23 | Stragus | Right, makes sense |
| 17:22.58 | milinda | brlcad: Can you please tell me what exactly poly2tri_CDT does ? I mean as a summary ? |
| 17:27.17 | brlcad | "20:35 < Stragus> You should clarify with brlcad if you must somehow buffer all hits and return them to CPU code, or if a GPU inlined callback would be sufficient" <-- well duh, we want both :) |
| 17:27.28 | brlcad | is still reading backlog fwiw, not current discussion |
| 17:28.58 | *** join/#brlcad vasc (~VASC@bl7-122-190.dsl.telepac.pt) | |
| 17:30.27 | brlcad | all caught up now |
| 17:31.17 | brlcad | Stragus: yep, definitely know that the interface will need to eventually be adapted -- we'll also need a (slow) compatible interface first though so we can validate the computations |
| 17:31.43 | brlcad | but the goal indeed is to change the method so that analysis applications are also acceleratable and getting updates via callback or in batches or both |
| 17:33.16 | Notify | 03BRL-CAD Wiki:MilindaFernando * 9024 /wiki/User:MilindaFernando/gsoc2015_devlog: /* STEP Viewer Project Development Log */ |
| 17:33.24 | brlcad | the purpose of the single kernel per solid intersection was indeed just to validate correct calculations, and indeed the first conversion was demonstrably different (i.e., wrong) due to precision/tolerance mismatches |
| 17:34.02 | brlcad | milinda: hmmm |
| 17:34.24 | brlcad | looks |
| 17:35.38 | milinda | brlcad: can we please chat I need several things to figure out :) |
| 17:35.53 | Stragus | brlcad: Right. I assume you know that any OpenCL "callback" would have to be built in the same "kernel" (sorry, CUDA speak) as the OpenCL raytracing code |
| 17:36.04 | brlcad | it's doing constrained delaunay triangulation using the poly2tri library |
| 17:36.19 | brlcad | basically, turning the nurbs surface into triangles |
| 17:36.35 | Stragus | In my CUDA raytracer, the user would provide a "callback" and it would build the whole raytracing pipeline with that function inlined directly deep in the code |
| 17:37.13 | brlcad | Stragus: I figured something like that would be necessary for optimal performance |
| 17:37.33 | brlcad | given how the projects are so varied and disjoint, that tight coupling might not be practical |
| 17:37.43 | Stragus | Well, it's not just optimal performance: the other way involves buffering an arbitrary number of hits per ray, and that's really messy |
| 17:37.44 | brlcad | in which case we'll probably pass back bundles of results |
| 17:38.00 | brlcad | which they can process however they like, hopefully coherenty |
| 17:39.03 | milinda | brlcad: Assume we have surface triangles for an geometry. But How can we generate a solid from them ? I mean can you explain me how surface triangles would help to visualize the geometry as a solid in Open GL? |
| 17:39.05 | Stragus | I would suggest designing the OpenCL code so that any code can build custom pipelines with a provided hit-handling callback |
| 17:39.23 | Stragus | Other code could rely on a default pipeline built with hit-handling code that somehow buffers up everything |
| 17:39.41 | milinda | brlcad: Using surface triangles what we get a mesh for the geometry. Is this correct ? |
| 17:39.42 | brlcad | there's more than a dozen external groups that integrate librt for ray intersections for various analytic purposes .. there's no way they will all rework their interface so some will be slow .. some will likely make full accommodations, and others partial |
| 17:39.50 | brlcad | but remember, some of them aren't even in C |
| 17:40.43 | brlcad | some callers are coming through java bindings, some through fortran |
| 17:41.36 | brlcad | milinda: I'm not sure I understand your terminology |
| 17:42.01 | brlcad | milinda: you don't need to generate a solid -- you need triangles you can pass to opengl |
| 17:42.11 | brlcad | getting triangles for each surface does exactly that |
| 17:42.51 | milinda | brlcad: so the final visualized shape would be a triangular mesh of the shape. ? |
| 17:43.08 | brlcad | yes |
| 17:43.36 | milinda | brlcad: are we going to stop with that no solid geometry in the viewer ? |
| 17:44.01 | brlcad | milinda: what does "solid geometry in the viewer" mean to you? |
| 17:44.08 | brlcad | because that terminology is not right |
| 17:44.14 | milinda | brlcad: I mean color shaded shape ? |
| 17:44.52 | brlcad | you color and shade the triangles in opengl |
| 17:45.00 | brlcad | those triangles make a shape |
| 17:46.18 | brlcad | ih8sum3r: I did not, the fibers component failed to compile |
| 17:46.20 | milinda | brlcad: so all the cad programs which does render the geometry as a "visually solid" does it by getting the triangular mesh and color triangles and rt it? |
| 17:46.57 | brlcad | ih8sum3r: looks like relatively simple portability errors, but "npm install fibers" worked |
| 17:47.02 | brlcad | it installed 1.0.6 |
| 17:47.34 | brlcad | milinda: they get a trinagular mesh, color the triangles, and send it to opengl |
| 17:47.53 | brlcad | milinda: do you have an install of brl-cad handy? |
| 17:47.56 | ih8sum3r | brlcad: Same error on my side. Okay I will try with 1.0.6 version. |
| 17:48.11 | vasc | howdy |
| 17:49.38 | brlcad | hi vasc |
| 17:49.43 | brlcad | read your nice long convo yesterday |
| 17:49.51 | brlcad | good thoughts all around |
| 17:50.12 | vasc | i still need to do a bunch of things before i start working on the boolean weaving though |
| 17:50.25 | brlcad | the main limiting factor here is time and wanting something incrementally useful *before* gsoc is over (it's already crazy risky enough) |
| 17:50.34 | milinda | brlcad: No Should I install it ? |
| 17:51.18 | brlcad | milinda: if you going to be calling into brl-cad libs, aren't having those libs installed required? :) |
| 17:52.20 | milinda | brlcad: yes I need to install them :) |
| 17:53.28 | milinda | brlcad: So as the next step what should I do is a write a function which takes a ON_Brep structure and browse all the surface triangles ? Correct ? |
| 17:54.04 | milinda | brlcad: then we can get a tringluar mesh at the viewer. :) |
| 17:54.42 | brlcad | well once you do that, you can find a simple 3dm model online (e.g., from grabcad.com), convert it with "3dm-g", then open that .g file with our "mged" application, and run commands that let you visualize ("tops" will tell you names to use, and "draw -m1 somename" will display that nurbs as shaded triangles) |
| 17:55.07 | brlcad | milinda: an ON_Brep intrinsically does not have surface triangles |
| 17:55.10 | brlcad | they have to be calculated |
| 17:55.46 | brlcad | that is exactly what we do (in rt_brep_plot_poly and the CDT library calls) |
| 17:56.41 | milinda | brlcad: you mean I should Install the libraries and call them instead of writing new code to do that. ? |
| 17:57.50 | brlcad | milinda: I think it took one of our devs about 4-6 months to calculate the triangles in a useful manner |
| 17:58.31 | brlcad | it's easily a gsoc project all of it's own just to do that... |
| 17:58.53 | brlcad | so yeah, that's why in your original proposal, it was suggested that you leverage our work |
| 17:59.17 | brlcad | now whether you call a library or extract the code of signficance doesn't really matter (so long as attribution and legalities are correct) |
| 18:00.30 | vasc | so you just sample a bunch of points on the surface and triangulate that? |
| 18:02.46 | ih8sum3r | brlcad: I guess fibers are not installed properly, I'm getting this error : Error: Cannot find module 'fibers' |
| 18:14.19 | *** join/#brlcad milinda (~milinda@124.43.95.17) | |
| 18:14.24 | brlcad | vasc: for triangulation, that's all you can do |
| 18:14.43 | brlcad | there are other modes of visualization, like just rendering the surface edge splines |
| 18:15.18 | brlcad | but the surface itself doesn't have anything intrinsic that can be sent to opengl, you have to evaluate surface polylines, points, triangles, etc |
| 18:17.34 | brlcad | an older slower method involved converting the nurbs surfaces into a set of bezier patches, and triangulating those patches for visualization |
| 18:17.48 | brlcad | some CAD systems still use that indirect method |
| 18:18.59 | brlcad | triangulating bezier patches is also still just sampling points on the surface so you can make a mesh, it's just a much simpler evaluation than directly evaluating the complex nurbs surface (high high order equations) |
| 18:19.19 | vasc | i see. it seemed kinda of brute force so i thought that someone had come up with something better. |
| 18:23.15 | brlcad | polylines is arguably better, but opengl doesn't have support for shaded rendering of polyline strips |
| 18:23.36 | brlcad | GLU has support for rendering NURBS, but it basically does the old bezier patch method |
| 18:24.26 | brlcad | you can do adaptive sampling of the NURBS, and that's about as good as it gets for sending something to opengl |
| 18:25.04 | vasc | i'm gonna have a masters student working on NURBS next year so i was kind of interest |
| 18:25.05 | vasc | ed |
| 18:29.32 | vasc | i keep hearing that the latest opengl has tesselation support so i thought there would be some better way of doing it or something |
| 18:38.12 | starseeker | growls at sourceforge... |
| 18:38.23 | vasc | switch to github then |
| 18:38.54 | starseeker | brlcad-as-git-checkout is.... rather large. we have a lot of history |
| 18:39.21 | vasc | more than the linux kernel? |
| 18:39.26 | vasc | oh right |
| 18:39.28 | vasc | 1970s |
| 18:39.41 | vasc | how far back does the repo go anyway? |
| 18:39.46 | starseeker | 1983 |
| 18:40.39 | starseeker | I've done a git conversion of our svn repo (even have the process quasi-automated) and it clocks in at 1.6 gigs |
| 18:40.40 | vasc | even old than gcc then |
| 18:41.09 | vasc | oh i see |
| 18:41.18 | vasc | github says they want repos to be below 1GB |
| 18:41.54 | starseeker | http://blog.openhub.net/2012/10/oldies-but-goodies-seven-projects-still-rocking-open-source/ |
| 18:42.30 | Stragus | vasc, OpenGL has "tesselation shaders", and nobody uses them, just like geometry shaders |
| 18:42.45 | ``Erik | http://brlcad.org/brlcad.git is daily conversion/mirror |
| 18:43.01 | Stragus | It's too slow and limited. Compute shaders replace all of this mess |
| 18:43.41 | starseeker | we could probably do some tricks like one project per src/other folder to spread the pain out |
| 18:44.45 | starseeker | hasn't tried building our history without src/other and misc/tools, but probably smaller |
| 18:45.19 | starseeker | is now curious... |
| 18:45.58 | vasc | oh right the dependencies |
| 18:46.27 | vasc | those are probably pretty big since have tcl/tk in there |
| 18:46.46 | starseeker | and a subset of boost, at some point in the history |
| 18:50.33 | starseeker | tries a "quick and dirty" approach... to do this right would require some care... |
| 18:54.31 | vasc | https://rtyley.github.io/bfg-repo-cleaner/ |
| 18:55.48 | vasc | maybe that will help |
| 18:56.26 | starseeker | vasc: the problem is stripping out large commits from older history would result in broken checkouts for those revisions |
| 18:56.40 | starseeker | it's occasionally necessary to test older revisions |
| 18:57.09 | starseeker | that would be good for checked in garbage, but when the large bits are actually *needed* we're worse off... |
| 18:58.37 | starseeker | might conceivably be acceptable for things that never worked right to begin with, but even that's a bit dicy... |
| 18:59.22 | vasc | so you need this one http://git-scm.com/docs/git-filter-branch |
| 19:00.57 | starseeker | probably, plus a *lot* of detailed history study to see what is in, what's out and what things look like for various options. Probably a lot of testing as well |
| 19:01.12 | vasc | another choice i guess is to break the repo at some point in time and archive that keeping on the repo only a shortened history |
| 19:01.25 | starseeker | don't let brlcad hear you suggest that ;-) |
| 19:02.13 | vasc | self-hosting then :-) |
| 19:02.19 | starseeker | heh |
| 19:02.20 | vasc | bbl |
| 19:03.11 | *** join/#brlcad milinda (~milinda@124.43.75.66) | |
| 19:05.59 | starseeker | bah - filtering out other only saved 150 megs |
| 19:06.07 | starseeker | wonders if he did something wrong... |
| 19:07.23 | starseeker | looks right... |
| 19:07.26 | starseeker | huh |
| 19:08.18 | starseeker | wonders if there are some commit size analysis tools available somewhere... |
| 19:08.48 | starseeker | and... of course https://code.google.com/p/gitinspector/ |
| 19:11.51 | starseeker | ah http://serverfault.com/questions/36784/search-for-large-checkins-in-a-subversion-repository |
| 19:15.54 | brlcad | yeah, I'm not at all keen on stripping or contorting the history for the sake of the tool/repo/size/whatever |
| 19:18.03 | starseeker | suspects BRL-CAD on github is probably a practical no-go |
| 19:18.43 | brlcad | I'm certainly not opposed, but I wouldn't switch on a whim |
| 19:19.14 | starseeker | we'd basically have to explain the situation to them and get an OK, and even then they may not be too keen on 2 gig forks... |
| 19:20.45 | brlcad | I would, but I'd doubt size would be a problem |
| 19:21.00 | brlcad | it's real history and there's no large files clogging it up |
| 19:21.03 | brlcad | just a ton of history |
| 19:21.29 | starseeker | couple of our hacking book images would be a problem |
| 19:22.04 | brlcad | large ==> >100MB |
| 19:22.34 | brlcad | I don't think we have much at >10MB |
| 19:22.39 | starseeker | ah, OK |
| 19:22.50 | starseeker | thought a couple of the high quality renders were bigger |
| 19:23.04 | starseeker | just my not-so-hot internet connection |
| 19:23.54 | *** join/#brlcad milinda (~milinda@124.43.202.141) | |
| 19:23.55 | brlcad | they got checked in? |
| 19:24.17 | starseeker | yeah - we added the hacking book to the doc build (or at least I thought we did) |
| 19:25.47 | brlcad | I know the book was added, but I didn't think the images were that big |
| 19:25.52 | starseeker | they aren't |
| 19:25.58 | brlcad | the biggest was probably teapot at 4k x 4k but in png format |
| 19:26.20 | starseeker | biggest is 12M |
| 19:26.27 | starseeker | sphflace2_cc |
| 19:26.47 | starseeker | teh M1A1 is second at 8, rest are below 4 |
| 19:27.06 | starseeker | s/teh/the |
| 19:29.41 | brlcad | okay, makes sense |
| 19:30.06 | starseeker | ah, cool - that svn size-of-revision script looks like it worked |
| 19:30.16 | brlcad | that sounds entirely reasonable to me |
| 19:35.02 | starseeker | interesting - if I'm reading this right, even the largest merges are around 90 megs |
| 19:35.09 | brlcad | looks like our biggest commit is r31506 |
| 19:35.16 | brlcad | looks like a commit that added ogre |
| 19:35.30 | Stragus | Ogre? The 3D engine? |
| 19:35.37 | starseeker | is that bigger than r23577? |
| 19:35.47 | brlcad | Stragus: yep |
| 19:36.02 | Stragus | That's a weird dependency to have |
| 19:36.21 | starseeker | Stragus: we're a CAD system - why's a 3d engine a weird dep? |
| 19:36.41 | brlcad | Stragus: experimental GUI work looking at using it for the CAD visuals |
| 19:37.21 | Stragus | Because a CAD system doesn't need a gaming-oriented 3D engine |
| 19:38.23 | starseeker | Stragus: fwiw, we're also checking out OpenSceneGraph |
| 19:38.31 | Stragus | once also wrote an OpenGL-rendered GUI, but creating the widgets became tiresome... http://www.rayforce.net/glui000.png |
| 19:38.51 | brlcad | it's not really any more gaming-oriented than openscenegraph, OSG, VTK, and a handful of others |
| 19:39.46 | starseeker | Stragus: I've had half an eye on this for a long while hoping it would reach a usable point: https://github.com/zhanggyb/BlendInt |
| 19:41.07 | Stragus | I haven't heard of that one |
| 19:41.08 | brlcad | an engine is desirable for some pretty basic aspects like asset management and scene graph management |
| 19:41.37 | brlcad | writing the code to do that well is really a distraction to our goals, especially when they do it more than adequate for our needs |
| 19:41.52 | Stragus | My GL gui was quite usable, just still missing a bunch of widgets (that screenshot is also old) |
| 19:42.20 | *** join/#brlcad milinda (~milinda@124.43.188.93) | |
| 19:42.31 | starseeker | Stragus: we've been looking at using Qt-in-GL, sorta like stellarium |
| 19:44.01 | starseeker | there are actually some reasonably impressive demos with qml, but IIRC the primary widgets remain something of a challenge |
| 19:44.02 | brlcad | for GUI, I have many in depth strong opinions and am quite picky about usability characteristics -- at least for our 3rd generation interface |
| 19:44.38 | starseeker | that's why starseeker considers qged 2.5gen ;-) |
| 19:45.36 | *** join/#brlcad gurwinder (3b5b7739@gateway/web/freenode/ip.59.91.119.57) | |
| 19:45.44 | brlcad | why not embrace it? |
| 19:46.11 | brlcad | what's the .5 missing? |
| 19:46.41 | starseeker | satisfying the in depth strong opinions and usability characteristics ;-) |
| 19:47.02 | starseeker | would be content with cleaner-archer-not-needing-Tk as a start |
| 19:47.28 | Stragus | has this habit of always writing everything from scratch, no dependencies |
| 19:48.14 | brlcad | Stragus: yeah, I get really pissed off at interfaces like that from a usability perspective... I admire the work, but the usability is usually just .. terrible |
| 19:48.22 | Notify | 03BRL-CAD Wiki:59.91.119.57 * 9025 /wiki/User:Gurwinder_Singh/GSoc15/log_developmen: |
| 19:48.27 | Stragus | Writing an OpenGL engine isn't that much work anyway, I wrote that some time ago: http://www.rayforce.net/newproject024.png |
| 19:48.28 | brlcad | love the appearance of custom, though, that alone can be a saving grace |
| 19:48.32 | starseeker | figures a real 3rd gen interface will be a fairly significant depature from the mged/archer paradigms |
| 19:48.56 | brlcad | doesn't |
| 19:49.28 | brlcad | significant in the sense that the new one should be explorable, yes |
| 19:49.44 | brlcad | pretty and easier to learn, yes |
| 19:50.16 | Stragus | Eheh brlcad, you want widgets that look and behave like the standard, right. |
| 19:50.20 | brlcad | functionality, though, no change really |
| 19:50.28 | brlcad | Stragus: nope |
| 19:50.54 | brlcad | behavior to a limited extent (key bindings, some presentation patterns) |
| 19:52.01 | brlcad | appearance, definitely not |
| 19:52.44 | Stragus | Okay, so what bothers you about the usability of different-looking GUIs? |
| 19:52.46 | starseeker | brlcad: well, for example, the original ogre/qt work was focused on Qt widgets in the 3d scene - that's something I didn't envision for qged. I'd be content to use osgQt to get an OpenSceneGraph window that gets passed to libdm (after upgrading libdm's API...) |
| 19:53.09 | brlcad | cursed with having studied interface design measurement and usability theory -- there are some fundamental issues regarding design patterns, familiarity, efficiency, discoverability |
| 19:54.09 | Stragus | That depends entirely on how the programmer writes his code using the GUI, not the GUI itself |
| 19:54.22 | brlcad | starseeker: now you're talking about "how", not "what" .. I frankly don't care much how as long as it doesn't get in the way of maintainability and longer-term development |
| 19:55.08 | starseeker | fair enough |
| 19:55.15 | brlcad | the issue is what usability patterns are made available, what steps the user takes to do some action |
| 19:55.39 | brlcad | it's very user-centric, which becomes the dev's problem |
| 19:55.48 | starseeker | so from that standpoint, whether Qt elements are available in the 3D scene or not is a detail? |
| 19:56.26 | brlcad | you don't just pop up a text field where a value needs to be input, which I could code up manually or delegate to a widget library and leave to whatever limitations/complexity that implies |
| 19:58.00 | brlcad | if the user is given a text field, it better behave to platform expectations -- which means they get navigation key-bindings, cursor controls, probably even basic field checking (e.g., spell checking, bounds checks, etc) |
| 19:58.37 | brlcad | Stragus: that's a good case point example -- did you input a text input field? |
| 19:59.16 | Stragus | Yes, with support for tab, alt+tab, arrow keys, shift+arrow, ctrl+arrow |
| 19:59.51 | brlcad | ctrl-a, ctrl-e, ctrl-w, ... |
| 20:00.21 | brlcad | those little nitpick issues seem inconsequential, but play a MAJOR role in long term usability and adoption |
| 20:00.28 | Stragus | Only the first one of these, but yes, you demand standard behavior |
| 20:00.33 | brlcad | did you spell check the words on the fly |
| 20:00.35 | Stragus | Oh I agree |
| 20:00.39 | Stragus | No :p |
| 20:00.47 | brlcad | that's just the tip |
| 20:01.30 | brlcad | that's we're leveraging something like Qt because valuable because they either have invested the effort already or provide all the necessary hooks |
| 20:01.31 | Stragus | I pretty much wrote that GUI system for my own needs as learning an existing GUI seemed... boring |
| 20:01.39 | Stragus | Indeed |
| 20:01.40 | brlcad | nods |
| 20:02.00 | brlcad | it can be boring, but that's where the fun is in stylistic presentation |
| 20:02.12 | brlcad | there is some amazing research work in GUI stylization |
| 20:03.09 | Stragus | finds it more fun to optimize GPU texture caching of all GUI "images" with clever area invalidation, minimized scissoring, batching and other tricks |
| 20:03.17 | Stragus | But yes, I certainlt understand your points |
| 20:03.20 | Stragus | certainly* |
| 20:05.51 | brlcad | starseeker: probably the biggest piece I see required for gen3 is a fully pervasive on-demand command functionality |
| 20:05.54 | brlcad | (not the command console, that's a separate issue/feature) |
| 20:09.43 | *** join/#brlcad Izakey (~Isaac@41.205.22.26) | |
| 20:10.21 | brlcad | Izakey: still have that link handy? maybe starseeker can help... |
| 20:11.27 | Izakey | brlcad, I tried rectifying the libpng today and it blew away my entire GUI |
| 20:11.56 | brlcad | ouch! |
| 20:12.02 | Izakey | I'm accessing this channel using a mobile device. Let me find the link however |
| 20:12.11 | brlcad | sounds like .. you did something wrong :/ |
| 20:14.05 | starseeker | O.o |
| 20:15.42 | Izakey | Yeah, libpng was at 12. I installed,deleted and reinstalled libpng16.so.16 or so and my computer just powered itself off |
| 20:16.13 | Izakey | starseeker, this is the link https://paste.kde.org/pab6nw3ai |
| 20:17.10 | Izakey | A man without Xserver needs all the help he can get ;) |
| 20:17.15 | Stragus | libpng is not binary compatible between major versions |
| 20:17.46 | Stragus | Reinstall libpng 1.2, or rebuild everything that depends on it |
| 20:19.17 | Izakey | Thanks Stragus. |
| 20:20.40 | Stragus | isn't fond of that whole Unix philosophy of software linking tons of libraries instead of including the dependencies at build time |
| 20:20.55 | brlcad | starseeker: if you want some GUI homework to look into, try playing with Kupfer! or Synapse on Linux -- they incorporate some relevant usability concepts based on research |
| 20:21.26 | brlcad | somewhat similar to quicksilver on mac os x |
| 20:21.51 | brlcad | or even spotlight, but that interface is only half-there |
| 20:22.41 | brlcad | ah, Gnome Do might be similar too |
| 20:22.51 | brlcad | but i've just found that one now |
| 20:22.52 | Izakey | will not advise playing with GUI after today's experience |
| 20:23.09 | brlcad | "GNOME Do is inspired by Quicksilver" ... so apparently yes |
| 20:23.29 | brlcad | Izakey: you should be able to restore your GUI just by restoring libpng, no? |
| 20:23.40 | brlcad | what'd you do to it? |
| 20:23.45 | Stragus | Izakey, how did you end up replacing the installed libpng? |
| 20:24.05 | Stragus | Gentoo builds libpng12.so, libpng13.so, libpng14.so, etc. to avoid that kind of problem |
| 20:24.07 | Izakey | I used rpm to install the .rpm file |
| 20:24.36 | brlcad | just installing wouldn't have easily broken something unless an RPM overwrote a symlink |
| 20:24.54 | brlcad | would have had to overwrite/delete a symlink or delete the old lib |
| 20:24.57 | Izakey | My entire Fedora is bash - from login to what have you |
| 20:25.14 | brlcad | Izakey: also, needed the entire build log, including the cmake output |
| 20:26.23 | brlcad | prefers linux without an X server :) |
| 20:26.34 | Izakey | The cmake build log from yesterday ? brlcad |
| 20:26.47 | brlcad | I never got to see it because the url was blocked |
| 20:26.55 | brlcad | I can probably get to it now |
| 20:27.55 | Izakey | thinks Linux without Xserver can really suck |
| 20:28.39 | Stragus | spent 2 days in text mode when his GPU fried from too much CUDA, a month ago |
| 20:28.54 | Stragus | You get used to it, eh |
| 20:31.20 | Izakey | fetches yesterday's build log |
| 20:34.58 | starseeker | Izakey: did you try -DBRLCAD_ENABLE_ALL=ON ? |
| 20:35.52 | Izakey | Yes starseeker ? |
| 20:36.00 | starseeker | and you still got that error? |
| 20:36.23 | Izakey | Yes starseeker |
| 20:36.38 | starseeker | somethings wrong then - it's pulling the wrong libpng |
| 20:36.43 | starseeker | it should be using a locally built copy |
| 20:37.01 | starseeker | ditto for zlib |
| 20:37.03 | ``Erik | heh, console 4evah! |
| 20:37.18 | starseeker | yeah, need full log for this one |
| 20:38.56 | Stragus | I frequently kill X and switch to raw console when I want precise benchmarks |
| 20:43.27 | ``Erik | http://elfga.com/~erik/tmp/ss20150716164155.png is what my mac lappie usually looks like (sometimes I fullscreen terminal just to be cool, but usually it's just maximized) :D |
| 20:45.19 | Izakey | console 4evah ! ``Erik |
| 20:46.02 | Stragus | I can relate: http://www.rayforce.net/desktop000.png |
| 20:48.19 | ``Erik | still using bx? |
| 20:48.56 | Stragus | Yup |
| 20:50.39 | Izakey | brlcad, I've given you access to the Google Doc. |
| 20:50.44 | ``Erik | I got sick of fighting the logging facility in bx, irssi did things 'mostly' right out of the box, so I was willing to spend the extra resources on it *shrug* :) |
| 20:56.03 | *** join/#brlcad vasc (~vasc@bl7-122-190.dsl.telepac.pt) | |
| 20:56.22 | vasc | man sf.net is still down |
| 20:59.03 | *** join/#brlcad Yash (3b5f267d@gateway/web/cgi-irc/kiwiirc.com/ip.59.95.38.125) | |
| 21:06.16 | *** join/#brlcad konrado (~konro@41.205.22.37) | |
| 21:06.25 | Yash | hi |
| 21:09.04 | *** join/#brlcad Yash (3b5f267d@gateway/web/cgi-irc/kiwiirc.com/ip.59.95.38.125) | |
| 21:09.57 | Notify | 03BRL-CAD Wiki:Konrado DJ * 9026 /wiki/User:Konrado_DJ/GSoc2015/logs: /* 16 JULY 2015 */ |
| 21:10.56 | Notify | 03BRL-CAD Wiki:Konrado DJ * 9027 /wiki/User:Konrado_DJ/GSoc2015/logs: /* 16 JULY 2015 */ |
| 21:25.06 | vasc | hello Yash |
| 21:25.58 | Yash | hi |
| 22:20.41 | *** join/#brlcad vasc (~vasc@bl7-122-190.dsl.telepac.pt) | |
| 22:27.47 | Notify | 03BRL-CAD Wiki:Bhollister * 9028 /wiki/MGED_CMD_nmg: |
| 22:37.37 | Notify | 03BRL-CAD Wiki:Bhollister * 9029 /wiki/MGED_CMD_nmg: /* Example(s) */ |
| 22:39.16 | Notify | 03BRL-CAD Wiki:Bhollister * 9030 /wiki/MGED_CMD_nmg: /* Proposed subcommands */ |
| 22:42.11 | Notify | 03BRL-CAD Wiki:Bhollister * 9031 /wiki/MGED_CMD_nmg: /* Example(s) */ |
| 22:42.47 | *** join/#brlcad ih8sum3r (~ih8sum3r@122.173.205.133) | |
| 23:00.15 | Notify | 03BRL-CAD Wiki:202.164.45.204 * 9032 /wiki/User:Hiteshsofat/GSoc15/log_developmen: |
| 23:05.06 | Notify | 03BRL-CAD Wiki:Bhollister * 9033 /wiki/User:Bhollister/DevLogJuly2015: /* Thurs, July 16, 2015 */ |
| 23:06.20 | Notify | 03BRL-CAD Wiki:Bhollister * 9034 /wiki/User:Bhollister/DevLogJuly2015: /* Mon, July 20, 2015: Start of Week 9 (of 14) */ |