@@ -17,10 +17,38 @@ static partial class CanvasShader {
17
17
const string testShaderName = "UIWidgets/canvas_convexFill_cb" ;
18
18
19
19
20
- const bool enableComputeBuffer = false ;
20
+ const bool enableComputeBuffer = true ;
21
21
22
22
public static bool supportComputeBuffer ;
23
23
24
+ static void DoPrepareDefaultShader ( ) {
25
+ supportComputeBuffer = false ;
26
+
27
+ var convexFillShader = GetShader ( "UIWidgets/canvas_convexFill" ) ;
28
+ var fill0Shader = GetShader ( "UIWidgets/canvas_fill0" ) ;
29
+ var fill1Shader = GetShader ( "UIWidgets/canvas_fill1" ) ;
30
+ var stroke0Shader = GetShader ( "UIWidgets/canvas_stroke0" ) ;
31
+ var stroke1Shader = GetShader ( "UIWidgets/canvas_stroke1" ) ;
32
+ var texShader = GetShader ( "UIWidgets/canvas_tex" ) ;
33
+ var stencilShader = GetShader ( "UIWidgets/canvas_stencil" ) ;
34
+ var filterShader = GetShader ( "UIWidgets/canvas_filter" ) ;
35
+ var shadowBoxShader = GetShader ( "UIWidgets/ShadowBox" ) ;
36
+ var shadowRBoxShader = GetShader ( "UIWidgets/ShadowRBox" ) ;
37
+ var strokeAlphaShader = GetShader ( "UIWidgets/canvas_strokeAlpha" ) ;
38
+
39
+ _convexFillMat = new MaterialByBlendModeStencilComp ( convexFillShader ) ;
40
+ _fill0Mat = new MaterialByStencilComp ( fill0Shader ) ;
41
+ _fill1Mat = new MaterialByBlendMode ( fill1Shader ) ;
42
+ _stroke0Mat = new MaterialByBlendModeStencilComp ( stroke0Shader ) ;
43
+ _stroke1Mat = new Material ( stroke1Shader ) { hideFlags = HideFlags . HideAndDontSave } ;
44
+ _strokeAlphaMat = new MaterialByBlendModeStencilComp ( strokeAlphaShader ) ;
45
+ _texMat = new MaterialByBlendModeStencilComp ( texShader ) ;
46
+ _stencilMat = new Material ( stencilShader ) { hideFlags = HideFlags . HideAndDontSave } ;
47
+ _filterMat = new Material ( filterShader ) { hideFlags = HideFlags . HideAndDontSave } ;
48
+ _shadowBox = new Material ( shadowBoxShader ) { hideFlags = HideFlags . HideAndDontSave } ;
49
+ _shadowRBox = new Material ( shadowRBoxShader ) { hideFlags = HideFlags . HideAndDontSave } ;
50
+ }
51
+
24
52
static bool OnNotPrepared ( ) {
25
53
initStage = InitStage . Prepared ;
26
54
@@ -52,77 +80,56 @@ static bool OnNotPrepared() {
52
80
}
53
81
54
82
ObjectUtils . SafeDestroy ( material ) ;
55
-
56
- return false ;
83
+
84
+ DoPrepareDefaultShader ( ) ;
85
+ return true ;
57
86
}
58
87
59
88
static bool OnPrepared ( bool forceReady = false ) {
60
89
D . assert ( initStage == InitStage . Prepared ) ;
61
90
if ( ! forceReady && initialFrameCount >= Time . frameCount ) {
62
- return false ;
91
+ initStage = InitStage . Ready ;
92
+ return true ;
63
93
}
64
94
65
95
initStage = InitStage . Ready ;
66
- DoPrepare ( ) ;
96
+ DoPrepareComputeBufferShader ( ) ;
67
97
return true ;
68
98
}
69
99
70
- static void DoPrepare ( ) {
100
+ static void DoPrepareComputeBufferShader ( ) {
71
101
D . assert ( testShader != null ) ;
72
102
var isShaderSupported = testShader . isSupported ;
73
103
testShader = null ;
74
104
supportComputeBuffer = enableComputeBuffer && SystemInfo . supportsComputeShaders && isShaderSupported ;
75
105
76
106
if ( ! supportComputeBuffer ) {
77
- var convexFillShader = GetShader ( "UIWidgets/canvas_convexFill" ) ;
78
- var fill0Shader = GetShader ( "UIWidgets/canvas_fill0" ) ;
79
- var fill1Shader = GetShader ( "UIWidgets/canvas_fill1" ) ;
80
- var stroke0Shader = GetShader ( "UIWidgets/canvas_stroke0" ) ;
81
- var stroke1Shader = GetShader ( "UIWidgets/canvas_stroke1" ) ;
82
- var texShader = GetShader ( "UIWidgets/canvas_tex" ) ;
83
- var stencilShader = GetShader ( "UIWidgets/canvas_stencil" ) ;
84
- var filterShader = GetShader ( "UIWidgets/canvas_filter" ) ;
85
- var shadowBoxShader = GetShader ( "UIWidgets/ShadowBox" ) ;
86
- var shadowRBoxShader = GetShader ( "UIWidgets/ShadowRBox" ) ;
87
- var strokeAlphaShader = GetShader ( "UIWidgets/canvas_strokeAlpha" ) ;
88
-
89
- _convexFillMat = new MaterialByBlendModeStencilComp ( convexFillShader ) ;
90
- _fill0Mat = new MaterialByStencilComp ( fill0Shader ) ;
91
- _fill1Mat = new MaterialByBlendMode ( fill1Shader ) ;
92
- _stroke0Mat = new MaterialByBlendModeStencilComp ( stroke0Shader ) ;
93
- _stroke1Mat = new Material ( stroke1Shader ) { hideFlags = HideFlags . HideAndDontSave } ;
94
- _strokeAlphaMat = new MaterialByBlendModeStencilComp ( strokeAlphaShader ) ;
95
- _texMat = new MaterialByBlendModeStencilComp ( texShader ) ;
96
- _stencilMat = new Material ( stencilShader ) { hideFlags = HideFlags . HideAndDontSave } ;
97
- _filterMat = new Material ( filterShader ) { hideFlags = HideFlags . HideAndDontSave } ;
98
- _shadowBox = new Material ( shadowBoxShader ) { hideFlags = HideFlags . HideAndDontSave } ;
99
- _shadowRBox = new Material ( shadowRBoxShader ) { hideFlags = HideFlags . HideAndDontSave } ;
100
- }
101
- else {
102
- var convexFillShaderCompute = GetShader ( "UIWidgets/canvas_convexFill_cb" ) ;
103
- var fill0ShaderCompute = GetShader ( "UIWidgets/canvas_fill0_cb" ) ;
104
- var fill1ShaderCompute = GetShader ( "UIWidgets/canvas_fill1_cb" ) ;
105
- var stroke0ShaderCompute = GetShader ( "UIWidgets/canvas_stroke0_cb" ) ;
106
- var stroke1ShaderCompute = GetShader ( "UIWidgets/canvas_stroke1_cb" ) ;
107
- var texShaderCompute = GetShader ( "UIWidgets/canvas_tex_cb" ) ;
108
- var stencilShaderCompute = GetShader ( "UIWidgets/canvas_stencil_cb" ) ;
109
- var filterShaderCompute = GetShader ( "UIWidgets/canvas_filter_cb" ) ;
110
- var shadowBoxShaderCompute = GetShader ( "UIWidgets/ShadowBox_cb" ) ;
111
- var shadowRBoxShaderCompute = GetShader ( "UIWidgets/ShadowRBox_cb" ) ;
112
- var strokeAlphaShaderCompute = GetShader ( "UIWidgets/canvas_strokeAlpha_cb" ) ;
113
-
114
- _convexFillMat = new MaterialByBlendModeStencilComp ( convexFillShaderCompute ) ;
115
- _fill0Mat = new MaterialByStencilComp ( fill0ShaderCompute ) ;
116
- _fill1Mat = new MaterialByBlendMode ( fill1ShaderCompute ) ;
117
- _stroke0Mat = new MaterialByBlendModeStencilComp ( stroke0ShaderCompute ) ;
118
- _stroke1Mat = new Material ( stroke1ShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
119
- _strokeAlphaMat = new MaterialByBlendModeStencilComp ( strokeAlphaShaderCompute ) ;
120
- _texMat = new MaterialByBlendModeStencilComp ( texShaderCompute ) ;
121
- _stencilMat = new Material ( stencilShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
122
- _filterMat = new Material ( filterShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
123
- _shadowBox = new Material ( shadowBoxShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
124
- _shadowRBox = new Material ( shadowRBoxShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
107
+ return ;
125
108
}
109
+
110
+ var convexFillShaderCompute = GetShader ( "UIWidgets/canvas_convexFill_cb" ) ;
111
+ var fill0ShaderCompute = GetShader ( "UIWidgets/canvas_fill0_cb" ) ;
112
+ var fill1ShaderCompute = GetShader ( "UIWidgets/canvas_fill1_cb" ) ;
113
+ var stroke0ShaderCompute = GetShader ( "UIWidgets/canvas_stroke0_cb" ) ;
114
+ var stroke1ShaderCompute = GetShader ( "UIWidgets/canvas_stroke1_cb" ) ;
115
+ var texShaderCompute = GetShader ( "UIWidgets/canvas_tex_cb" ) ;
116
+ var stencilShaderCompute = GetShader ( "UIWidgets/canvas_stencil_cb" ) ;
117
+ var filterShaderCompute = GetShader ( "UIWidgets/canvas_filter_cb" ) ;
118
+ var shadowBoxShaderCompute = GetShader ( "UIWidgets/ShadowBox_cb" ) ;
119
+ var shadowRBoxShaderCompute = GetShader ( "UIWidgets/ShadowRBox_cb" ) ;
120
+ var strokeAlphaShaderCompute = GetShader ( "UIWidgets/canvas_strokeAlpha_cb" ) ;
121
+
122
+ _convexFillMat = new MaterialByBlendModeStencilComp ( convexFillShaderCompute ) ;
123
+ _fill0Mat = new MaterialByStencilComp ( fill0ShaderCompute ) ;
124
+ _fill1Mat = new MaterialByBlendMode ( fill1ShaderCompute ) ;
125
+ _stroke0Mat = new MaterialByBlendModeStencilComp ( stroke0ShaderCompute ) ;
126
+ _stroke1Mat = new Material ( stroke1ShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
127
+ _strokeAlphaMat = new MaterialByBlendModeStencilComp ( strokeAlphaShaderCompute ) ;
128
+ _texMat = new MaterialByBlendModeStencilComp ( texShaderCompute ) ;
129
+ _stencilMat = new Material ( stencilShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
130
+ _filterMat = new Material ( filterShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
131
+ _shadowBox = new Material ( shadowBoxShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
132
+ _shadowRBox = new Material ( shadowRBoxShaderCompute ) { hideFlags = HideFlags . HideAndDontSave } ;
126
133
}
127
134
128
135
public static bool isReady ( ) {
0 commit comments