- From: Michael Mullany <michael@sencha.com>
- Date: Fri, 15 Mar 2013 16:08:53 -0700
- To: Dirk Schulze <dschulze@adobe.com>
- Cc: "robert@ocallahan.org" <robert@ocallahan.org>, "public-fx@w3.org" <public-fx@w3.org>
- Message-ID: <CABTYPJm2hmkCX+N6cLxWe+9u6BeM4Hf-j4Qd5_mWVL5VHfOkrQ@mail.gmail.com>
On Fri, Mar 15, 2013 at 4:36 AM, Dirk Schulze <dschulze@adobe.com> wrote: > > On Mar 14, 2013, at 10:31 PM, Robert O'Callahan <robert@ocallahan.org> > wrote: > > > On Fri, Mar 15, 2013 at 5:51 PM, Dirk Schulze <dschulze@adobe.com> > wrote: > >> > In rotateFromVector(By), what happens if the x or y coordinate is > zero? Actually it's not clear to me why these can't be zero. > >> > >> This was taken over from SVG. The calculation is "(+/-) atan(y/x)". > While y could be zero, x can't. I assume the editors of SVG wanted to have > consistency between the values. > > > > The case where x is 0 makes geometric sense though. The only case that > doesn't make sense is when both x *and* y are zero. I think SVG got this > wrong. > > I guess what you suggest is that (x,y)^T = (0,1)^T is a rotation by 90 > degree and (1,0)^T is a rotation by 0 degree? (Note that the rotation is > clockwise on SVG.) Maybe it is better to just specify the angle between > (1,0)^T and the vector given by x and y. The only special case would be > that both values are 0 (which could be defined to be a multiplication by > the identity transform == no affect). > > > > >> > What's the rationale for using double for matrix elements? Are > implementations allowed to use 32-bit precision internally? > >> > >> WebIDL requires a datatype for attributes. In this case there was the > choice between float (32-bit precision) and double (64-bit precision). The > later seems to make more sense - especially because of Float64Array. > > > > I think it's worth considering whether we need to specify that the > implementation uses double precision. On one hand, specifying the precision > would help interop. On the other hand, requiring every Matrix to be backed > by a 4x4 matrix of float64s might have a real performance penalty vs > float32s. > > There were similar discussions on webkit-dev mailing list[1]. Usually > 32bit maps better to the underlaying GPU. The difference is less important > on desktop CPUs. With standards like OpenCL 1.1 full and others, GPUs are > required to get better on double precision anyway. The decision seems to be > more if we want to optimize for current hardware or look at the life time > of the spec and assume that HW gets better. Changing the spec later causes > incompatibility later (even if the difference is very small). > WebIDL does not support optional datatypes it seems. That means I needed > to choose between 64-bit and 32-bit. Upon on requests here on this list, it > seems that there are use cases for double precision beyond graphics for the > screen. > While GPU's are getting faster at double precision in desktop class GPUs - even the best results are still at 50% of single precision. The issue is on mobile where, for example, I think that Apple's PowerVR GPU cores can only emulate double at 1/8 the performance of single - but I am not a GPU expert and would welcome any feedback from folks who have done GPU acceleration work for mobile. > > Greetings, > Dirk > > [1] https://lists.webkit.org/pipermail/webkit-dev/2012-May/020764.html > > > > > Rob > > -- > > Wrfhf pnyyrq gurz gbtrgure naq fnvq, “Lbh xabj gung gur ehyref bs gur > Tragvyrf ybeq vg bire gurz, naq gurve uvtu bssvpvnyf rkrepvfr nhgubevgl > bire gurz. Abg fb jvgu lbh. Vafgrnq, jubrire jnagf gb orpbzr terng nzbat > lbh zhfg or lbhe freinag, naq jubrire jnagf gb or svefg zhfg or lbhe fynir > — whfg nf gur Fba bs Zna qvq abg pbzr gb or freirq, ohg gb freir, naq gb > tvir uvf yvsr nf n enafbz sbe znal.” [Znggurj 20:25-28] > > >
Received on Friday, 15 March 2013 23:09:51 UTC