In the past, I've used Visual Studio with the DirectX XNA math library. Now, I'm using the GNU compiler collection. Can anyone advise a SIMD math library with a good documentation?
by a little seraching i think you can use bullet's math library, bullet itself is an opensource physics engine and it seems to have a powerfull math library beside it. here is a shortcut to download link http://sourceforge.net/projects/bullet/files/SIMD%20and%20amp_%20Vector%20Math%20library/simd%20math%201.02%20and%20vector%20math%201.01/simdvectormath.tgz/download
AMD has the open source SSEPlus project, although I have never used it so I can't comment on its quality or applicability.
You can also do it "yourself" using the SSE (Streaming SIMD Extensions) instructions and the intrinsics ( *mmintrin.h files ) of your compiler/proc.
Tutorials
Here is an example of how to use SSE instructions with assembly:
http://neilkemp.us/src/sse_tutorial/sse_tutorial.html
And here is a tutorial on how to use SSE instructions with intrinsics:
http://www.codeproject.com/KB/recipes/sseintro.aspx
A practical guide to using SSE SIMD with C++:
http://sci.tuomastonteri.fi/programming/sse/printable
Useful informations
Intel C++ Intrinsics reference (useful to get the list of instructions):
http://cache-www.intel.com/cd/00/00/34/76/347603_347603.pdf
SSE & SSE2 Intrinsic support for the enhanced instruction sets supported by Intel and AMD processors (useful to all kinds of informations relative to SSE and SIMD):
http://msdn.microsoft.com/en-us/library/y0dh78ez%28v=vs.71%29.aspx
Overall instructions list and informations about SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow etc (different versions of SSE for different proc architecture):
http://softpixel.com/~cwright/programming/simd/sse.php
If you prefer a linear algebra framework I eared about Eigen:
http://eigen.tuxfamily.org/
http://eigen.tuxfamily.org/index.php?title=FAQ#Vectorization (about SIMD support)
And finally if you need more answers about C++ SIMD Frameworks, here is a StackOverflow link. (C++ SSE SIMD framework) :
https://stackoverflow.com/questions/4953121/c-sse-simd-framework
It is not here yet. But there will be a boost.simd library (hopefully). Take look at this presentation (given last week at boostcon)
https://github.com/boostcon/2011_presentations/blob/master/thu/simd.pdf
Both of these vector/matrix-libs have optimized SSE2 code, Sony also has an Altivec for PowerPC compile switch:
Sony's vectormath SSE2 and Altivec
Bullet's Linearmath SSE2
I have been learning game development, using C++ and OpenGL, for about 4-5 months. Before that I used to program in C# and the .NET platform(about a year). So, I consider myself new to game engineering and software development as whole. Recently I read about SIMD math. I found it interesting and started wondering if it was good to use it in my math library. But, considering that I have so much to learn and I haven't even laid the foundations of my knowledge of game development, should I explore it in depth and start using it? Or should I wait until I really start to need it?
Are you aware of a complete (or almost complete) cross platform math library for use in OpenGL ES 2.0 games? The library should contain: Matrix2x2, Matrix 3x3, Matrix4x4 classes Quaternions Vector2, Vector3, Vector4 Classes Euler Angle Class Operations amongh the above mentioned classes, conversions, etc.. Standardly used math operations in 3D graphics (Dot Product, Cross Product, SLERP, etc...) Is there such Math API available either standalone or as a part of any package? Programming Language: Visual C++ but planned to be ported to OS X and Android OS.
I would like to create some level of abstraction above math in my code. I mean I don't want to be dependant on the implementation of math operations or even on class names, which are provided by some math library. I will show you a simple example. Let's assume that we have 2 math libraries. Let's consider 3D-vector classes: Library A has 3D-vector class as "Vector3D" and its method "Subtract". Library B has 3D-vector class as "vector3" and its method "subtr". Now I want to be able to swtich between these 2 different implementations, but without changing any line of code. For, instance I
I'm looking for a SIMD library focused small (4x4) matrix operations for graphics. There's lots of single precision ones out there, but I need to support both single and double precision. I've looked at Intel's IPP MX library, but I'd prefer something with source. I'm very interested in SSE3+ implementations of these particular operations: Mat4 * Mat4 Mat4 * Vec4 Mat4 * Array of Mat4 Mat4 * Array of Vec4 Mat4 inversion (nice to have)
I'm currently selecting a C++ math library to use for a project. There are several questions here and on SO concerning the 'best' library available and many answers with different suggestions, but I would like to run some tests on each of them before I make a decision. I would like to select a library that will cater for my current needs but also for any needs in any projects I may work on in the future. My problem is that due to being fairly new at this, I'm not entirely sure what those needs will be yet. Aside from the points that I can think of listed below, and assuming that I will only
I'm looking for a fast opensource C++ math-library for my game engine with the following features: fast (sse?) vectors matrices quaternions suitable for both opengl and directx
Hi so i've recently learned the SFML graphics library and would like to use or make a non-rigid body 2D physics system to use with it. I have three questions: The definition of rigid body in Box2d is A chunk of matter that is so strong that the distance between any two bits of matter on the chunk is completely constant. And this is exactly what i don't want as i would like to make... anyway, simply for experience and to enhance physics math knowledge? I feel like it would help if i ever wanted to modify the code of an existing engine, or create a game with really unique physics
I'm working on mobile platforms as Android, IOS... Many users of Moblox ask us a windows and an OS X version. There is no difficulties to provide these versions, because we are developing on OS X C++ code but we miss global scores and social network part (facebook, twitter). Is there any library to implement these functions on Desktops plaforms ? On mobile platforms, we have many SDK to provide theses functions as OpenFeint, ScoreLoop, Plus+. We have used cocoslive and uploaded scores with libcurl but it's very limited.
I am making a simple 3D game with plane in space. With c++ (win32). But the plane rotation is not realistic. The code I am using for the rotation is the following: point3D AxisRotation(point3D point,point3D Rotation){ float sx = Sin(Rotation.x*PI/180); float cx = Cos(Rotation.x*PI/180); float sy = Sin(Rotation.y*PI/180); float cy = Cos(Rotation.y*PI/180); float sz = Sin(Rotation.z*PI/180); float... + cz*xy; point.x = zx; point.y = zy; point.z = yz; return point;} The axis of the rotation needs to be (Roll,Yaw,Pitch). Does anyone know the code or the math for it ? Thank you. Dave