Your SlideShare is downloading. ×
8.7.2011 agml
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

8.7.2011 agml

366
views

Published on

rcos summer 2011 adaptive math game library

rcos summer 2011 adaptive math game library

Published in: Education, Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
366
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Adaptive Game Math Library
  • 2. What does it do? Something... I hope... Maybe?
  • 3. Progress!
  • 4. New Organization and Streamlined API API Tool Chain High Level Interface Build systemBulk Matrix Container Matrix Stack MakefileBulk Matrix Stack Dynamic Vector Code::Blocks Project Visual Studio Project Core Testing FrameworkVector Bulk Operations Allocators Automated TestingMatrix Approximations Probability Code Coverage Basics Timing FrameworkFixed-width Scalar Types Complex Types User-Friendly GUI Core Components Compatibility Layers and non User Facing Code Intrinsic Compatibility Layer Universal SIMD Types
  • 5. New Functionality
  • 6. Whats Done? Gratuitous use of graphicsMatrix/Vector Implementations 4x4, f32 Specialization Complex Types Universal SIMD Type
  • 7. Whats In Progress? Bulk Operations Approximations Allocators Probability Dynamic Vectors
  • 8. Timing Framework
  • 9. Performance
  • 10. void Rotate(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) { M3DMatrix44f mTemp, mRotate; m3dRotationMatrix44(mRotate, float(m3dDegToRad(angle)), x, y, z); m3dCopyMatrix44(mTemp, pStack[stackPointer]); m3dMatrixMultiply44(pStack[stackPointer], mTemp, mRotate);}void rot(f32 x, f32 y, f32 z) { t1 = _mm_mul_ps(simd[0],t); f32 b = cos(x), a = sin(x), d = cos(y), c = sin(y), H = -a*d; f = cos(z), e = sin(z); t = _mm_set1_ps(E); f32 cf = c*f, ae = a*e, be = b*e; t1 = _mm_add_ps(_mm_mul_ps(simd[1],t),t1 f32 A,B,C,D,E,F,H,I; C = ae-b*cf; _v128 t0, t1, t2; t = _mm_set1_ps(H); _v128 t; t1 = _mm_add_ps(_mm_mul_ps(simd[2],t),t1 A = d*f; F = be*c; t = _mm_set1_ps(A); t = _mm_set1_ps(C); D = -d*e; t2 = _mm_mul_ps(simd[0],t); t0 = _mm_mul_ps(simd[0],t); F+= a*f; t = _mm_set1_ps(D); t = _mm_set1_ps(F); B = a*cf; t2 = _mm_add_ps(_mm_mul_ps(simd[1],t),t2 t0 = _mm_add_ps(_mm_mul_ps(simd[1],t),t0); I = b*d; t = _mm_set1_ps(c); t = _mm_set1_ps(I); E = b*f; t2 = _mm_add_ps(_mm_mul_ps(simd[2],t),t2 t0 = _mm_add_ps(_mm_mul_ps(simd[2],t),t0); simd[0] = t0; E -= ae*c; simd[1] = t1; t = _mm_set1_ps(B); simd[2] = t2; B += be; }
  • 11. Testing● FrameworkAutomation●● Coverage
  • 12. Intrinsic Framework API Functions Generic SIMD Execution Layer Compile-time Decisions Inline Assembly and C Compiler Conversions betweenImplementations for non- Intrinsic Support SIMD architecturesconforming Environments
  • 13. Future Directions
  • 14. ARM Port
  • 15. Bulk Matrix Containers and Matrix Stacks
  • 16. Examples and Tutorials
  • 17. Thank You!