Преглед изворни кода

Merge pull request #20163 from yushijinhun/unroll-loops-whitespace-2

Make loop unrolling completely whitespace-insensitive
Mr.doob пре 5 година
родитељ
комит
0c57e2ff0e

+ 0 - 3
docs/api/en/materials/ShaderMaterial.html

@@ -54,9 +54,6 @@
 					<li>
 						The loop variable has to be *i*.
 					</li>
-					<li>
-						The loop has to use a certain whitespace formatting.
-					</li>
 				</ul>
 				<code>
 		#pragma unroll_loop_start

+ 0 - 3
docs/api/zh/materials/ShaderMaterial.html

@@ -43,9 +43,6 @@
 					<li>
 						循环变量必须是*i*。
 					</li>
-					<li>
-						循环必须使用某种空格格式。
-					</li>
 				</ul>
 				<code>
 		#pragma unroll_loop_start

+ 2 - 2
src/renderers/webgl/WebGLProgram.js

@@ -220,7 +220,7 @@ function includeReplacer( match, include ) {
 // Unroll Loops
 
 const deprecatedUnrollLoopPattern = /#pragma unroll_loop[\s]+?for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g;
-const unrollLoopPattern = /#pragma unroll_loop_start[\s]+?for\s*\(\s*int i \= (\d+)\; i < (\d+)\; i\s*\+\+\s*\)\s*{([\s\S]+?)(?=\})\}[\s]+?#pragma unroll_loop_end/g;
+const unrollLoopPattern = /#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;
 
 function unrollLoops( string ) {
 
@@ -244,7 +244,7 @@ function loopReplacer( match, start, end, snippet ) {
 	for ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {
 
 		string += snippet
-			.replace( /\[ i \]/g, '[ ' + i + ' ]' )
+			.replace( /\[\s*i\s*\]/g, '[ ' + i + ' ]' )
 			.replace( /UNROLLED_LOOP_INDEX/g, i );
 
 	}