| 00:32.13 | *** join/#brlcad Twingy (n=justin@74.92.144.217) | |
| 06:32.23 | *** join/#brlcad clock_ (i=clock@84-72-62-142.dclient.hispeed.ch) | |
| 08:08.43 | brlcad | Maloeran: ping |
| 08:21.49 | *** join/#brlcad test34 (n=test34@unaffiliated/test34) | |
| 08:40.55 | *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch) | |
| 08:49.32 | brlcad | Maloeran: if you happen to have a nice screenshot handy, I could use it -- something benign but interesting |
| 08:50.13 | brlcad | plus I'm looking at formulating rough performance bounds in terms of rays/s for comparison purposes |
| 08:50.26 | clock_ | brlcad: what is the meaning of the second number on matrix line? |
| 08:50.34 | clock_ | Is it input X output Y or input Y output X? |
| 08:51.06 | brlcad | Maloeran: librt sits at roughly 100k to 1M, adrt at 500k to 5M, rayforce at ? |
| 08:51.45 | brlcad | Maloeran: also would it be okay to provide a link to your site (rayforce.net)? |
| 08:52.00 | brlcad | clock_: what matrix line? |
| 08:52.50 | clock_ | brlcad: if you edit matrix in a text editor, it is on a line as a sequence of 16 numbers |
| 08:53.06 | brlcad | 4x4 matrix, homogeneous coordinates |
| 08:53.23 | clock_ | what is the meaning of the second number on matrix line? |
| 08:53.59 | brlcad | still not sure if you mean the second of 16 or some other line? |
| 08:54.05 | clock_ | second of 16 |
| 08:54.11 | brlcad | it's 16 values that form the 4x4 matrix |
| 08:54.35 | clock_ | the second value is not 16 values. The second value is just one value. |
| 08:54.57 | brlcad | that's not what I was saying |
| 08:55.09 | clock_ | what is the meaning of the second number on matrix line? |
| 08:55.30 | brlcad | i'm saying it's a 4x4 transformation matrix :) .. so the second value is simply the second element of that matrix |
| 08:56.07 | clock_ | it's good to know that the second element is a second element |
| 08:56.32 | brlcad | to say that is "is" anything other than that would be rather misleading |
| 08:56.36 | clock_ | but what is the meaning? |
| 08:56.46 | clock_ | the meaning of the first element is input X output X |
| 08:57.04 | brlcad | if applied to a vector in a multiplication, it has one effect, if applied via some different operation, it has a different result |
| 08:57.04 | clock_ | but the meaning of the second element may be input X output Y, *OR* input Y output X |
| 08:57.13 | clock_ | Depending if you scan the matrix by rows or by columns |
| 08:57.17 | clock_ | So what is the meaning? |
| 08:59.10 | brlcad | i'm still not understanding where you're getting input and output from |
| 08:59.18 | brlcad | input to what? output to what? |
| 08:59.32 | clock_ | It is a transform matrix, right? |
| 08:59.38 | brlcad | yep |
| 08:59.42 | clock_ | That means it's a matrix that defines some transform. |
| 08:59.51 | brlcad | naturally |
| 08:59.58 | clock_ | Transform is something where you throw something in, and something else falls out |
| 09:00.17 | brlcad | that's one way to look at it I suppose |
| 09:00.18 | clock_ | We can imagine it like a box which has a funnel at the top and holet at the bottom |
| 09:00.28 | clock_ | We take a point in 3D space and throw it into the funnel |
| 09:00.35 | brlcad | i tend to think of a transform as something you apply, and you get a result |
| 09:00.37 | clock_ | Some other point in 3D space falls out from the bottom |
| 09:00.50 | clock_ | Now how the transform works inside |
| 09:01.10 | clock_ | When the point falls into the funnel it's taken apart into X, Y and Z coordinates |
| 09:01.18 | clock_ | like 3 drinks |
| 09:01.34 | clock_ | and there is a bartender inside which mixes the input 3 drinks into 3 output drinks |
| 09:01.47 | brlcad | i think you're perhaps just used to characterizing it how you've come to understand/visualize it as opposed to the actual operations that go on |
| 09:01.53 | clock_ | The matrix tells him how much of each input drink should go into each output drink |
| 09:02.06 | brlcad | there are tons of ways to conceptualize it |
| 09:02.20 | clock_ | He has kinda table, where he has "input drinks" and "output drinks" |
| 09:02.30 | clock_ | This table is called the transform matrix |
| 09:02.36 | clock_ | You took the table and flattened it out |
| 09:02.56 | clock_ | However there are two ways how to flatten. You can read it like a book, or read it like Chinese do - by columns |
| 09:03.00 | brlcad | i don't think you're listening |
| 09:04.02 | clock_ | You are unable to answer the question whether the second number of 16 has meaning "coefficient for propagation of input X into output Y" or "coefficient of propagation of input Y into output X". |
| 09:04.20 | clock_ | That's a basic knowledge of how affine transformations work, sorry |
| 09:05.43 | brlcad | heh, whatever .. i'm pretty sure it's just a difference of semantics and language familiarity |
| 09:05.55 | clock_ | But I want to know it, because without this knowledge I cannot produce the right sequence of 16 numbers for a given transform |
| 09:06.14 | clock_ | If you cannot tell me that, I will have to perform an experiment in brl-cad |
| 09:06.27 | clock_ | Or, alternatively |
| 09:06.31 | brlcad | i think you're just asking is element two on the second column or the second row, and the answer would be it's the second row |
| 09:06.40 | clock_ | we have a transform that transforms (x,y,z) into (x+y, y, z) |
| 09:06.49 | clock_ | What sequence of 16 numbers corresponds to this transform? |
| 09:07.20 | clock_ | Knowing the row or column is not enough |
| 09:07.38 | clock_ | There are 2 ways how matrix multiplication can be defined, which differ by swapping rows and columns |
| 09:07.52 | brlcad | along with the fact that it's a right-handed coordinate system |
| 09:07.56 | clock_ | What sequence of 16 numbers corresponds to the transform (x,y,z) -> (x+y, y, z)? |
| 09:11.18 | clock_ | brlcad: can you please figure it out? |
| 09:20.05 | brlcad | actually, i'm just in the middle of preparing a presentation, while trying to placate your oddly worded question... how to apply a matrix seems rather obvious .. even with your case, it's not clear how to relate the matrix elements to your question exactly -- the diagonal is along elements 0, 5, 10 (and 15 for homogenity) -- if I understand you correctly, the matrix would be something like 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 |
| 09:22.07 | clock_ | I think it's completely clear |
| 09:23.13 | clock_ | so if you put this matrix into a combination, the element of the combination will be transformed so that point (1,1,1) in the original element will map onto (2,1,1)? |
| 09:24.17 | clock_ | This is so typical for mathematicians - they can calculate 1+1 by integral, but if you ask them "which of your hands is right and which left", they reply "I don't think I understand your question completely" |
| 09:29.31 | clock_ | brlcad: if a point is transformed by matrix in brl-cad, is it put into a matrix 3 high and 1 wide, or 3 wide and 1 high? |
| 09:36.52 | clock_ | Does it make sense if the last 4 numbers are anything else than 0 0 0 1? |
| 09:39.08 | brlcad | technically, all vectors (and matrices) are stored via regular C arrays, so 3 "wide" would probably be how you'd interpret that if that's how you conceptualize int a[10]; as being 10 wide |
| 09:39.42 | brlcad | yes, it "can" make sense, but rarely is anything but homogeneous |
| 09:44.17 | brlcad | the biggest difference with your question earlier is that really there is more than one way to think about it -- you have found one way that you are comfortable with that works for you but that is by far not the only way to think about it and/or word it |
| 09:45.00 | brlcad | all just a matter of perspective |
| 09:45.01 | clock_ | Well let's formulate the question more precisely |
| 09:45.01 | clock_ | If I edit a combination, the combination can consist of several elements. |
| 09:45.15 | clock_ | Each element has a line. That line holds a sequence of 16 numbers which define a transformation |
| 09:45.36 | clock_ | Element is taken, transformed by that and then processed by logical operators in the combination. |
| 09:46.20 | clock_ | So does the 2nd number mean how X of the original element is mapped into Y of the processed one, or vice versa? |
| 09:46.43 | clock_ | You cannot say "it's a matter of perspective now", because then the behaviour of BRL-CAD would depend on perspective of it's user, which it doesn't |
| 09:46.44 | brlcad | a 4x4 homogeneous tranformation to a right-hand ruled coordinate system where +z is in the up direction |
| 09:47.00 | brlcad | that alone should be enough information |
| 09:47.17 | clock_ | No it isn't. |
| 09:47.31 | clock_ | I can construct 2 interpretations of this that produce different results with the same sequence of 16 numbers |
| 09:48.02 | brlcad | what is this second interpretation that is not left-hand ruled? |
| 09:48.31 | clock_ | First interpretation is that the points are put into vectors that are standing |
| 09:48.36 | clock_ | second that they are lying |
| 09:48.37 | brlcad | knowing that the values are perhaps not interlaced, are in incremental order by rows |
| 09:48.42 | clock_ | Then the matrix has different effect on the points |
| 09:49.07 | clock_ | Still, the effect is dependent on if the points are fed into standing vectors or lying vectors |
| 09:49.22 | brlcad | you're referring to the actual storage I think, which could be either way |
| 09:49.40 | brlcad | i.e. if I have int a[4][4]; |
| 09:49.54 | brlcad | or similarly int a[16]; |
| 09:49.57 | clock_ | you can tranform vector v as |
| 09:50.01 | clock_ | vA or Av |
| 09:50.15 | clock_ | in the first case v is a lying vector, in the other a standing one |
| 09:50.40 | clock_ | Depending on which case you use, the same matrix A has different effect on the v |
| 09:50.41 | brlcad | which therein I think perhaps shows the discrepancy |
| 09:50.56 | clock_ | The same matrix represents a different transformation |
| 09:51.03 | brlcad | on paper it makes a difference, in code it only really works one way |
| 09:51.16 | clock_ | And I am just asking which way ;-) |
| 09:51.22 | brlcad | and int a[3] doesn't have to be thought of as being wide or tall |
| 09:51.32 | brlcad | it's just three values in order |
| 09:52.01 | brlcad | vA can work as can Av .. it's up to use that determines which you get |
| 09:52.06 | clock_ | Let's define cube.s which is rpp 0 1 0 1 0 1 |
| 09:52.17 | clock_ | then c combo.c cube.s |
| 09:52.27 | brlcad | i'm sorry, I shouldn't have gotten started |
| 09:52.35 | brlcad | it's way too late to keep going on this track here |
| 09:52.44 | clock_ | OK good luck with presentation |
| 09:52.57 | brlcad | wednesday |
| 09:53.03 | brlcad | but dry run tomorrow |
| 10:19.30 | *** join/#brlcad test34 (n=test34@unaffiliated/test34) | |
| 14:48.02 | *** join/#brlcad test34 (n=test34@unaffiliated/test34) | |
| 14:59.24 | *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch) | |
| 15:27.38 | *** join/#brlcad clock_ (n=clock@zux221-122-143.adsl.green.ch) | |
| 16:01.06 | ``Erik | *yawn* |
| 16:05.18 | ``Erik | brlcad: rayforce gets about 1.7-1.8 mil ray/sec on a 2.0ghz g5 (no altivec, single thread) on 267534 triangles, and 4.5-8 mil ray/sec on an opteron with sse (still single threaded) |
| 16:07.45 | ``Erik | and in the neighborhood of 25k-29k lines of code, depending on which program you ask |
| 16:20.46 | Maloeran | brlcad, screenshot like http://www.rayforce.net/smooth000.png perhaps? |
| 16:21.37 | Maloeran | How much ram does an o200 have? |
| 16:22.24 | Maloeran | You sure can provide a link to rayforce.net if you want, it's currently redirected to some draft of website put together by Survice |
| 16:22.25 | ``Erik | the one I'm thinking have has I think 1.2g |
| 16:22.52 | ``Erik | 1.125g, actually |
| 16:22.57 | ``Erik | and TWO 180mhz r10k processors |
| 16:22.58 | ``Erik | :D |
| 16:23.05 | Maloeran | Woohoo |
| 16:47.10 | pra5ad | what fps rate do u get for that m1a1 |
| 16:48.18 | ``Erik | it's gone |
| 16:48.25 | Maloeran | Depends of the resolution, light sources, sampling, normal smoothing... |
| 16:48.29 | ``Erik | and it was an a2 |
| 16:48.59 | pra5ad | for that screenshot |
| 16:49.00 | ``Erik | rfdemo just does primary ray and flat shading, no shadow rays or anything, right mal? |
| 16:49.25 | Maloeran | Right, I didn't import this code yet |
| 16:50.15 | Maloeran | I think it was 6-8fps on my amd64 desktop, single processor |
| 16:50.26 | ``Erik | so on a 2.0ghz single core opteron, with one light source and shadoing, probably ~7fps at 800x600 |
| 16:50.40 | pra5ad | ah |
| 16:51.04 | Maloeran | Erik, the a2 is _much_ lighter than the truck |
| 16:51.23 | Maloeran | The truck is saturated of long thin packed triangles that are difficultt o handle |
| 16:51.59 | ``Erik | long thin triangles are a fact of life. :( |
| 16:52.04 | Maloeran | You really have to put ADRT on that model too if you want to compare |
| 16:52.12 | ``Erik | yeah, and rt |
| 16:52.25 | Maloeran | It happens with converted CSG models, but modellers don't generally produce that kind of geometry |
| 16:52.44 | ``Erik | probably happens with converted tnurbs, too |
| 16:53.07 | ``Erik | outside of the game world, geometry generally comes in tnurb or csg as far as I can tell |
| 16:53.33 | Maloeran | The CSG converter also leaves "gaps", apparently tesselating two distinct but connected curved surfaces differently and it creates small gaps |
| 16:53.42 | ``Erik | oh crap, I left my slippers at home :/ |
| 16:54.02 | ``Erik | gaps and overlaps, yes |
| 16:54.20 | ``Erik | especially how we do the tnurb to triangle conversion |
| 16:54.24 | ``Erik | :/ |
| 16:54.41 | Maloeran | I mean serious gaps, covering the whole viewport if I zoom enough, not just some numerical problems that the raytracer would correctly handle |
| 16:55.00 | ``Erik | yes... serious gaps... many mm... |
| 16:56.21 | ``Erik | if you took a manhole, tesselated the ground with, oh, 20 edges (say 40 triangles for the outter rim), and tesselated the cover with 40 triangles but started from a different orientation, there would be serious gapping and overlapping... annnddddd that's what we get on curved surfaces with the current solution :) |
| 16:56.52 | Maloeran | I see, understood |
| 16:57.44 | Maloeran | Curved facets wouldn't quite solve the manhole situation though. Tricky thing |
| 16:59.45 | Maloeran | My current curved facets make all points of an edge being aligned on a plane, plane which can be oriented in any direction |
| 17:00.35 | Maloeran | Non-planar edges could actually work |
| 17:03.21 | ``Erik | meh, just add dimensions until everything is planar ;) |
| 17:04.01 | Maloeran | Seriously, we could have curved facets with non-planar edges, the math wouldn't be that slow |
| 17:05.21 | Maloeran | 4 curved facets can make a sphere. One curved facet with non-planar edge could make a perfect... circle |
| 17:05.57 | ``Erik | mmm a perfect circle... *looks through his playlist* |
| 17:10.19 | Maloeran | Hrm sorry, not a perfect circle, of course. That would require some expensive extra steps that should probably be avoided for the sake of performance |
| 17:25.00 | ``Erik | but the band is still cool |
| 18:06.29 | CIA-21 | BRL-CAD: 03erikgreenwald * 10brlcad/include/machine.h: fix for fbsd7/sparc64 (hopefully) |
| 19:33.16 | *** join/#brlcad test34 (n=test34@unaffiliated/test34) | |
| 21:01.36 | *** join/#brlcad clock_ (i=clock@84-72-94-30.dclient.hispeed.ch) | |
| 22:31.37 | *** join/#brlcad Twingy (n=justin@74.92.144.217) | |
| 23:42.01 | brlcad | Maloeran: that'll work quite nicely, thanks |
| 23:43.08 | brlcad | and given erik's numbers, it sounds like i'm in the right ballpark of 1-10M depending on the model and other factors |
| 23:45.40 | brlcad | which is to highly estimate a lower bound if more lights and shading effects were to be enabled, full pass thorugh rays, etc |
| 23:48.29 | brlcad | still coming out way ahead, and keeps expectations sensible given the audience |
| 23:49.55 | brlcad | Maloeran: I have to ask given the image, but is it safe to assume that image is okay for release .. it's not a model that was provided to you by someone at arl or survice, I hope? otherwise, I'll have additional paperwork to do |
| 23:54.27 | brlcad | Twingy: ping |