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 |