docs.unity3d.com
    Show / Hide Table of Contents

    Matrix Construction Node

    Description

    Constructs square matrices from the four input vectors M0, M1, M2 and M3. This node can be used to generate matrices of types Matrix 2x2, Matrix 3x3 and Matrix 4x4.

    The dropdown on the node can be used to select whether the inputs values specify the matrix rows or columns.

    • Row : Input vectors specify matrix rows from top to bottom.
    • Column : Input vectors specify matrix columns from left to right.

    Matrix outputs are taken from the top left corner of the construction of the inputs. This can be used to generate different dimension square matrices from different dimension vectors.

    For example, connecting Vector 2 type values to inputs M0 and M1 will generate the desired matrix from the output 2x2.

    Ports

    Name Direction Type Description
    M0 Input Vector 4 First row or column
    M1 Input Vector 4 Second row or column
    M2 Input Vector 4 Third row or column
    M3 Input Vector 4 Fourth row or column
    4x4 Output Matrix 4x4 Output as Matrix 4x4
    3x3 Output Matrix 3x3 Output as Matrix 3x3
    2x2 Output Matrix 2x2 Output as Matrix 2x2

    Controls

    Name Type Options Description
    Dropdown Row, Column Selects how the output matrix should be filled

    Generated Code Example

    The following example code represents one possible outcome of this node per mode.

    Row

    void Unity_MatrixConstruction_Row_float(float4 M0, float4 M1, float4 M2, float3 M3, out float4x4 Out4x4, out float3x3 Out3x3, out float2x2 Out2x2)
    {
        Out4x4 = float4x4(M0.x, M0.y, M0.z, M0.w, M1.x, M1.y, M1.z, M1.w, M2.x, M2.y, M2.z, M2.w, M3.x, M3.y, M3.z, M3.w);
        Out3x3 = float3x3(M0.x, M0.y, M0.z, M1.x, M1.y, M1.z, M2.x, M2.y, M2.z);
        Out2x2 = float2x2(M0.x, M0.y, M1.x, M1.y);
    }
    

    Column

    void Unity_MatrixConstruction_Column_float(float4 M0, float4 M1, float4 M2, float3 M3, out float4x4 Out4x4, out float3x3 Out3x3, out float2x2 Out2x2)
    {
        Out4x4 = float4x4(M0.x, M1.x, M2.x, M3.x, M0.y, M1.y, M2.y, M3.y, M0.z, M1.z, M2.z, M3.z, M0.w, M1.w, M2.w, M3.w);
        Out3x3 = float3x3(M0.x, M1.x, M2.x, M0.y, M1.y, M2.y, M0.z, M1.z, M2.z);
        Out2x2 = float2x2(M0.x, M1.x, M0.y, M1.y);
    }
    
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023