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

Commit 773b895

Browse files
author
Yuncong Zhang
committed
Add strokeMult
1 parent 04f87ac commit 773b895

File tree

3 files changed

+16
-13
lines changed

3 files changed

+16
-13
lines changed

Runtime/Resources/UIWidgets_canvas.cginc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ float _mat[9];
33

44
half4 _color;
55
fixed _alpha;
6+
fixed _strokeMult;
67
half4x4 _shaderMat;
78
sampler2D _shaderTex;
89
half4 _leftColor;
@@ -180,7 +181,7 @@ fixed4 frag_mf (v2f i) : SV_Target {
180181
}
181182

182183
float strokeMask(float u, float v) {
183-
return min(1.0, (1.0 - abs(u * 2.0 - 1.0)) * _alpha) * min(1.0, v);
184+
return min(1.0, (1.0 - abs(u * 2.0 - 1.0)) * 1.0) * min(1.0, v);
184185
}
185186

186187
fixed4 frag_stroke_alpha(v2f i) : SV_Target {

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ void _drawPathDrawMeshCallback(uiPaint p, uiMeshMesh fillMesh, uiMeshMesh stroke
548548
}
549549

550550
if (strokeMesh != null) {
551-
layer.draws.Add(CanvasShader.strokeAlpha(layer, p, strokeMult, strokeMesh));
551+
layer.draws.Add(CanvasShader.strokeAlpha(layer, p, alpha, strokeMult, strokeMesh));
552552
}
553553
}
554554

@@ -561,7 +561,7 @@ void _drawPathDrawMeshCallback2(uiPaint p, uiMeshMesh fillMesh, uiMeshMesh strok
561561

562562
var layer = this._currentLayer;
563563

564-
layer.draws.Add(CanvasShader.strokeAlpha(layer, p, strokeMult, strokeMesh));
564+
layer.draws.Add(CanvasShader.strokeAlpha(layer, p, alpha, strokeMult, strokeMesh));
565565
layer.draws.Add(CanvasShader.stroke1(layer, strokeMesh.duplicate()));
566566
}
567567

@@ -618,7 +618,7 @@ void _drawPath(uiPath path, uiPaint paint) {
618618
return;
619619
}
620620

621-
this._drawPathDrawMeshCallback(paint, fmesh, smesh, convex, 0, strokeMult, null, uiRectHelper.zero, null, false);
621+
this._drawPathDrawMeshCallback(paint, fmesh, smesh, convex, 1.0f, strokeMult, null, uiRectHelper.zero, null, false);
622622
}
623623
else {
624624
var state = this._currentLayer.currentState;

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ static CanvasShader() {
213213

214214
static readonly int _viewportId = Shader.PropertyToID("_viewport");
215215
static readonly int _alphaId = Shader.PropertyToID("_alpha");
216+
static readonly int _strokeMultId = Shader.PropertyToID("_strokeMult");
216217
static readonly int _colorId = Shader.PropertyToID("_color");
217218
static readonly int _shaderMatId = Shader.PropertyToID("_shaderMat");
218219
static readonly int _shaderTexId = Shader.PropertyToID("_shaderTex");
@@ -258,13 +259,14 @@ static uiMatrix3 _getShaderMatBase(PictureFlusher.State state, uiMatrix3? meshMa
258259
}
259260

260261
static void _getShaderPassAndProps(
261-
PictureFlusher.RenderLayer layer, uiPaint paint, uiMatrix3? meshMatrix, float alpha,
262+
PictureFlusher.RenderLayer layer, uiPaint paint, uiMatrix3? meshMatrix, float alpha, float strokeMult,
262263
out int pass, out MaterialPropertyBlockWrapper props) {
263264
Vector4 viewport = layer.viewport;
264265

265266
props = ObjectPool<MaterialPropertyBlockWrapper>.alloc();
266267
props.SetVector(_viewportId, viewport);
267268
props.SetFloat(_alphaId, alpha);
269+
props.SetFloat(_strokeMultId, strokeMult);
268270

269271
switch (paint.shader) {
270272
case null:
@@ -315,7 +317,7 @@ static void _getShaderPassAndProps(
315317
public static PictureFlusher.CmdDraw convexFill(PictureFlusher.RenderLayer layer, uiPaint paint,
316318
uiMeshMesh mesh) {
317319
var mat = _convexFillMat.getMaterial(paint.blendMode, layer.ignoreClip);
318-
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, out var pass, out var props);
320+
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, 0.0f, out var pass, out var props);
319321

320322
return PictureFlusher.CmdDraw.create(
321323
mesh: mesh,
@@ -344,7 +346,7 @@ public static PictureFlusher.CmdDraw fill0(PictureFlusher.RenderLayer layer, uiM
344346
public static PictureFlusher.CmdDraw fill1(PictureFlusher.RenderLayer layer, uiPaint paint,
345347
uiMeshMesh mesh) {
346348
var mat = _fill1Mat.getMaterial(paint.blendMode);
347-
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, out var pass, out var props);
349+
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, 0.0f, out var pass, out var props);
348350

349351
var ret = PictureFlusher.CmdDraw.create(
350352
mesh: mesh.boundsMesh,
@@ -360,7 +362,7 @@ public static PictureFlusher.CmdDraw fill1(PictureFlusher.RenderLayer layer, uiP
360362
public static PictureFlusher.CmdDraw stroke0(PictureFlusher.RenderLayer layer, uiPaint paint,
361363
float alpha, uiMeshMesh mesh) {
362364
var mat = _stroke0Mat.getMaterial(paint.blendMode, layer.ignoreClip);
363-
_getShaderPassAndProps(layer, paint, mesh.matrix, alpha, out var pass, out var props);
365+
_getShaderPassAndProps(layer, paint, mesh.matrix, alpha, 0.0f, out var pass, out var props);
364366

365367
return PictureFlusher.CmdDraw.create(
366368
mesh: mesh,
@@ -386,9 +388,9 @@ public static PictureFlusher.CmdDraw stroke1(PictureFlusher.RenderLayer layer, u
386388
);
387389
}
388390

389-
public static PictureFlusher.CmdDraw strokeAlpha(PictureFlusher.RenderLayer layer, uiPaint paint, float strokeMult, uiMeshMesh mesh) {
391+
public static PictureFlusher.CmdDraw strokeAlpha(PictureFlusher.RenderLayer layer, uiPaint paint, float alpha, float strokeMult, uiMeshMesh mesh) {
390392
var mat = _strokeAlphaMat.getMaterial(paint.blendMode, layer.ignoreClip);
391-
_getShaderPassAndProps(layer, paint, mesh.matrix, strokeMult, out var pass, out var props);
393+
_getShaderPassAndProps(layer, paint, mesh.matrix, alpha, strokeMult, out var pass, out var props);
392394

393395
return PictureFlusher.CmdDraw.create(
394396
mesh: mesh,
@@ -450,7 +452,7 @@ public static PictureFlusher.CmdDraw stencil1(PictureFlusher.RenderLayer layer,
450452
public static PictureFlusher.CmdDraw tex(PictureFlusher.RenderLayer layer, uiPaint paint,
451453
uiMeshMesh mesh, Image image) {
452454
var mat = _texMat.getMaterial(paint.blendMode, layer.ignoreClip);
453-
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, out var pass, out var props);
455+
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, 0.0f, out var pass, out var props);
454456

455457
image.texture.filterMode = paint.filterMode;
456458
props.SetTexture(_texId, image.texture);
@@ -468,7 +470,7 @@ public static PictureFlusher.CmdDraw tex(PictureFlusher.RenderLayer layer, uiPai
468470
public static PictureFlusher.CmdDraw texRT(PictureFlusher.RenderLayer layer, uiPaint paint,
469471
uiMeshMesh mesh, PictureFlusher.RenderLayer renderLayer) {
470472
var mat = _texMat.getMaterial(paint.blendMode, layer.ignoreClip);
471-
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, out var pass, out var props);
473+
_getShaderPassAndProps(layer, paint, mesh.matrix, 1.0f, 0.0f, out var pass, out var props);
472474
props.SetInt(_texModeId, 1); // pre alpha
473475

474476
return PictureFlusher.CmdDraw.create(
@@ -494,7 +496,7 @@ public static PictureFlusher.CmdDraw texAlpha(PictureFlusher.RenderLayer layer,
494496
uiMeshMesh mesh, TextBlobMesh textMesh, Texture tex) {
495497
var mat = _texMat.getMaterial(paint.blendMode, layer.ignoreClip);
496498
var meshMatrix = mesh != null ? mesh.matrix : textMesh.matrix;
497-
_getShaderPassAndProps(layer, paint, meshMatrix, 1.0f, out var pass, out var props);
499+
_getShaderPassAndProps(layer, paint, meshMatrix, 1.0f, 0.0f, out var pass, out var props);
498500
tex.filterMode = paint.filterMode;
499501
props.SetTexture(_texId, tex);
500502
props.SetInt(_texModeId, 2); // alpha only

0 commit comments

Comments
 (0)