@@ -177,14 +177,16 @@ static Shader GetShader(string shaderName) {
177
177
return shader ;
178
178
}
179
179
180
+ public static bool enableComputeBuffer = true ;
181
+
180
182
public static readonly bool supportComputeBuffer ;
181
183
182
184
static CanvasShader ( ) {
183
185
var convexFillShaderCompute = GetShader ( "UIWidgets/canvas_convexFill_cb" ) ;
184
- supportComputeBuffer = convexFillShaderCompute . isSupported ;
186
+ supportComputeBuffer = enableComputeBuffer && SystemInfo . supportsComputeShaders && convexFillShaderCompute . isSupported ;
185
187
186
- //if compute buffer is not supported, load normal shaders
187
- if ( ! PictureFlusher . supportComputeBuffer ) {
188
+ //if compute buffer is not supported, load normal shader
189
+ if ( ! supportComputeBuffer ) {
188
190
var convexFillShader = GetShader ( "UIWidgets/canvas_convexFill" ) ;
189
191
var fill0Shader = GetShader ( "UIWidgets/canvas_fill0" ) ;
190
192
var fill1Shader = GetShader ( "UIWidgets/canvas_fill1" ) ;
@@ -345,7 +347,7 @@ static void _getShaderPassAndProps(
345
347
}
346
348
347
349
public static PictureFlusher . CmdDraw convexFill ( PictureFlusher . RenderLayer layer , uiPaint paint ,
348
- uiMeshMesh mesh , bool supportComputeBuffer ) {
350
+ uiMeshMesh mesh ) {
349
351
var mat = supportComputeBuffer ? _convexFillMat_cb . getMaterial ( paint . blendMode , layer . ignoreClip ) : _convexFillMat . getMaterial ( paint . blendMode , layer . ignoreClip ) ;
350
352
351
353
_getShaderPassAndProps ( layer , paint , mesh . matrix , 1.0f , 0.0f , out var pass , out var props ) ;
@@ -358,7 +360,7 @@ public static PictureFlusher.CmdDraw convexFill(PictureFlusher.RenderLayer layer
358
360
) ;
359
361
}
360
362
361
- public static PictureFlusher . CmdDraw fill0 ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh , bool supportComputeBuffer ) {
363
+ public static PictureFlusher . CmdDraw fill0 ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh ) {
362
364
Vector4 viewport = layer . viewport ;
363
365
var mat = supportComputeBuffer ? _fill0Mat_cb . getMaterial ( layer . ignoreClip ) : _fill0Mat . getMaterial ( layer . ignoreClip ) ;
364
366
@@ -375,7 +377,7 @@ public static PictureFlusher.CmdDraw fill0(PictureFlusher.RenderLayer layer, uiM
375
377
}
376
378
377
379
public static PictureFlusher . CmdDraw fill1 ( PictureFlusher . RenderLayer layer , uiPaint paint ,
378
- uiMeshMesh mesh , bool supportComputeBuffer ) {
380
+ uiMeshMesh mesh ) {
379
381
var mat = supportComputeBuffer
380
382
? _fill1Mat_cb . getMaterial ( paint . blendMode )
381
383
: _fill1Mat . getMaterial ( paint . blendMode ) ;
@@ -393,7 +395,7 @@ public static PictureFlusher.CmdDraw fill1(PictureFlusher.RenderLayer layer, uiP
393
395
}
394
396
395
397
public static PictureFlusher . CmdDraw stroke0 ( PictureFlusher . RenderLayer layer , uiPaint paint ,
396
- float alpha , uiMeshMesh mesh , bool supportComputeBuffer ) {
398
+ float alpha , uiMeshMesh mesh ) {
397
399
var mat = supportComputeBuffer
398
400
? _stroke0Mat_cb . getMaterial ( paint . blendMode , layer . ignoreClip )
399
401
: _stroke0Mat . getMaterial ( paint . blendMode , layer . ignoreClip ) ;
@@ -407,7 +409,7 @@ public static PictureFlusher.CmdDraw stroke0(PictureFlusher.RenderLayer layer, u
407
409
) ;
408
410
}
409
411
410
- public static PictureFlusher . CmdDraw stroke1 ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh , bool supportComputeBuffer ) {
412
+ public static PictureFlusher . CmdDraw stroke1 ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh ) {
411
413
Vector4 viewport = layer . viewport ;
412
414
var mat = supportComputeBuffer ? _stroke1Mat_cb : _stroke1Mat ;
413
415
@@ -423,7 +425,7 @@ public static PictureFlusher.CmdDraw stroke1(PictureFlusher.RenderLayer layer, u
423
425
) ;
424
426
}
425
427
426
- public static PictureFlusher . CmdDraw strokeAlpha ( PictureFlusher . RenderLayer layer , uiPaint paint , float alpha , float strokeMult , uiMeshMesh mesh , bool supportComputeBuffer ) {
428
+ public static PictureFlusher . CmdDraw strokeAlpha ( PictureFlusher . RenderLayer layer , uiPaint paint , float alpha , float strokeMult , uiMeshMesh mesh ) {
427
429
var mat = supportComputeBuffer
428
430
? _strokeAlphaMat_cb . getMaterial ( paint . blendMode , layer . ignoreClip )
429
431
: _strokeAlphaMat . getMaterial ( paint . blendMode , layer . ignoreClip ) ;
@@ -438,7 +440,7 @@ public static PictureFlusher.CmdDraw strokeAlpha(PictureFlusher.RenderLayer laye
438
440
}
439
441
440
442
public static PictureFlusher . CmdDraw stencilClear (
441
- PictureFlusher . RenderLayer layer , uiMeshMesh mesh , bool supportComputeBuffer ) {
443
+ PictureFlusher . RenderLayer layer , uiMeshMesh mesh ) {
442
444
Vector4 viewport = layer . viewport ;
443
445
var mat = supportComputeBuffer ? _stencilMat_cb : _stencilMat ;
444
446
@@ -454,7 +456,7 @@ public static PictureFlusher.CmdDraw stencilClear(
454
456
) ;
455
457
}
456
458
457
- public static PictureFlusher . CmdDraw stencil0 ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh , bool supportComputeBuffer ) {
459
+ public static PictureFlusher . CmdDraw stencil0 ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh ) {
458
460
Vector4 viewport = layer . viewport ;
459
461
var mat = supportComputeBuffer ? _stencilMat_cb : _stencilMat ;
460
462
@@ -470,7 +472,7 @@ public static PictureFlusher.CmdDraw stencil0(PictureFlusher.RenderLayer layer,
470
472
) ;
471
473
}
472
474
473
- public static PictureFlusher . CmdDraw stencil1 ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh , bool supportComputeBuffer ) {
475
+ public static PictureFlusher . CmdDraw stencil1 ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh ) {
474
476
Vector4 viewport = layer . viewport ;
475
477
var mat = supportComputeBuffer ? _stencilMat_cb : _stencilMat ;
476
478
@@ -487,7 +489,7 @@ public static PictureFlusher.CmdDraw stencil1(PictureFlusher.RenderLayer layer,
487
489
}
488
490
489
491
public static PictureFlusher . CmdDraw tex ( PictureFlusher . RenderLayer layer , uiPaint paint ,
490
- uiMeshMesh mesh , Image image , bool supportComputeBuffer ) {
492
+ uiMeshMesh mesh , Image image ) {
491
493
var mat = supportComputeBuffer
492
494
? _texMat_cb . getMaterial ( paint . blendMode , layer . ignoreClip )
493
495
: _texMat . getMaterial ( paint . blendMode , layer . ignoreClip ) ;
@@ -507,7 +509,7 @@ public static PictureFlusher.CmdDraw tex(PictureFlusher.RenderLayer layer, uiPai
507
509
}
508
510
509
511
public static PictureFlusher . CmdDraw texRT ( PictureFlusher . RenderLayer layer , uiPaint paint ,
510
- uiMeshMesh mesh , PictureFlusher . RenderLayer renderLayer , bool supportComputeBuffer ) {
512
+ uiMeshMesh mesh , PictureFlusher . RenderLayer renderLayer ) {
511
513
var mat = supportComputeBuffer
512
514
? _texMat_cb . getMaterial ( paint . blendMode , layer . ignoreClip )
513
515
: _texMat . getMaterial ( paint . blendMode , layer . ignoreClip ) ;
@@ -524,17 +526,17 @@ public static PictureFlusher.CmdDraw texRT(PictureFlusher.RenderLayer layer, uiP
524
526
}
525
527
526
528
public static PictureFlusher . CmdDraw texAlpha ( PictureFlusher . RenderLayer layer , uiPaint paint ,
527
- uiMeshMesh mesh , Texture tex , bool supportComputeBuffer ) {
528
- return texAlpha ( layer , paint , mesh , null , tex , supportComputeBuffer ) ;
529
+ uiMeshMesh mesh , Texture tex ) {
530
+ return texAlpha ( layer , paint , mesh , null , tex ) ;
529
531
}
530
532
531
533
public static PictureFlusher . CmdDraw texAlpha ( PictureFlusher . RenderLayer layer , uiPaint paint ,
532
- TextBlobMesh textMesh , Texture tex , bool supportComputeBuffer ) {
533
- return texAlpha ( layer , paint , null , textMesh , tex , supportComputeBuffer ) ;
534
+ TextBlobMesh textMesh , Texture tex ) {
535
+ return texAlpha ( layer , paint , null , textMesh , tex ) ;
534
536
}
535
537
536
538
public static PictureFlusher . CmdDraw texAlpha ( PictureFlusher . RenderLayer layer , uiPaint paint ,
537
- uiMeshMesh mesh , TextBlobMesh textMesh , Texture tex , bool supportComputeBuffer ) {
539
+ uiMeshMesh mesh , TextBlobMesh textMesh , Texture tex ) {
538
540
var mat = supportComputeBuffer
539
541
? _texMat_cb . getMaterial ( paint . blendMode , layer . ignoreClip )
540
542
: _texMat . getMaterial ( paint . blendMode , layer . ignoreClip ) ;
@@ -554,7 +556,7 @@ public static PictureFlusher.CmdDraw texAlpha(PictureFlusher.RenderLayer layer,
554
556
}
555
557
556
558
public static PictureFlusher . CmdDraw maskFilter ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh ,
557
- PictureFlusher . RenderLayer renderLayer , float radius , Vector2 imgInc , float [ ] kernel , bool supportComputeBuffer ) {
559
+ PictureFlusher . RenderLayer renderLayer , float radius , Vector2 imgInc , float [ ] kernel ) {
558
560
Vector4 viewport = layer . viewport ;
559
561
var mat = supportComputeBuffer ? _filterMat_cb : _filterMat ;
560
562
@@ -576,7 +578,7 @@ public static PictureFlusher.CmdDraw maskFilter(PictureFlusher.RenderLayer layer
576
578
}
577
579
578
580
public static PictureFlusher . CmdDraw fastShadow ( PictureFlusher . RenderLayer layer , uiMeshMesh mesh , float sigma ,
579
- bool isRect , bool isCircle , float corner , Vector4 bound , uiColor color , bool supportComputeBuffer ) {
581
+ bool isRect , bool isCircle , float corner , Vector4 bound , uiColor color ) {
580
582
Vector4 viewport = layer . viewport ;
581
583
var mat = supportComputeBuffer ? _shadowBox_cb : _shadowBox ;
582
584
if ( ! isRect ) {
0 commit comments