docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Example of a DOTS Instancing shader that accesses constant data

    In this example:

    • The metadata value for Color is 0x00001000.
    • The instance index is 5.
    • Data for instance 0 starts at address 0x1000.
    • The most significant bit is not set so data for instance 5 is at the same address as instance 0.

    Because the most significant bit is not set, the accessor macros that fall back to defaults don't access unity_DOTSInstanceData. This means that:

    • c0 will contain the value from unity_DOTSInstanceData address 0x1000.
    • c1 will contain the value of the regular material property Color, and cause a compile error if the Color property doesn't exist.
    • c2 will contain (1, 2, 3, 4) because that was passed as the explicit default value.
    void ExampleConstant()
    {
        // rawMetadataValue will contain 0x00001000
        uint rawMetadataValue = UNITY_DOTS_INSTANCED_METADATA_NAME(float4, Color);
        float4 c0 = UNITY_ACCESS_DOTS_INSTANCED_PROP(float4, Color);
        float4 c1 = UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_DEFAULT(float4, Color);
        float4 c2 = UNITY_ACCESS_DOTS_INSTANCED_PROP_WITH_CUSTOM_DEFAULT(float4, Color, float4(1, 2, 3, 4));
    }
    
    In This Article
    Back to top
    Copyright © 2025 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)