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

Commit 521ca4d

Browse files
committed
refine canvasShader
1 parent dcae028 commit 521ca4d

File tree

2 files changed

+26
-51
lines changed

2 files changed

+26
-51
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ static void tryReleaseComputeBuffer() {
4646
}
4747

4848
void initComputeBuffer() {
49-
Debug.Log("init compute buffer");
5049
var stride = Marshal.SizeOf(typeof(uiVertex));
5150
var strideIndex = Marshal.SizeOf(typeof(int));
5251
_computeBuffer = new ComputeBuffer(COMPUTE_BUFFER_MAX_ITEM_NUM, stride);

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

Lines changed: 26 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -155,18 +155,6 @@ static class CanvasShader {
155155
static readonly MaterialByBlendModeStencilComp _strokeAlphaMat;
156156
static readonly Material _shadowBox;
157157
static readonly Material _shadowRBox;
158-
159-
static readonly MaterialByBlendModeStencilComp _convexFillMat_cb;
160-
static readonly MaterialByStencilComp _fill0Mat_cb;
161-
static readonly MaterialByBlendMode _fill1Mat_cb;
162-
static readonly MaterialByBlendModeStencilComp _stroke0Mat_cb;
163-
static readonly Material _stroke1Mat_cb;
164-
static readonly MaterialByBlendModeStencilComp _texMat_cb;
165-
static readonly Material _stencilMat_cb;
166-
static readonly Material _filterMat_cb;
167-
static readonly MaterialByBlendModeStencilComp _strokeAlphaMat_cb;
168-
static readonly Material _shadowBox_cb;
169-
static readonly Material _shadowRBox_cb;
170158

171159
static Shader GetShader(string shaderName) {
172160
var shader = Shader.Find(shaderName);
@@ -223,17 +211,17 @@ static CanvasShader() {
223211
var shadowRBoxShaderCompute = GetShader("UIWidgets/ShadowRBox_cb");
224212
var strokeAlphaShaderCompute = GetShader("UIWidgets/canvas_strokeAlpha_cb");
225213

226-
_convexFillMat_cb = new MaterialByBlendModeStencilComp(convexFillShaderCompute);
227-
_fill0Mat_cb = new MaterialByStencilComp(fill0ShaderCompute);
228-
_fill1Mat_cb = new MaterialByBlendMode(fill1ShaderCompute);
229-
_stroke0Mat_cb = new MaterialByBlendModeStencilComp(stroke0ShaderCompute);
230-
_stroke1Mat_cb = new Material(stroke1ShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
231-
_strokeAlphaMat_cb = new MaterialByBlendModeStencilComp(strokeAlphaShaderCompute);
232-
_texMat_cb = new MaterialByBlendModeStencilComp(texShaderCompute);
233-
_stencilMat_cb = new Material(stencilShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
234-
_filterMat_cb = new Material(filterShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
235-
_shadowBox_cb = new Material(shadowBoxShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
236-
_shadowRBox_cb = new Material(shadowRBoxShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
214+
_convexFillMat = new MaterialByBlendModeStencilComp(convexFillShaderCompute);
215+
_fill0Mat = new MaterialByStencilComp(fill0ShaderCompute);
216+
_fill1Mat = new MaterialByBlendMode(fill1ShaderCompute);
217+
_stroke0Mat = new MaterialByBlendModeStencilComp(stroke0ShaderCompute);
218+
_stroke1Mat = new Material(stroke1ShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
219+
_strokeAlphaMat = new MaterialByBlendModeStencilComp(strokeAlphaShaderCompute);
220+
_texMat = new MaterialByBlendModeStencilComp(texShaderCompute);
221+
_stencilMat = new Material(stencilShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
222+
_filterMat= new Material(filterShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
223+
_shadowBox = new Material(shadowBoxShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
224+
_shadowRBox = new Material(shadowRBoxShaderCompute) {hideFlags = HideFlags.HideAndDontSave};
237225
}
238226
}
239227

@@ -348,7 +336,7 @@ static void _getShaderPassAndProps(
348336

349337
public static PictureFlusher.CmdDraw convexFill(PictureFlusher.RenderLayer layer, uiPaint paint,
350338
uiMeshMesh mesh) {
351-
var mat = supportComputeBuffer ? _convexFillMat_cb.getMaterial(paint.blendMode, layer.ignoreClip) : _convexFillMat.getMaterial(paint.blendMode, layer.ignoreClip);
339+
var mat = _convexFillMat.getMaterial(paint.blendMode, layer.ignoreClip);
352340

353341
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, 0.0f, out var pass, out var props);
354342

@@ -362,7 +350,7 @@ public static PictureFlusher.CmdDraw convexFill(PictureFlusher.RenderLayer layer
362350

363351
public static PictureFlusher.CmdDraw fill0(PictureFlusher.RenderLayer layer, uiMeshMesh mesh) {
364352
Vector4 viewport = layer.viewport;
365-
var mat = supportComputeBuffer ? _fill0Mat_cb.getMaterial(layer.ignoreClip) : _fill0Mat.getMaterial(layer.ignoreClip);
353+
var mat = _fill0Mat.getMaterial(layer.ignoreClip);
366354

367355
var pass = 0;
368356
var props = ObjectPool<MaterialPropertyBlockWrapper>.alloc();
@@ -378,9 +366,7 @@ public static PictureFlusher.CmdDraw fill0(PictureFlusher.RenderLayer layer, uiM
378366

379367
public static PictureFlusher.CmdDraw fill1(PictureFlusher.RenderLayer layer, uiPaint paint,
380368
uiMeshMesh mesh) {
381-
var mat = supportComputeBuffer
382-
? _fill1Mat_cb.getMaterial(paint.blendMode)
383-
: _fill1Mat.getMaterial(paint.blendMode);
369+
var mat = _fill1Mat.getMaterial(paint.blendMode);
384370
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, 0.0f, out var pass, out var props);
385371

386372
var ret = PictureFlusher.CmdDraw.create(
@@ -396,9 +382,7 @@ public static PictureFlusher.CmdDraw fill1(PictureFlusher.RenderLayer layer, uiP
396382

397383
public static PictureFlusher.CmdDraw stroke0(PictureFlusher.RenderLayer layer, uiPaint paint,
398384
float alpha, uiMeshMesh mesh) {
399-
var mat = supportComputeBuffer
400-
? _stroke0Mat_cb.getMaterial(paint.blendMode, layer.ignoreClip)
401-
: _stroke0Mat.getMaterial(paint.blendMode, layer.ignoreClip);
385+
var mat = _stroke0Mat.getMaterial(paint.blendMode, layer.ignoreClip);
402386
_getShaderPassAndProps(layer, paint, mesh.matrix, alpha, 0.0f, out var pass, out var props);
403387

404388
return PictureFlusher.CmdDraw.create(
@@ -411,7 +395,7 @@ public static PictureFlusher.CmdDraw stroke0(PictureFlusher.RenderLayer layer, u
411395

412396
public static PictureFlusher.CmdDraw stroke1(PictureFlusher.RenderLayer layer, uiMeshMesh mesh) {
413397
Vector4 viewport = layer.viewport;
414-
var mat = supportComputeBuffer ? _stroke1Mat_cb : _stroke1Mat;
398+
var mat = _stroke1Mat;
415399

416400
var pass = 0;
417401
var props = ObjectPool<MaterialPropertyBlockWrapper>.alloc();
@@ -426,9 +410,7 @@ public static PictureFlusher.CmdDraw stroke1(PictureFlusher.RenderLayer layer, u
426410
}
427411

428412
public static PictureFlusher.CmdDraw strokeAlpha(PictureFlusher.RenderLayer layer, uiPaint paint, float alpha, float strokeMult, uiMeshMesh mesh) {
429-
var mat = supportComputeBuffer
430-
? _strokeAlphaMat_cb.getMaterial(paint.blendMode, layer.ignoreClip)
431-
: _strokeAlphaMat.getMaterial(paint.blendMode, layer.ignoreClip);
413+
var mat = _strokeAlphaMat.getMaterial(paint.blendMode, layer.ignoreClip);
432414
_getShaderPassAndProps(layer, paint, mesh.matrix, alpha, strokeMult, out var pass, out var props);
433415

434416
return PictureFlusher.CmdDraw.create(
@@ -442,7 +424,7 @@ public static PictureFlusher.CmdDraw strokeAlpha(PictureFlusher.RenderLayer laye
442424
public static PictureFlusher.CmdDraw stencilClear(
443425
PictureFlusher.RenderLayer layer, uiMeshMesh mesh) {
444426
Vector4 viewport = layer.viewport;
445-
var mat = supportComputeBuffer ? _stencilMat_cb : _stencilMat;
427+
var mat = _stencilMat;
446428

447429
var pass = 0;
448430
var props = ObjectPool<MaterialPropertyBlockWrapper>.alloc();
@@ -458,7 +440,7 @@ public static PictureFlusher.CmdDraw stencilClear(
458440

459441
public static PictureFlusher.CmdDraw stencil0(PictureFlusher.RenderLayer layer, uiMeshMesh mesh) {
460442
Vector4 viewport = layer.viewport;
461-
var mat = supportComputeBuffer ? _stencilMat_cb : _stencilMat;
443+
var mat = _stencilMat;
462444

463445
var pass = 1;
464446
var props = ObjectPool<MaterialPropertyBlockWrapper>.alloc();
@@ -474,7 +456,7 @@ public static PictureFlusher.CmdDraw stencil0(PictureFlusher.RenderLayer layer,
474456

475457
public static PictureFlusher.CmdDraw stencil1(PictureFlusher.RenderLayer layer, uiMeshMesh mesh) {
476458
Vector4 viewport = layer.viewport;
477-
var mat = supportComputeBuffer ? _stencilMat_cb : _stencilMat;
459+
var mat = _stencilMat;
478460

479461
var pass = 2;
480462
var props = ObjectPool<MaterialPropertyBlockWrapper>.alloc();
@@ -490,9 +472,7 @@ public static PictureFlusher.CmdDraw stencil1(PictureFlusher.RenderLayer layer,
490472

491473
public static PictureFlusher.CmdDraw tex(PictureFlusher.RenderLayer layer, uiPaint paint,
492474
uiMeshMesh mesh, Image image) {
493-
var mat = supportComputeBuffer
494-
? _texMat_cb.getMaterial(paint.blendMode, layer.ignoreClip)
495-
: _texMat.getMaterial(paint.blendMode, layer.ignoreClip);
475+
var mat = _texMat.getMaterial(paint.blendMode, layer.ignoreClip);
496476
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, 0.0f, out var pass, out var props);
497477

498478
image.texture.filterMode = paint.filterMode;
@@ -510,9 +490,7 @@ public static PictureFlusher.CmdDraw tex(PictureFlusher.RenderLayer layer, uiPai
510490

511491
public static PictureFlusher.CmdDraw texRT(PictureFlusher.RenderLayer layer, uiPaint paint,
512492
uiMeshMesh mesh, PictureFlusher.RenderLayer renderLayer) {
513-
var mat = supportComputeBuffer
514-
? _texMat_cb.getMaterial(paint.blendMode, layer.ignoreClip)
515-
: _texMat.getMaterial(paint.blendMode, layer.ignoreClip);
493+
var mat = _texMat.getMaterial(paint.blendMode, layer.ignoreClip);
516494
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, 0.0f, out var pass, out var props);
517495
props.SetInt(_texModeId, 1); // pre alpha
518496

@@ -537,9 +515,7 @@ public static PictureFlusher.CmdDraw texAlpha(PictureFlusher.RenderLayer layer,
537515

538516
public static PictureFlusher.CmdDraw texAlpha(PictureFlusher.RenderLayer layer, uiPaint paint,
539517
uiMeshMesh mesh, TextBlobMesh textMesh, Texture tex) {
540-
var mat = supportComputeBuffer
541-
?_texMat_cb.getMaterial(paint.blendMode, layer.ignoreClip)
542-
:_texMat.getMaterial(paint.blendMode, layer.ignoreClip);
518+
var mat = _texMat.getMaterial(paint.blendMode, layer.ignoreClip);
543519
var meshMatrix = mesh != null ? mesh.matrix : textMesh.matrix;
544520
_getShaderPassAndProps(layer, paint, meshMatrix, 1.0f, 0.0f, out var pass, out var props);
545521
tex.filterMode = paint.filterMode;
@@ -558,7 +534,7 @@ public static PictureFlusher.CmdDraw texAlpha(PictureFlusher.RenderLayer layer,
558534
public static PictureFlusher.CmdDraw maskFilter(PictureFlusher.RenderLayer layer, uiMeshMesh mesh,
559535
PictureFlusher.RenderLayer renderLayer, float radius, Vector2 imgInc, float[] kernel) {
560536
Vector4 viewport = layer.viewport;
561-
var mat = supportComputeBuffer ? _filterMat_cb : _filterMat;
537+
var mat = _filterMat;
562538

563539
var pass = 0;
564540
var props = ObjectPool<MaterialPropertyBlockWrapper>.alloc();
@@ -580,9 +556,9 @@ public static PictureFlusher.CmdDraw maskFilter(PictureFlusher.RenderLayer layer
580556
public static PictureFlusher.CmdDraw fastShadow(PictureFlusher.RenderLayer layer, uiMeshMesh mesh, float sigma,
581557
bool isRect, bool isCircle, float corner, Vector4 bound, uiColor color) {
582558
Vector4 viewport = layer.viewport;
583-
var mat = supportComputeBuffer ? _shadowBox_cb : _shadowBox;
559+
var mat = _shadowBox;
584560
if (!isRect) {
585-
mat = supportComputeBuffer ? _shadowRBox_cb : _shadowRBox;
561+
mat = _shadowRBox;
586562
}
587563

588564
var props = ObjectPool<MaterialPropertyBlockWrapper>.alloc();

0 commit comments

Comments
 (0)