|
@@ -7,6 +7,7 @@ class Skin extends hxsl.Shader {
|
|
@input var input : {
|
|
@input var input : {
|
|
var position : Vec3;
|
|
var position : Vec3;
|
|
var normal : Vec3;
|
|
var normal : Vec3;
|
|
|
|
+ var tangent : Vec3;
|
|
var weights : Vec3;
|
|
var weights : Vec3;
|
|
var indexes : Bytes4;
|
|
var indexes : Bytes4;
|
|
};
|
|
};
|
|
@@ -14,14 +15,12 @@ class Skin extends hxsl.Shader {
|
|
var relativePosition : Vec3;
|
|
var relativePosition : Vec3;
|
|
var transformedPosition : Vec3;
|
|
var transformedPosition : Vec3;
|
|
var transformedNormal : Vec3;
|
|
var transformedNormal : Vec3;
|
|
|
|
+ var transformedTangent : Vec4;
|
|
|
|
|
|
@const var MaxBones : Int;
|
|
@const var MaxBones : Int;
|
|
@ignore @param var bonesMatrixes : Array<Mat3x4,MaxBones>;
|
|
@ignore @param var bonesMatrixes : Array<Mat3x4,MaxBones>;
|
|
|
|
|
|
function vertex() {
|
|
function vertex() {
|
|
- #if floatSkinIndexes
|
|
|
|
- error("TODO : access bonesMatrixes as vertex array");
|
|
|
|
- #else
|
|
|
|
transformedPosition =
|
|
transformedPosition =
|
|
(relativePosition * bonesMatrixes[input.indexes.x]) * input.weights.x +
|
|
(relativePosition * bonesMatrixes[input.indexes.x]) * input.weights.x +
|
|
(relativePosition * bonesMatrixes[input.indexes.y]) * input.weights.y +
|
|
(relativePosition * bonesMatrixes[input.indexes.y]) * input.weights.y +
|
|
@@ -30,7 +29,11 @@ class Skin extends hxsl.Shader {
|
|
(input.normal * mat3(bonesMatrixes[input.indexes.x])) * input.weights.x +
|
|
(input.normal * mat3(bonesMatrixes[input.indexes.x])) * input.weights.x +
|
|
(input.normal * mat3(bonesMatrixes[input.indexes.y])) * input.weights.y +
|
|
(input.normal * mat3(bonesMatrixes[input.indexes.y])) * input.weights.y +
|
|
(input.normal * mat3(bonesMatrixes[input.indexes.z])) * input.weights.z);
|
|
(input.normal * mat3(bonesMatrixes[input.indexes.z])) * input.weights.z);
|
|
- #end
|
|
|
|
|
|
+ transformedTangent = vec4(normalize(
|
|
|
|
+ (input.tangent.xyz * mat3(bonesMatrixes[input.indexes.x])) * input.weights.x +
|
|
|
|
+ (input.tangent.xyz * mat3(bonesMatrixes[input.indexes.y])) * input.weights.y +
|
|
|
|
+ (input.tangent.xyz * mat3(bonesMatrixes[input.indexes.z])) * input.weights.z
|
|
|
|
+ ), transformedTangent.w);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|