Commit 08ec1bee authored by Lázár Bence Kis's avatar Lázár Bence Kis
Browse files

Skinning unlit shader node fixed

parent 520182a0
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -928,14 +928,17 @@ void ShaderGraph::CosineNode::add_code(StagesCode &code, Stage stage) const {
void ShaderGraph::LinearBlendSkinningUnlitNode::add_code(StagesCode &code, Stage stage) const {
    INVARIANT(stage == Stage::VERTEX);

    auto decl = R"(layout(std140) uniform BoneMatrices {
    auto decl = R"(layout(std140, binding = 0) uniform BoneMatrices {
    mat4 bones[)" + std::to_string(m_num_of_joints) + R"(];
};
layout(std140, binding = 1) uniform InverseMatrices {
    mat4 inverseBindMatrices[)" + std::to_string(m_num_of_joints) + R"(];
};

vec3 get_skinned_position(vec3 position, vec4 weights, uvec4 bone_indices) {
    vec3 result = vec3(0);
    for (int i = 0; i < 4; ++i) // We assume 4 weights per vertex.
        result += vec3(weights[i] * bones[bone_indices[i]] * vec4(position, 1));
        result += vec3(weights[i] * bones[bone_indices[i]] * inverseBindMatrices[bone_indices[i]] * vec4(position, 1));
    return result;
})";