[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/games/astrododge/src
From:       Rivo Laks <rivolaks () hot ! ee>
Date:       2009-07-30 16:06:12
Message-ID: 1248969972.240515.15437.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1004624 by rivol:

Precompile shaders earlier in the loading process.

 M  +25 -25    loadingview.cpp  
 M  +1 -1      loadingview.h  


--- trunk/playground/games/astrododge/src/loadingview.cpp #1004623:1004624
@@ -53,11 +53,11 @@
     mStateInfos[Load_InitWorld]             = LoadingStateInfo(  3, "Creating world");
     mStateInfos[Load_AsteroidModelInfos]    = LoadingStateInfo( 25, "Loading asteroid models");
     mStateInfos[Load_LevelXML]              = LoadingStateInfo( 30, "Loading level");
-    mStateInfos[Load_ObjectModelInfos]      = LoadingStateInfo( 45, "Loading object models");
-    mStateInfos[Load_FinalizeModels]        = LoadingStateInfo( 50, "Finalizing models");
+    mStateInfos[Load_ObjectModelInfos]      = LoadingStateInfo( 42, "Loading object models");
+    mStateInfos[Load_FinalizeModels]        = LoadingStateInfo( 47, "Finalizing models");
+    mStateInfos[Load_PrecompileShaders]     = LoadingStateInfo( 50, "Compiling shaders");
     mStateInfos[Load_AssignObjectModels]    = LoadingStateInfo( 55, "Creating objects");
     mStateInfos[Load_AssignAsteroidModels]  = LoadingStateInfo( 95, "Creating asteroids");
-    mStateInfos[Load_PrecompileShaders]     = LoadingStateInfo( 98, "Compiling shaders");
     mStateInfos[Load_Done]                  = LoadingStateInfo(100, "Starting game");
 }
 
@@ -179,6 +179,28 @@
     updateProgress(Load_FinalizeModels);
     mWorld->data()->finalizeModels();
 
+    updateProgress(Load_PrecompileShaders);
+    QStringList lightTypes;
+    QSet<QString> materials;
+    lightTypes << "directional" << "spot" << "point";
+    materials << "asteroid";
+    foreach (const QString& modelName, mModel2Objects.keys()) {
+        materials << mWorld->data()->model(modelName)->material();
+    }
+
+    foreach (const QString& material, materials) {
+        // For "light" renderMode, use all light types
+        foreach (const QString& light, lightTypes) {
+            if (!mWorld->data()->shaderManager()->precompileProgram("light", light, material)) {
+                return false;
+            }
+        }
+        // For "ambient" mode, just use "directional"
+        if (!mWorld->data()->shaderManager()->precompileProgram("ambient", "directional", material)) {
+            return false;
+        }
+    }
+
     updateProgress(Load_AssignObjectModels);
     // Objects
     QHashIterator<QString, QList<GameObject*> > it(mModel2Objects);
@@ -204,28 +226,6 @@
         i++;
     }
 
-    updateProgress(Load_PrecompileShaders);
-    QStringList lightTypes;
-    QSet<QString> materials;
-    lightTypes << "directional" << "spot" << "point";
-    materials << "asteroid";
-    foreach (const QString& modelName, mModel2Objects.keys()) {
-        materials << mWorld->data()->model(modelName)->material();
-    }
-
-    foreach (const QString& material, materials) {
-        // For "light" renderMode, use all light types
-        foreach (const QString& light, lightTypes) {
-            if (!mWorld->data()->shaderManager()->precompileProgram("light", light, material)) {
-                return false;
-            }
-        }
-        // For "ambient" mode, just use "directional"
-        if (!mWorld->data()->shaderManager()->precompileProgram("ambient", "directional", material)) {
-            return false;
-        }
-    }
-
     updateProgress(Load_Done);
     return true;
 }
--- trunk/playground/games/astrododge/src/loadingview.h #1004623:1004624
@@ -77,9 +77,9 @@
             Load_LevelXML,
             Load_ObjectModelInfos,
             Load_FinalizeModels,
+            Load_PrecompileShaders,
             Load_AssignObjectModels,
             Load_AssignAsteroidModels,
-            Load_PrecompileShaders,
             Load_Done
         };
         struct LoadingStateInfo
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic