Original Post
My indy team and mostly the writer at the moment, has developped a powerful technology aimed at helping game developpers.
It's of really optimal speed (*), based on a virtual SIMD (no, not mainly virtual C++ classes, ... of course) that lets one write a single code as if he had an enhanced portable SSE. And this will work on any platform. It beats my own hand written SIMD asm (**) since it blends everything available (intrisics, asm, compiler tricks) with the strengths of the compiler. It also beats the vectorizers though it can benefit of them. Well in one word : It blends human and computer intelligence to produce the best math code possible with max productivity atm.
Now the technical constraints, since 95% is in headers for perfs(inline and defines), no black box is possible. So it's a non sense protecting the IP. Open Source seems to be the only way.
I wish to receive some feedback here about the potential 'buisiness' issues :
- Do you think we can get some support of the big industry ?
For instance Apple and Motorola (Altivec) should encourage it. It would contribute to make PC 3D games painlessly portable on their OS/platforms.
- Do you think a company could try to reap the main ideas from the headers and try to patent some elements or try to thieve the technology and put it into a black box ? (through a (plugable) compiler à la Intel compiler for instance)
- Can I raise some support from the dev community ?
Normally it's a typical win-win deal. The lib is made to be extended in size (new functions added) so that everyone will benefit of high speed asserted and benchmarked algorithms. For instance typical convex/convex col det routines, or root extraction, etc ...
(*) Most vector or higher ops are in 1,3, or 10 cycles.
Example : vAABoxPlaneDist is 4 cycles on SSE, 6 on 3DNow, 8 on 586 FPU. This routine shows human knowledge, SIMD, and compiler powers optimally combined. It's the standard example.
(**) asm inlining is frozen cut and paste. The compiler can optimize C code more in the global context. Minimalize register pressure, eliminate unnecessary operations, etc ...
[edited by - Charles B on March 6, 2004 3:25:17 AM]