Changeset 202601 in webkit
- Timestamp:
- Jun 28, 2016 6:52:14 PM (8 years ago)
- Location:
- trunk/PerformanceTests
- Files:
-
- 4 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/PerformanceTests/Animometer/resources/debug-runner/tests.js
r202314 r202601 171 171 }, 172 172 { 173 url: "dom/focus.html", 174 name: "Focus 2.0" 175 }, 176 { 173 177 url: "dom/particles.html", 174 178 name: "DOM particles, SVG masks" -
trunk/PerformanceTests/Animometer/tests/dom/resources/focus.js
r202600 r202601 14 14 var size = minimumDiameter + sizeVariance; 15 15 16 // size and blurring are a function of depth16 // Size and blurring are a function of depth. 17 17 this._depth = Pseudo.random(); 18 18 var distance = Utilities.lerp(this._depth, 0, sizeVariance); … … 135 135 this._focalPoint = focusProgress; 136 136 137 // update center element before loop138 137 Utilities.setElementPrefixedProperty(this._centerElement, "filter", "blur(" + this.getBlurValue(this.centerObjectDepth, true) + "px)"); 139 138 -
trunk/PerformanceTests/Animometer/tests/master/focus.html
r202315 r202601 8 8 #stage { 9 9 background-color: #201A1F; 10 z-index: -10000;11 10 } 12 11 13 #stage > div { 14 position: absolute; 15 overflow: hidden; 16 } 17 #stage div div { 12 #stage div { 18 13 position: absolute; 19 14 background-color: #DEDADD; 20 15 border-radius: 50%; 16 display: none; 21 17 } 22 23 #center-text {24 font-size: 90%;25 transform: translate3d(-50%, -50%, 0);26 }27 28 #center-text span {29 position: absolute;30 color: #201A1F;31 font-weight: 400;32 font-size: 2em;33 top: 50%;34 left: 50%;35 transform: translate(-50%, -50%);36 }37 38 18 </style> 39 19 </head> 40 20 <body> 41 <div id="stage"> 42 <div id="center-text"><div><span>focus</span></div></div> 43 </div> 21 <div id="stage"></div> 44 22 <script src="../../resources/strings.js"></script> 45 23 <script src="../../resources/extensions.js"></script> -
trunk/PerformanceTests/Animometer/tests/master/resources/focus.js
r202315 r202601 1 1 (function() { 2 2 3 var maxVerticalOffset = 50;4 3 var minimumDiameter = 30; 5 var centerDiameter = 90; 6 var sizeVariance = 60; 4 var sizeVariance = 20; 7 5 var travelDistance = 50; 8 6 7 var minBlurValue = 1; 8 var maxBlurValue = 10; 9 9 10 var opacityMultiplier = 30; 11 var focusDuration = 1000; 12 var movementDuration = 2500; 10 13 11 14 var FocusElement = Utilities.createClass( … … 14 17 var size = minimumDiameter + sizeVariance; 15 18 16 // size and blurring are a function of depth19 // Size and blurring are a function of depth. 17 20 this._depth = Pseudo.random(); 18 21 var distance = Utilities.lerp(this._depth, 0, sizeVariance); 19 22 size -= distance; 20 23 21 var top = Stage.random(0, stage.size.height - size) - stage.maxBlurValue * 3;22 var left = Stage.random(0, stage.size.width - size) - stage.maxBlurValue * 3;24 var top = Stage.random(0, stage.size.height - size); 25 var left = Stage.random(0, stage.size.width - size); 23 26 24 this.container = document.createElement('div'); 25 this.container.style.width = (size + stage.maxBlurValue * 6) + "px"; 26 this.container.style.height = (size + stage.maxBlurValue * 6) + "px"; 27 this.container.style.top = top + "px"; 28 this.container.style.left = left + "px"; 29 this.container.style.zIndex = Math.round((1 - this._depth) * 10); 30 31 this.particle = Utilities.createElement("div", {}, this.container); 27 this.particle = document.createElement("div"); 32 28 this.particle.style.width = size + "px"; 33 29 this.particle.style.height = size + "px"; 34 this.particle.style.top = (stage.maxBlurValue * 3) + "px"; 35 this.particle.style.left = (stage.maxBlurValue * 3) + "px"; 30 this.particle.style.top = top + "px"; 31 this.particle.style.left = left + "px"; 32 this.particle.style.zIndex = Math.round((1 - this._depth) * 10); 36 33 37 34 var depthMultiplier = Utilities.lerp(1 - this._depth, 0.8, 1); 38 35 this._sinMultiplier = Pseudo.random() * Stage.randomSign() * depthMultiplier * travelDistance; 39 36 this._cosMultiplier = Pseudo.random() * Stage.randomSign() * depthMultiplier * travelDistance; 37 38 this.animate(stage, 0, 0); 40 39 }, { 41 40 42 41 hide: function() 43 42 { 44 this. container.style.display = "none";43 this.particle.style.display = "none"; 45 44 }, 46 45 47 46 show: function() 48 47 { 49 this. container.style.display = "block";48 this.particle.style.display = "block"; 50 49 }, 51 50 … … 54 53 var top = sinFactor * this._sinMultiplier; 55 54 var left = cosFactor * this._cosMultiplier; 55 var distance = Math.abs(this._depth - stage.focalPoint); 56 var blur = Utilities.lerp(distance, minBlurValue, maxBlurValue); 57 var opacity = Math.max(5, opacityMultiplier * (1 - distance)); 56 58 57 Utilities.setElementPrefixedProperty(this. container, "filter", "blur(" + stage.getBlurValue(this._depth) + "px) opacity(" + stage.getOpacityValue(this._depth)+ "%)");58 this. container.style.transform = "translate3d(" + left + "%, " + top + "%, 0)";59 Utilities.setElementPrefixedProperty(this.particle, "filter", "blur(" + blur + "px) opacity(" + opacity + "%)"); 60 this.particle.style.transform = "translate3d(" + left + "%, " + top + "%, 0)"; 59 61 } 60 62 }); … … 66 68 }, { 67 69 68 movementDuration: 2500,69 focusDuration: 1000,70 71 centerObjectDepth: 0.0,72 73 minBlurValue: 1.5,74 maxBlurValue: 15,75 maxCenterObjectBlurValue: 5,76 77 70 initialize: function(benchmark, options) 78 71 { … … 80 73 81 74 this._testElements = []; 82 this._focalPoint = 0.5;83 75 this._offsetIndex = 0; 84 85 this._centerElement = document.getElementById("center-text"); 86 this._centerElement.style.width = (centerDiameter + this.maxCenterObjectBlurValue * 6) + "px"; 87 this._centerElement.style.height = (centerDiameter + this.maxCenterObjectBlurValue * 6) + "px"; 88 this._centerElement.style.zIndex = Math.round(10 * this.centerObjectDepth); 89 90 var particle = document.querySelector("#center-text div"); 91 particle.style.width = centerDiameter + "px"; 92 particle.style.height = centerDiameter + "px"; 93 particle.style.top = (this.maxCenterObjectBlurValue * 3) + "px"; 94 particle.style.left = (this.maxCenterObjectBlurValue * 3) + "px"; 95 96 var blur = this.getBlurValue(this.centerObjectDepth, true); 97 Utilities.setElementPrefixedProperty(this._centerElement, "filter", "blur(" + blur + "px)"); 76 this.focalPoint = 0.5; 98 77 }, 99 78 100 79 complexity: function() 101 80 { 102 return 1 +this._offsetIndex;81 return this._offsetIndex; 103 82 }, 104 83 … … 119 98 var obj = new FocusElement(this); 120 99 this._testElements.push(obj); 121 this.element.appendChild(obj. container);100 this.element.appendChild(obj.particle); 122 101 } 123 102 for (var i = this._offsetIndex; i < newIndex; ++i) … … 129 108 { 130 109 var time = this._benchmark.timestamp; 131 var sinFactor = Math.sin(time / this.movementDuration);132 var cosFactor = Math.cos(time / this.movementDuration);110 var sinFactor = Math.sin(time / movementDuration); 111 var cosFactor = Math.cos(time / movementDuration); 133 112 134 var focusProgress = 0.5 + 0.5 * Math.sin(time / this.focusDuration); 135 this._focalPoint = focusProgress; 136 137 // update center element before loop 138 Utilities.setElementPrefixedProperty(this._centerElement, "filter", "blur(" + this.getBlurValue(this.centerObjectDepth, true) + "px)"); 113 this.focalPoint = 0.5 + 0.5 * Math.sin(time / focusDuration); 139 114 140 115 for (var i = 0; i < this._offsetIndex; ++i) 141 116 this._testElements[i].animate(this, sinFactor, cosFactor); 142 }, 143 144 getBlurValue: function(depth, isCenter) 145 { 146 if (isCenter) 147 return 1 + Math.abs(depth - this._focalPoint) * (this.maxCenterObjectBlurValue - 1); 148 149 return Utilities.lerp(Math.abs(depth - this._focalPoint), this.minBlurValue, this.maxBlurValue); 150 }, 151 152 getOpacityValue: function(depth) 153 { 154 return Math.max(1, opacityMultiplier * (1 - Math.abs(depth - this._focalPoint))); 155 }, 117 } 156 118 }); 157 119 -
trunk/PerformanceTests/ChangeLog
r202591 r202601 1 2016-06-28 Jon Lee <jonlee@apple.com> 2 3 Update focus test 4 https://bugs.webkit.org/show_bug.cgi?id=159242 5 rdar://problem/27070007 6 7 Reviewed by Dean Jackson. 8 Provisionally reviewed by Said Abou-Hallawa. 9 10 Move previous test to dom suite, and update the test for better reporting of frame rate, although 11 it uses a different rendering path. 12 13 * Animometer/resources/debug-runner/tests.js: Add to dom suite. 14 * Animometer/tests/dom/focus.html: Copied from PerformanceTests/Animometer/tests/master/focus.html. 15 * Animometer/tests/dom/resources/focus.js: Copied from PerformanceTests/Animometer/tests/master/resources/focus.js. 16 * Animometer/tests/master/focus.html: Remove center element. 17 * Animometer/tests/master/resources/focus.js: Use narrower size range with smaller particles. Remove the 18 container elements. Inline getBlurValue and getOpacityValue since they are only called once. 19 1 20 2016-06-28 Filip Pizlo <fpizlo@apple.com> 2 21
Note: See TracChangeset
for help on using the changeset viewer.