From 9b746df06447e716d13f16675eecdd001dbec397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Lucas=20Golini?= Date: Thu, 10 Jan 2013 01:57:56 -0300 Subject: [PATCH] Added a little optimization of the external_shader demo for ARM. --- projects/linux/ee.creator.user | 6 +++--- .../external_shader/external_shader.cpp | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/projects/linux/ee.creator.user b/projects/linux/ee.creator.user index 990d22ed6..c0914e0ef 100644 --- a/projects/linux/ee.creator.user +++ b/projects/linux/ee.creator.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget @@ -48,9 +48,9 @@ Desktop Desktop {388e5431-b31b-42b3-b9ad-9002d279d75d} - 10 + 8 0 - 0 + 4 /home/programming/eepp/make/linux diff --git a/src/examples/external_shader/external_shader.cpp b/src/examples/external_shader/external_shader.cpp index 8a90b5b3a..a3ba8057e 100644 --- a/src/examples/external_shader/external_shader.cpp +++ b/src/examples/external_shader/external_shader.cpp @@ -144,6 +144,16 @@ EE_MAIN_FUNC int main (int argc, char * argv []) colors[i] = eeColorAf( Math::Randf() * 0.5, 0.1, 0.8, 0.5 ); } + /** Optimized for ARM ( pre-cache sqrt ) */ + #ifdef EE_ARM + static eeFloat sqrt_aprox[20001]; + eeFloat tFloat = 0; + for ( int i = 0; i <= 20000; i++ ) { + sqrt_aprox[i] = eesqrt( tFloat ); + tFloat += 0.001; + } + #endif + while ( win->Running() ) { imp->Update(); @@ -209,7 +219,13 @@ EE_MAIN_FUNC int main (int argc, char * argv []) if ( touch ) { eeFloat dx = touchX - vertices[i].x; eeFloat dy = touchY - vertices[i].y; - eeFloat d = eesqrt( dx * dx + dy * dy ); + eeFloat distance = dx * dx + dy * dy; + + #ifndef EE_ARM + eeFloat d = eesqrt( distance ); + #else + eeFloat d = sqrt_aprox[ (Int32)(distance * 1000) ]; + #endif if ( d < 2.f ) { if ( d < 0.03f ) {