File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ // From Pixi v5
2+
3+ function GenerateSrc ( maxIfs )
4+ {
5+ var src = '' ;
6+
7+ for ( var i = 0 ; i < maxIfs ; ++ i )
8+ {
9+ if ( i > 0 )
10+ {
11+ src += '\nelse ' ;
12+ }
13+
14+ if ( i < maxIfs - 1 )
15+ {
16+ src += 'if(test == ' + i + '.0){}' ;
17+ }
18+ }
19+
20+ return src ;
21+ }
22+
23+ var CheckShaderMax = function ( gl , maxIfs )
24+ {
25+ var shader = gl . createShader ( gl . FRAGMENT_SHADER ) ;
26+
27+ var fragTemplate = [
28+ 'precision mediump float;' ,
29+ 'void main(void){' ,
30+ 'float test = 0.1;' ,
31+ '%forloop%' ,
32+ 'gl_FragColor = vec4(0.0);' ,
33+ '}'
34+ ] . join ( '\n' ) ;
35+
36+ // eslint-disable-next-line no-constant-condition
37+ while ( true )
38+ {
39+ var fragmentSrc = fragTemplate . replace ( / % f o r l o o p % / gi, GenerateSrc ( maxIfs ) ) ;
40+
41+ gl . shaderSource ( shader , fragmentSrc ) ;
42+ gl . compileShader ( shader ) ;
43+
44+ if ( ! gl . getShaderParameter ( shader , gl . COMPILE_STATUS ) )
45+ {
46+ maxIfs = ( maxIfs / 2 ) | 0 ;
47+ }
48+ else
49+ {
50+ // valid!
51+ break ;
52+ }
53+ }
54+
55+ return maxIfs ;
56+ } ;
57+
58+ module . exports = CheckShaderMax ;
You can’t perform that action at this time.
0 commit comments