Merge branch '3.6' into 3.7-beta

This commit is contained in:
badlogic 2017-10-20 11:19:48 +02:00
commit e7f21bfa29
28 changed files with 160 additions and 87 deletions

View File

@ -33,6 +33,7 @@ package spine {
public class PathConstraint implements Constraint { public class PathConstraint implements Constraint {
private static const NONE : int = -1, BEFORE : int = -2, AFTER : int = -3; private static const NONE : int = -1, BEFORE : int = -2, AFTER : int = -3;
private static const epsilon : Number = 0.00001;
internal var _data : PathConstraintData; internal var _data : PathConstraintData;
internal var _bones : Vector.<Bone>; internal var _bones : Vector.<Bone>;
public var target : Slot; public var target : Slot;
@ -88,11 +89,15 @@ package spine {
for (var i : int = 0, n : int = spacesCount - 1; i < n;) { for (var i : int = 0, n : int = spacesCount - 1; i < n;) {
var bone : Bone = bones[i]; var bone : Bone = bones[i];
var setupLength : Number = bone.data.length; var setupLength : Number = bone.data.length;
if (setupLength == 0) setupLength = 0.000000001; if (setupLength < epsilon) {
var x : Number = setupLength * bone.a, y : Number = setupLength * bone.c; if (scale) lengths[i] = 0;
var length : Number = Math.sqrt(x * x + y * y); spaces[++i] = 0;
if (scale) lengths[i] = length; } else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength; var x : Number = setupLength * bone.a, y : Number = setupLength * bone.c;
var length : Number = Math.sqrt(x * x + y * y);
if (scale) lengths[i] = length;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;
}
} }
} else { } else {
for (i = 1; i < spacesCount; i++) for (i = 1; i < spacesCount; i++)

View File

@ -35,6 +35,7 @@
#define PATHCONSTRAINT_NONE -1 #define PATHCONSTRAINT_NONE -1
#define PATHCONSTRAINT_BEFORE -2 #define PATHCONSTRAINT_BEFORE -2
#define PATHCONSTRAINT_AFTER -3 #define PATHCONSTRAINT_AFTER -3
#define EPSILON 0.00001f
spPathConstraint* spPathConstraint_create (spPathConstraintData* data, const spSkeleton* skeleton) { spPathConstraint* spPathConstraint_create (spPathConstraintData* data, const spSkeleton* skeleton) {
int i; int i;
@ -113,13 +114,17 @@ void spPathConstraint_apply (spPathConstraint* self) {
lengths = self->lengths; lengths = self->lengths;
} }
for (i = 0, n = spacesCount - 1; i < n;) { for (i = 0, n = spacesCount - 1; i < n;) {
spBone* bone = bones[i]; spBone *bone = bones[i];
setupLength = bone->data->length; setupLength = bone->data->length;
if (setupLength == 0) setupLength = 0.000000001f; if (setupLength < EPSILON) {
x = setupLength * bone->a, y = setupLength * bone->c; if (scale) lengths[i] = 0;
length = SQRT(x * x + y * y); spaces[++i] = 0;
if (scale) lengths[i] = length; } else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength; x = setupLength * bone->a, y = setupLength * bone->c;
length = SQRT(x * x + y * y);
if (scale) lengths[i] = length;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;
}
} }
} else { } else {
for (i = 1; i < spacesCount; i++) { for (i = 1; i < spacesCount; i++) {

View File

@ -1,4 +1,4 @@
// //
// System.Collections.Generic.List // System.Collections.Generic.List
// //
// Authors: // Authors:
@ -97,9 +97,9 @@ namespace Spine {
// var newItems = new T[newSize]; // var newItems = new T[newSize];
// Array.Copy(oldItems, newItems, Count); // Array.Copy(oldItems, newItems, Count);
// Items = newItems; // Items = newItems;
} else if (newSize > itemsLength) { } else if (newSize < itemsLength) {
// Allow nulling of T reference type to allow GC. // Allow nulling of T reference type to allow GC.
for (int i = Count; i < itemsLength; i++) for (int i = newSize; i < itemsLength; i++)
oldItems[i] = default(T); oldItems[i] = default(T);
} }
Count = newSize; Count = newSize;

View File

@ -33,6 +33,7 @@ using System;
namespace Spine { namespace Spine {
public class PathConstraint : IConstraint { public class PathConstraint : IConstraint {
const int NONE = -1, BEFORE = -2, AFTER = -3; const int NONE = -1, BEFORE = -2, AFTER = -3;
const float Epsilon = 0.00001f;
internal PathConstraintData data; internal PathConstraintData data;
internal ExposedList<Bone> bones; internal ExposedList<Bone> bones;
@ -93,11 +94,15 @@ namespace Spine {
for (int i = 0, n = spacesCount - 1; i < n;) { for (int i = 0, n = spacesCount - 1; i < n;) {
Bone bone = bonesItems[i]; Bone bone = bonesItems[i];
float setupLength = bone.data.length; float setupLength = bone.data.length;
if (setupLength == 0) setupLength = 0.000000001f; if (setupLength < PathConstraint.Epsilon) {
float x = setupLength * bone.a, y = setupLength * bone.c; if (scale) lengths.Items[i] = 0;
float length = (float)Math.Sqrt(x * x + y * y); spaces.Items[++i] = 0;
if (scale) lengths.Items[i] = length; } else {
spaces.Items[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength; float x = setupLength * bone.a, y = setupLength * bone.c;
float length = (float)Math.Sqrt(x * x + y * y);
if (scale) lengths.Items[i] = length;
spaces.Items[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;
}
} }
} else { } else {
for (int i = 1; i < spacesCount; i++) for (int i = 1; i < spacesCount; i++)
@ -122,7 +127,7 @@ namespace Spine {
float x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY; float x = positions[p], y = positions[p + 1], dx = x - boneX, dy = y - boneY;
if (scale) { if (scale) {
float length = lengths.Items[i]; float length = lengths.Items[i];
if (length != 0) { if (length >= PathConstraint.Epsilon) {
float s = ((float)Math.Sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1; float s = ((float)Math.Sqrt(dx * dx + dy * dy) / length - 1) * rotateMix + 1;
bone.a *= s; bone.a *= s;
bone.c *= s; bone.c *= s;
@ -134,7 +139,7 @@ namespace Spine {
float a = bone.a, b = bone.b, c = bone.c, d = bone.d, r, cos, sin; float a = bone.a, b = bone.b, c = bone.c, d = bone.d, r, cos, sin;
if (tangents) if (tangents)
r = positions[p - 1]; r = positions[p - 1];
else if (spaces.Items[i + 1] == 0) else if (spaces.Items[i + 1] < PathConstraint.Epsilon)
r = positions[p + 2]; r = positions[p + 2];
else else
r = MathUtils.Atan2(dy, dx); r = MathUtils.Atan2(dy, dx);
@ -230,7 +235,7 @@ namespace Spine {
path.ComputeWorldVertices(target, curve * 6 + 2, 8, world, 0); path.ComputeWorldVertices(target, curve * 6 + 2, 8, world, 0);
} }
AddCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], output, o, AddCurvePosition(p, world[0], world[1], world[2], world[3], world[4], world[5], world[6], world[7], output, o,
tangents || (i > 0 && space == 0)); tangents || (i > 0 && space < PathConstraint.Epsilon));
} }
return output; return output;
} }
@ -378,7 +383,7 @@ namespace Spine {
} }
break; break;
} }
AddCurvePosition(p * 0.1f, x1, y1, cx1, cy1, cx2, cy2, x2, y2, output, o, tangents || (i > 0 && space == 0)); AddCurvePosition(p * 0.1f, x1, y1, cx1, cy1, cx2, cy2, x2, y2, output, o, tangents || (i > 0 && space < PathConstraint.Epsilon));
} }
return output; return output;
} }
@ -399,13 +404,14 @@ namespace Spine {
static void AddCurvePosition (float p, float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2, static void AddCurvePosition (float p, float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2,
float[] output, int o, bool tangents) { float[] output, int o, bool tangents) {
if (p == 0 || float.IsNaN(p)) p = 0.0001f; if (p < PathConstraint.Epsilon || float.IsNaN(p)) p = PathConstraint.Epsilon;
float tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u; float tt = p * p, ttt = tt * p, u = 1 - p, uu = u * u, uuu = uu * u;
float ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p; float ut = u * p, ut3 = ut * 3, uut3 = u * ut3, utt3 = ut3 * p;
float x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt; float x = x1 * uuu + cx1 * uut3 + cx2 * utt3 + x2 * ttt, y = y1 * uuu + cy1 * uut3 + cy2 * utt3 + y2 * ttt;
output[o] = x; output[o] = x;
output[o + 1] = y; output[o + 1] = y;
if (tangents) output[o + 2] = (float)Math.Atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt)); if (tangents)
output[o + 2] = (float)Math.Atan2(y - (y1 * uu + cy1 * ut * 2 + cy2 * tt), x - (x1 * uu + cx1 * ut * 2 + cx2 * tt));
} }
} }
} }

View File

@ -55,6 +55,7 @@ PathConstraint.__index = PathConstraint
PathConstraint.NONE = -1 PathConstraint.NONE = -1
PathConstraint.BEFORE = -2 PathConstraint.BEFORE = -2
PathConstraint.AFTER = -3 PathConstraint.AFTER = -3
PathConstraint.epsilon = 0.00001
function PathConstraint.new (data, skeleton) function PathConstraint.new (data, skeleton)
if not data then error("data cannot be nil", 2) end if not data then error("data cannot be nil", 2) end
@ -118,13 +119,22 @@ function PathConstraint:update ()
while i < n do while i < n do
local bone = bones[i + 1]; local bone = bones[i + 1];
local setupLength = bone.data.length local setupLength = bone.data.length
if setupLength == 0 then setupLength = 0.0000001 end if setupLength < PathConstraint.epsilon then
local x = setupLength * bone.a if scale then lengths[i + 1] = 0 end
local y = setupLength * bone.c i = i + 1
local length = math_sqrt(x * x + y * y) spaces[i + 1] = 0
if scale then lengths[i + 1] = length end else
i = i + 1 local x = setupLength * bone.a
if lengthSpacing then spaces[i + 1] = (setupLength + spacing) * length / setupLength else spaces[i + 1] = spacing * length / setupLength end local y = setupLength * bone.c
local length = math_sqrt(x * x + y * y)
if scale then lengths[i + 1] = length end
i = i + 1
if lengthSpacing then
spaces[i + 1] = (setupLength + spacing) * length / setupLength
else
spaces[i + 1] = spacing * length / setupLength
end
end
end end
else else
local i = 1 local i = 1

View File

@ -752,6 +752,7 @@ declare module spine {
static NONE: number; static NONE: number;
static BEFORE: number; static BEFORE: number;
static AFTER: number; static AFTER: number;
static epsilon: number;
data: PathConstraintData; data: PathConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Slot; target: Slot;

View File

@ -3290,13 +3290,18 @@ var spine;
for (var i = 0, n = spacesCount - 1; i < n;) { for (var i = 0, n = spacesCount - 1; i < n;) {
var bone = bones[i]; var bone = bones[i];
var setupLength = bone.data.length; var setupLength = bone.data.length;
if (setupLength == 0) if (setupLength < PathConstraint.epsilon) {
setupLength = 0.0000001; if (scale)
var x = setupLength * bone.a, y = setupLength * bone.c; lengths[i] = 0;
var length_1 = Math.sqrt(x * x + y * y); spaces[++i] = 0;
if (scale) }
lengths[i] = length_1; else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength; var x = setupLength * bone.a, y = setupLength * bone.c;
var length_1 = Math.sqrt(x * x + y * y);
if (scale)
lengths[i] = length_1;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
}
} }
} }
else { else {
@ -3602,6 +3607,7 @@ var spine;
PathConstraint.NONE = -1; PathConstraint.NONE = -1;
PathConstraint.BEFORE = -2; PathConstraint.BEFORE = -2;
PathConstraint.AFTER = -3; PathConstraint.AFTER = -3;
PathConstraint.epsilon = 0.00001;
return PathConstraint; return PathConstraint;
}()); }());
spine.PathConstraint = PathConstraint; spine.PathConstraint = PathConstraint;

File diff suppressed because one or more lines are too long

View File

@ -752,6 +752,7 @@ declare module spine {
static NONE: number; static NONE: number;
static BEFORE: number; static BEFORE: number;
static AFTER: number; static AFTER: number;
static epsilon: number;
data: PathConstraintData; data: PathConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Slot; target: Slot;

View File

@ -3290,13 +3290,18 @@ var spine;
for (var i = 0, n = spacesCount - 1; i < n;) { for (var i = 0, n = spacesCount - 1; i < n;) {
var bone = bones[i]; var bone = bones[i];
var setupLength = bone.data.length; var setupLength = bone.data.length;
if (setupLength == 0) if (setupLength < PathConstraint.epsilon) {
setupLength = 0.0000001; if (scale)
var x = setupLength * bone.a, y = setupLength * bone.c; lengths[i] = 0;
var length_1 = Math.sqrt(x * x + y * y); spaces[++i] = 0;
if (scale) }
lengths[i] = length_1; else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength; var x = setupLength * bone.a, y = setupLength * bone.c;
var length_1 = Math.sqrt(x * x + y * y);
if (scale)
lengths[i] = length_1;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
}
} }
} }
else { else {
@ -3602,6 +3607,7 @@ var spine;
PathConstraint.NONE = -1; PathConstraint.NONE = -1;
PathConstraint.BEFORE = -2; PathConstraint.BEFORE = -2;
PathConstraint.AFTER = -3; PathConstraint.AFTER = -3;
PathConstraint.epsilon = 0.00001;
return PathConstraint; return PathConstraint;
}()); }());
spine.PathConstraint = PathConstraint; spine.PathConstraint = PathConstraint;

File diff suppressed because one or more lines are too long

View File

@ -681,6 +681,7 @@ declare module spine {
static NONE: number; static NONE: number;
static BEFORE: number; static BEFORE: number;
static AFTER: number; static AFTER: number;
static epsilon: number;
data: PathConstraintData; data: PathConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Slot; target: Slot;

View File

@ -2969,13 +2969,18 @@ var spine;
for (var i = 0, n = spacesCount - 1; i < n;) { for (var i = 0, n = spacesCount - 1; i < n;) {
var bone = bones[i]; var bone = bones[i];
var setupLength = bone.data.length; var setupLength = bone.data.length;
if (setupLength == 0) if (setupLength < PathConstraint.epsilon) {
setupLength = 0.0000001; if (scale)
var x = setupLength * bone.a, y = setupLength * bone.c; lengths[i] = 0;
var length_1 = Math.sqrt(x * x + y * y); spaces[++i] = 0;
if (scale) }
lengths[i] = length_1; else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength; var x = setupLength * bone.a, y = setupLength * bone.c;
var length_1 = Math.sqrt(x * x + y * y);
if (scale)
lengths[i] = length_1;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
}
} }
} }
else { else {
@ -3281,6 +3286,7 @@ var spine;
PathConstraint.NONE = -1; PathConstraint.NONE = -1;
PathConstraint.BEFORE = -2; PathConstraint.BEFORE = -2;
PathConstraint.AFTER = -3; PathConstraint.AFTER = -3;
PathConstraint.epsilon = 0.00001;
return PathConstraint; return PathConstraint;
}()); }());
spine.PathConstraint = PathConstraint; spine.PathConstraint = PathConstraint;

File diff suppressed because one or more lines are too long

View File

@ -681,6 +681,7 @@ declare module spine {
static NONE: number; static NONE: number;
static BEFORE: number; static BEFORE: number;
static AFTER: number; static AFTER: number;
static epsilon: number;
data: PathConstraintData; data: PathConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Slot; target: Slot;

View File

@ -2969,13 +2969,18 @@ var spine;
for (var i = 0, n = spacesCount - 1; i < n;) { for (var i = 0, n = spacesCount - 1; i < n;) {
var bone = bones[i]; var bone = bones[i];
var setupLength = bone.data.length; var setupLength = bone.data.length;
if (setupLength == 0) if (setupLength < PathConstraint.epsilon) {
setupLength = 0.0000001; if (scale)
var x = setupLength * bone.a, y = setupLength * bone.c; lengths[i] = 0;
var length_1 = Math.sqrt(x * x + y * y); spaces[++i] = 0;
if (scale) }
lengths[i] = length_1; else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength; var x = setupLength * bone.a, y = setupLength * bone.c;
var length_1 = Math.sqrt(x * x + y * y);
if (scale)
lengths[i] = length_1;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
}
} }
} }
else { else {
@ -3281,6 +3286,7 @@ var spine;
PathConstraint.NONE = -1; PathConstraint.NONE = -1;
PathConstraint.BEFORE = -2; PathConstraint.BEFORE = -2;
PathConstraint.AFTER = -3; PathConstraint.AFTER = -3;
PathConstraint.epsilon = 0.00001;
return PathConstraint; return PathConstraint;
}()); }());
spine.PathConstraint = PathConstraint; spine.PathConstraint = PathConstraint;

File diff suppressed because one or more lines are too long

View File

@ -681,6 +681,7 @@ declare module spine {
static NONE: number; static NONE: number;
static BEFORE: number; static BEFORE: number;
static AFTER: number; static AFTER: number;
static epsilon: number;
data: PathConstraintData; data: PathConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Slot; target: Slot;

View File

@ -2969,13 +2969,18 @@ var spine;
for (var i = 0, n = spacesCount - 1; i < n;) { for (var i = 0, n = spacesCount - 1; i < n;) {
var bone = bones[i]; var bone = bones[i];
var setupLength = bone.data.length; var setupLength = bone.data.length;
if (setupLength == 0) if (setupLength < PathConstraint.epsilon) {
setupLength = 0.0000001; if (scale)
var x = setupLength * bone.a, y = setupLength * bone.c; lengths[i] = 0;
var length_1 = Math.sqrt(x * x + y * y); spaces[++i] = 0;
if (scale) }
lengths[i] = length_1; else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength; var x = setupLength * bone.a, y = setupLength * bone.c;
var length_1 = Math.sqrt(x * x + y * y);
if (scale)
lengths[i] = length_1;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
}
} }
} }
else { else {
@ -3281,6 +3286,7 @@ var spine;
PathConstraint.NONE = -1; PathConstraint.NONE = -1;
PathConstraint.BEFORE = -2; PathConstraint.BEFORE = -2;
PathConstraint.AFTER = -3; PathConstraint.AFTER = -3;
PathConstraint.epsilon = 0.00001;
return PathConstraint; return PathConstraint;
}()); }());
spine.PathConstraint = PathConstraint; spine.PathConstraint = PathConstraint;

File diff suppressed because one or more lines are too long

View File

@ -681,6 +681,7 @@ declare module spine {
static NONE: number; static NONE: number;
static BEFORE: number; static BEFORE: number;
static AFTER: number; static AFTER: number;
static epsilon: number;
data: PathConstraintData; data: PathConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
target: Slot; target: Slot;

View File

@ -2969,13 +2969,18 @@ var spine;
for (var i = 0, n = spacesCount - 1; i < n;) { for (var i = 0, n = spacesCount - 1; i < n;) {
var bone = bones[i]; var bone = bones[i];
var setupLength = bone.data.length; var setupLength = bone.data.length;
if (setupLength == 0) if (setupLength < PathConstraint.epsilon) {
setupLength = 0.0000001; if (scale)
var x = setupLength * bone.a, y = setupLength * bone.c; lengths[i] = 0;
var length_1 = Math.sqrt(x * x + y * y); spaces[++i] = 0;
if (scale) }
lengths[i] = length_1; else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength; var x = setupLength * bone.a, y = setupLength * bone.c;
var length_1 = Math.sqrt(x * x + y * y);
if (scale)
lengths[i] = length_1;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length_1 / setupLength;
}
} }
} }
else { else {
@ -3281,6 +3286,7 @@ var spine;
PathConstraint.NONE = -1; PathConstraint.NONE = -1;
PathConstraint.BEFORE = -2; PathConstraint.BEFORE = -2;
PathConstraint.AFTER = -3; PathConstraint.AFTER = -3;
PathConstraint.epsilon = 0.00001;
return PathConstraint; return PathConstraint;
}()); }());
spine.PathConstraint = PathConstraint; spine.PathConstraint = PathConstraint;

File diff suppressed because one or more lines are too long

View File

@ -31,6 +31,7 @@
module spine { module spine {
export class PathConstraint implements Constraint { export class PathConstraint implements Constraint {
static NONE = -1; static BEFORE = -2; static AFTER = -3; static NONE = -1; static BEFORE = -2; static AFTER = -3;
static epsilon = 0.00001;
data: PathConstraintData; data: PathConstraintData;
bones: Array<Bone>; bones: Array<Bone>;
@ -81,11 +82,15 @@ module spine {
for (let i = 0, n = spacesCount - 1; i < n;) { for (let i = 0, n = spacesCount - 1; i < n;) {
let bone = bones[i]; let bone = bones[i];
let setupLength = bone.data.length; let setupLength = bone.data.length;
if (setupLength == 0) setupLength = 0.0000001; if (setupLength < PathConstraint.epsilon) {
let x = setupLength * bone.a, y = setupLength * bone.c; if (scale) lengths[i] = 0;
let length = Math.sqrt(x * x + y * y); spaces[++i] = 0;
if (scale) lengths[i] = length; } else {
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength; let x = setupLength * bone.a, y = setupLength * bone.c;
let length = Math.sqrt(x * x + y * y);
if (scale) lengths[i] = length;
spaces[++i] = (lengthSpacing ? setupLength + spacing : spacing) * length / setupLength;
}
} }
} else { } else {
for (let i = 1; i < spacesCount; i++) for (let i = 1; i < spacesCount; i++)

View File

@ -110,9 +110,9 @@ Shader "Spine/SkeletonGraphic Tint Black (Premultiply Alpha)"
clip (texColor.a - 0.001); clip (texColor.a - 0.001);
#endif #endif
return (texColor * IN.color) + float4(((1-texColor.rgb) * (_Black.rgb + float3(IN.uv1.r, IN.uv1.g, IN.uv2.r)) * texColor.a*_Color.a*i.vertexColor.a), 0); return (texColor * IN.color) + float4(((1-texColor.rgb) * (_Black.rgb + float3(IN.uv1.r, IN.uv1.g, IN.uv2.r)) * texColor.a * _Color.a * IN.color.a), 0);
} }
ENDCG ENDCG
} }
} }
} }