aboutsummaryrefslogtreecommitdiffstats
path: root/src/runtimerender/graphobjects/qssgrenderinstancetable.cpp
blob: 4de20d9edfcdc568e049eaab346fbdb840d2cfcb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

#include "qssgrenderinstancetable_p.h"

QMatrix4x4 QSSGRenderInstanceTable::getTransform(int index) const
{
    Q_ASSERT(index < instanceCount);
    // NOTE: table size can be bigger than instanceCount due to QQuick3DInstancing::instanceCountOverride
    Q_ASSERT(table.size() >= instanceStride * (index + 1));
    auto *entry = reinterpret_cast<const QSSGRenderInstanceTableEntry*>(table.constData() + index * instanceStride);

    QMatrix4x4 res;
    res.setRow(0, entry->row0);
    res.setRow(1, entry->row1);
    res.setRow(2, entry->row2);
    res.setRow(3, { 0, 0, 0, 1 });
    return res;
}