浏览代码

new deterministic random number generator for visual tests

David Catuhe 5 年之前
父节点
当前提交
177ae34ae0

+ 14 - 0
.vscode/launch.json

@@ -210,6 +210,20 @@
             "runtimeArgs": [
                 "--enable-unsafe-es3-apis"
             ]
+        },  
+        {
+            "name": "Launch Build Validation (Edge)",
+            "type": "edge",
+            "version": "dev",
+            "request": "launch",
+            "url": "http://localhost:1338/tests/validation/index.html",
+            "webRoot": "${workspaceRoot}/",
+            "sourceMaps": true,
+            "preLaunchTask": "run",
+            "userDataDir": "${workspaceRoot}/.tempChromeProfileForDebug",
+            "runtimeArgs": [
+                "--enable-unsafe-es3-apis"
+            ]
         },
         {
             "name": "Launch memory checks (Chrome)",

二进制
tests/validation/ReferenceImages/instancedBones.png


二进制
tests/validation/ReferenceImages/instances.png


二进制
tests/validation/ReferenceImages/particle_helper.png


二进制
tests/validation/ReferenceImages/particles.png


二进制
tests/validation/ReferenceImages/sps.png


二进制
tests/validation/ReferenceImages/subemitters.png


二进制
tests/validation/ReferenceImages/yeti.png


+ 7 - 1
tests/validation/config.json

@@ -1,6 +1,12 @@
 {
     "root": "https://cdn.babylonjs.com",
-    "tests": [    
+    "tests": [     
+        {
+            "title": "Particle subemitters",
+            "playgroundId": "#1LK70I#7",            
+            "renderCount": 50,
+            "referenceImage": "subemitters.png"
+        },    
         {
             "title": "Black and White post-process",
             "playgroundId": "#N55Q2M#0",

+ 2 - 1
tests/validation/index.html

@@ -3,7 +3,8 @@
 
 <head>
 	<title>BabylonJS - Build validation page</title>
-	<link href="index.css" rel="stylesheet" />
+    <link href="index.css" rel="stylesheet" />    
+    <script src="//cdnjs.cloudflare.com/ajax/libs/seedrandom/3.0.5/seedrandom.min.js"></script>
 	<script src="https://preview.babylonjs.com/draco_decoder_gltf.js"></script>
 	<script src="https://unpkg.com/earcut@2.1.1/dist/earcut.min.js"></script>
 	<script src="../../Tools/DevLoader/BabylonLoader.js"></script>

+ 3 - 1
tests/validation/validate.html

@@ -3,7 +3,9 @@
 
 <head>
 	<title>BabylonJS - Build validation page</title>
-	<link href="index.css" rel="stylesheet" />
+    <link href="index.css" rel="stylesheet" />
+    
+    <script src="//cdnjs.cloudflare.com/ajax/libs/seedrandom/3.0.5/seedrandom.min.js"></script>
 
 	<script src="https://preview.babylonjs.com/draco_decoder_gltf.js"></script>
 	<script src="https://preview.babylonjs.com/ammo.js"></script>

+ 1 - 15
tests/validation/validation.js

@@ -6,19 +6,7 @@ var currentScene;
 var config;
 var justOnce;
 
-// Overload the random to make it deterministic
-var seed = 100000,
-    constant = Math.pow(2, 13) + 1,
-    prime = 37,
-    maximum = Math.pow(2, 50);
-
-Math.random = function() {
-    seed *= constant;
-    seed += prime;
-    seed %= maximum;
-
-    return seed / maximum;
-}
+Math.seedrandom('babylonjs');
 
 function compare(renderData, referenceCanvas, threshold, errorRatio) {
     var width = referenceCanvas.width;
@@ -213,8 +201,6 @@ function runTest(index, done) {
 
         location.href = "#" + container.id;
        
-        seed = 100000;
-
         if (test.sceneFolder) {
             BABYLON.SceneLoader.Load(config.root + test.sceneFolder, test.sceneFilename, engine, function(newScene) {
                 currentScene = newScene;