Skip to content
This repository was archived by the owner on Apr 29, 2021. It is now read-only.

Commit 4a26c14

Browse files
committed
compile the necessary shaders only
1 parent d78869b commit 4a26c14

File tree

2 files changed

+53
-50
lines changed

2 files changed

+53
-50
lines changed

Runtime/ui/renderer/cmdbufferCanvas/rendering/canvas_computebuffer_utils.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ struct uiVertex
2222

2323
static int _instanceNum;
2424

25-
public static bool enableComputeBuffer = true;
25+
public static bool enableComputeBuffer = false;
2626

2727
public const int COMPUTE_BUFFER_MAX_ITEM_NUM = 1024 * 1024; // maxsize = 1M vertex/index
2828

29-
static bool supportComputeBuffer {
29+
public static bool supportComputeBuffer {
3030
get { return SystemInfo.supportsComputeShaders && CanvasShader.supportComputeBuffer && enableComputeBuffer; }
3131
}
3232

Runtime/ui/renderer/cmdbufferCanvas/rendering/canvas_shader.cs

Lines changed: 51 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -180,56 +180,59 @@ static Shader GetShader(string shaderName) {
180180
public static readonly bool supportComputeBuffer;
181181

182182
static CanvasShader() {
183-
var convexFillShader = GetShader("UIWidgets/canvas_convexFill");
184-
var fill0Shader = GetShader("UIWidgets/canvas_fill0");
185-
var fill1Shader = GetShader("UIWidgets/canvas_fill1");
186-
var stroke0Shader = GetShader("UIWidgets/canvas_stroke0");
187-
var stroke1Shader = GetShader("UIWidgets/canvas_stroke1");
188-
var texShader = GetShader("UIWidgets/canvas_tex");
189-
var stencilShader = GetShader("UIWidgets/canvas_stencil");
190-
var filterShader = GetShader("UIWidgets/canvas_filter");
191-
var shadowBoxShader = GetShader("UIWidgets/ShadowBox");
192-
var shadowRBoxShader = GetShader("UIWidgets/ShadowRBox");
193-
var strokeAlphaShader = GetShader("UIWidgets/canvas_strokeAlpha");
194-
195183
var convexFillShaderCompute = GetShader("UIWidgets/canvas_convexFill_cb");
196-
var fill0ShaderCompute = GetShader("UIWidgets/canvas_fill0_cb");
197-
var fill1ShaderCompute = GetShader("UIWidgets/canvas_fill1_cb");
198-
var stroke0ShaderCompute = GetShader("UIWidgets/canvas_stroke0_cb");
199-
var stroke1ShaderCompute = GetShader("UIWidgets/canvas_stroke1_cb");
200-
var texShaderCompute = GetShader("UIWidgets/canvas_tex_cb");
201-
var stencilShaderCompute = GetShader("UIWidgets/canvas_stencil_cb");
202-
var filterShaderCompute = GetShader("UIWidgets/canvas_filter_cb");
203-
var shadowBoxShaderCompute = GetShader("UIWidgets/ShadowBox_cb");
204-
var shadowRBoxShaderCompute = GetShader("UIWidgets/ShadowRBox_cb");
205-
var strokeAlphaShaderCompute = GetShader("UIWidgets/canvas_strokeAlpha_cb");
206-
207-
_convexFillMat = new MaterialByBlendModeStencilComp(convexFillShader);
208-
_fill0Mat = new MaterialByStencilComp(fill0Shader);
209-
_fill1Mat = new MaterialByBlendMode(fill1Shader);
210-
_stroke0Mat = new MaterialByBlendModeStencilComp(stroke0Shader);
211-
_stroke1Mat = new Material(stroke1Shader) {hideFlags = HideFlags.HideAndDontSave};
212-
_strokeAlphaMat = new MaterialByBlendModeStencilComp(strokeAlphaShader);
213-
_texMat = new MaterialByBlendModeStencilComp(texShader);
214-
_stencilMat = new Material(stencilShader) {hideFlags = HideFlags.HideAndDontSave};
215-
_filterMat = new Material(filterShader) {hideFlags = HideFlags.HideAndDontSave};
216-
_shadowBox = new Material(shadowBoxShader) {hideFlags = HideFlags.HideAndDontSave};
217-
_shadowRBox = new Material(shadowRBoxShader) {hideFlags = HideFlags.HideAndDontSave};
218-
219-
_convexFillMat_cb = new MaterialByBlendModeStencilComp(convexFillShaderCompute);
220-
_fill0Mat_cb = new MaterialByStencilComp(fill0ShaderCompute);
221-
_fill1Mat_cb = new MaterialByBlendMode(fill1ShaderCompute);
222-
_stroke0Mat_cb = new MaterialByBlendModeStencilComp(stroke0ShaderCompute);
223-
_stroke1Mat_cb = new Material(stroke1ShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
224-
_strokeAlphaMat_cb = new MaterialByBlendModeStencilComp(strokeAlphaShaderCompute);
225-
_texMat_cb = new MaterialByBlendModeStencilComp(texShaderCompute);
226-
_stencilMat_cb = new Material(stencilShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
227-
_filterMat_cb = new Material(filterShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
228-
_shadowBox_cb = new Material(shadowBoxShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
229-
_shadowRBox_cb = new Material(shadowRBoxShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
230-
231-
//check compute buffer support
232184
supportComputeBuffer = convexFillShaderCompute.isSupported;
185+
186+
//if compute buffer is not supported, load normal shaders
187+
if (!PictureFlusher.supportComputeBuffer) {
188+
var convexFillShader = GetShader("UIWidgets/canvas_convexFill");
189+
var fill0Shader = GetShader("UIWidgets/canvas_fill0");
190+
var fill1Shader = GetShader("UIWidgets/canvas_fill1");
191+
var stroke0Shader = GetShader("UIWidgets/canvas_stroke0");
192+
var stroke1Shader = GetShader("UIWidgets/canvas_stroke1");
193+
var texShader = GetShader("UIWidgets/canvas_tex");
194+
var stencilShader = GetShader("UIWidgets/canvas_stencil");
195+
var filterShader = GetShader("UIWidgets/canvas_filter");
196+
var shadowBoxShader = GetShader("UIWidgets/ShadowBox");
197+
var shadowRBoxShader = GetShader("UIWidgets/ShadowRBox");
198+
var strokeAlphaShader = GetShader("UIWidgets/canvas_strokeAlpha");
199+
200+
_convexFillMat = new MaterialByBlendModeStencilComp(convexFillShader);
201+
_fill0Mat = new MaterialByStencilComp(fill0Shader);
202+
_fill1Mat = new MaterialByBlendMode(fill1Shader);
203+
_stroke0Mat = new MaterialByBlendModeStencilComp(stroke0Shader);
204+
_stroke1Mat = new Material(stroke1Shader) {hideFlags = HideFlags.HideAndDontSave};
205+
_strokeAlphaMat = new MaterialByBlendModeStencilComp(strokeAlphaShader);
206+
_texMat = new MaterialByBlendModeStencilComp(texShader);
207+
_stencilMat = new Material(stencilShader) {hideFlags = HideFlags.HideAndDontSave};
208+
_filterMat = new Material(filterShader) {hideFlags = HideFlags.HideAndDontSave};
209+
_shadowBox = new Material(shadowBoxShader) {hideFlags = HideFlags.HideAndDontSave};
210+
_shadowRBox = new Material(shadowRBoxShader) {hideFlags = HideFlags.HideAndDontSave};
211+
}
212+
else {
213+
var fill0ShaderCompute = GetShader("UIWidgets/canvas_fill0_cb");
214+
var fill1ShaderCompute = GetShader("UIWidgets/canvas_fill1_cb");
215+
var stroke0ShaderCompute = GetShader("UIWidgets/canvas_stroke0_cb");
216+
var stroke1ShaderCompute = GetShader("UIWidgets/canvas_stroke1_cb");
217+
var texShaderCompute = GetShader("UIWidgets/canvas_tex_cb");
218+
var stencilShaderCompute = GetShader("UIWidgets/canvas_stencil_cb");
219+
var filterShaderCompute = GetShader("UIWidgets/canvas_filter_cb");
220+
var shadowBoxShaderCompute = GetShader("UIWidgets/ShadowBox_cb");
221+
var shadowRBoxShaderCompute = GetShader("UIWidgets/ShadowRBox_cb");
222+
var strokeAlphaShaderCompute = GetShader("UIWidgets/canvas_strokeAlpha_cb");
223+
224+
_convexFillMat_cb = new MaterialByBlendModeStencilComp(convexFillShaderCompute);
225+
_fill0Mat_cb = new MaterialByStencilComp(fill0ShaderCompute);
226+
_fill1Mat_cb = new MaterialByBlendMode(fill1ShaderCompute);
227+
_stroke0Mat_cb = new MaterialByBlendModeStencilComp(stroke0ShaderCompute);
228+
_stroke1Mat_cb = new Material(stroke1ShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
229+
_strokeAlphaMat_cb = new MaterialByBlendModeStencilComp(strokeAlphaShaderCompute);
230+
_texMat_cb = new MaterialByBlendModeStencilComp(texShaderCompute);
231+
_stencilMat_cb = new Material(stencilShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
232+
_filterMat_cb = new Material(filterShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
233+
_shadowBox_cb = new Material(shadowBoxShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
234+
_shadowRBox_cb = new Material(shadowRBoxShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
235+
}
233236
}
234237

235238
static readonly int _viewportId = Shader.PropertyToID("_viewport");

0 commit comments

Comments
 (0)