###########################################################
Checking the Availability of Needed Input Geometry Channels
###########################################################

A material method allows to query about the mesh channels it uses: ``RED::IMaterial::GetUsedChannels``.

This function returns a list of ``RED::MESH_CHANNEL`` needed by the material shaders. The list data are grouped by ``RED::LayerSet``.

.. code:: cpp

    typedef RED::Vector< RED::MESH_CHANNEL > ChannelVector;
    RED::Map< RED::LayerSet, ChannelVector > channels;

    // Retrieve the mesh channel list from the material:
    RC_TEST( imat->GetUsedChannels( channels ) );

    // Get the channels for the 'all layer' layerset:
    ChannelVector* chan = channels.find( RED::LayerSet::ALL_LAYERS );

    bool usetex0 = false;
    if( chan != NULL )
    {
        // Loop through the needed mesh channels and search for the RED::MCL_TEX0 channel:
        for( int i = 0; i < chan->size(); ++i )
        {
            usetex0 = usetex0 || ( (*chan)[i] == RED::MCL_TEX0 );
        }
    }

    if( usetex0 )
    {
        // Be sure this channel is filled in your geometry...
    }

In this sample, the channel list was retrieved from the material. Then we looped through it to find if the material needs the ``RED::MCL_TEX0`` channel. 