fix morph weights lookup
This commit is contained in:
parent
8116729822
commit
3c0f580f69
|
@ -7,22 +7,21 @@ uniform vec4 morphWeights[8];
|
||||||
void getMorphedVertex(vec2 uvCoord, inout vec3 A){
|
void getMorphedVertex(vec2 uvCoord, inout vec3 A){
|
||||||
for(int i = 0; i<8; i++ )
|
for(int i = 0; i<8; i++ )
|
||||||
{
|
{
|
||||||
vec4 tempCoordX = vec4( uvCoord.x);
|
vec4 tempCoordY = vec4( uvCoord.y - (i * 4) * morphDataDim.y,
|
||||||
vec4 tempCoordY = vec4( uvCoord.y - (i) * morphDataDim.y,
|
uvCoord.y - (i * 4 + 1) * morphDataDim.y,
|
||||||
uvCoord.y - (i + 1) * morphDataDim.y,
|
uvCoord.y - (i * 4 + 2) * morphDataDim.y,
|
||||||
uvCoord.y - (i + 2) * morphDataDim.y,
|
uvCoord.y - (i * 4 + 3) * morphDataDim.y);
|
||||||
uvCoord.y - (i + 3) * morphDataDim.y);
|
|
||||||
|
|
||||||
vec3 morph = texture(morphDataPos, vec2(tempCoordX.x, tempCoordY.x)).rgb * morphScaleOffset.x + morphScaleOffset.y;
|
vec3 morph = texture(morphDataPos, vec2(uvCoord.x, tempCoordY.x)).rgb * morphScaleOffset.x + morphScaleOffset.y;
|
||||||
A += morphWeights[i].x * morph;
|
A += morphWeights[i].x * morph;
|
||||||
|
|
||||||
morph = texture(morphDataPos, vec2(tempCoordX.y, tempCoordY.y)).rgb * morphScaleOffset.x + morphScaleOffset.y;
|
morph = texture(morphDataPos, vec2(uvCoord.x, tempCoordY.y)).rgb * morphScaleOffset.x + morphScaleOffset.y;
|
||||||
A += morphWeights[i].y * morph;
|
A += morphWeights[i].y * morph;
|
||||||
|
|
||||||
morph = texture(morphDataPos, vec2(tempCoordX.z, tempCoordY.z)).rgb * morphScaleOffset.x + morphScaleOffset.y;
|
morph = texture(morphDataPos, vec2(uvCoord.x, tempCoordY.z)).rgb * morphScaleOffset.x + morphScaleOffset.y;
|
||||||
A += morphWeights[i].z * morph;
|
A += morphWeights[i].z * morph;
|
||||||
|
|
||||||
morph = texture(morphDataPos, vec2(tempCoordX.w, tempCoordY.w)).rgb * morphScaleOffset.x + morphScaleOffset.y;
|
morph = texture(morphDataPos, vec2(uvCoord.x, tempCoordY.w)).rgb * morphScaleOffset.x + morphScaleOffset.y;
|
||||||
A += morphWeights[i].w * morph;
|
A += morphWeights[i].w * morph;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -31,22 +30,21 @@ void getMorphedNormal(vec2 uvCoord, vec3 oldNor, inout vec3 morphNor){
|
||||||
|
|
||||||
for(int i = 0; i<8; i++ )
|
for(int i = 0; i<8; i++ )
|
||||||
{
|
{
|
||||||
vec4 tempCoordX = vec4( uvCoord.x);
|
vec4 tempCoordY = vec4( uvCoord.y - (i * 4) * morphDataDim.y,
|
||||||
vec4 tempCoordY = vec4( uvCoord.y - (i) * morphDataDim.y,
|
uvCoord.y - (i * 4 + 1) * morphDataDim.y,
|
||||||
uvCoord.y - (i + 1) * morphDataDim.y,
|
uvCoord.y - (i * 4 + 2) * morphDataDim.y,
|
||||||
uvCoord.y - (i + 2) * morphDataDim.y,
|
uvCoord.y - (i * 4 + 3) * morphDataDim.y);
|
||||||
uvCoord.y - (i + 3) * morphDataDim.y);
|
|
||||||
|
|
||||||
vec3 norm = oldNor + morphWeights[i].x * (texture(morphDataNor, vec2(tempCoordX.x, tempCoordY.x)).rgb * 2.0 - 1.0);
|
vec3 norm = oldNor + morphWeights[i].x * (texture(morphDataNor, vec2(uvCoord.x, tempCoordY.x)).rgb * 2.0 - 1.0);
|
||||||
morphNor += norm;
|
morphNor += norm;
|
||||||
|
|
||||||
norm = oldNor + morphWeights[i].y * (texture(morphDataNor, vec2(tempCoordX.y, tempCoordY.y)).rgb * 2.0 - 1.0);
|
norm = oldNor + morphWeights[i].y * (texture(morphDataNor, vec2(uvCoord.x, tempCoordY.y)).rgb * 2.0 - 1.0);
|
||||||
morphNor += norm;
|
morphNor += norm;
|
||||||
|
|
||||||
norm = oldNor + morphWeights[i].z * (texture(morphDataNor, vec2(tempCoordX.z, tempCoordY.z)).rgb * 2.0 - 1.0);
|
norm = oldNor + morphWeights[i].z * (texture(morphDataNor, vec2(uvCoord.x, tempCoordY.z)).rgb * 2.0 - 1.0);
|
||||||
morphNor += norm;
|
morphNor += norm;
|
||||||
|
|
||||||
norm = oldNor + morphWeights[i].w * (texture(morphDataNor, vec2(tempCoordX.w, tempCoordY.w)).rgb * 2.0 - 1.0);
|
norm = oldNor + morphWeights[i].w * (texture(morphDataNor, vec2(uvCoord.x, tempCoordY.w)).rgb * 2.0 - 1.0);
|
||||||
morphNor += norm;
|
morphNor += norm;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue