
.. _program_listing_file_Resources_Shaders_hostDevice_bindings.hpp:

Program Listing for File bindings.hpp
=====================================

|exhale_lsh| :ref:`Return to documentation for file <file_Resources_Shaders_hostDevice_bindings.hpp>` (``Resources/Shaders/hostDevice/bindings.hpp``)

.. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS

.. code-block:: cpp

   #pragma once
   #include "GlobalValues.hpp"
   #include "host_device_shared.hpp"
   
   // define all texture unit offsets to all textures
   #define MODEL_TEXTURES_SLOT 0
   #define SKYBOX_TEXTURES_SLOT MODEL_TEXTURES_SLOT + MAX_TEXTURE_COUNT
   #define GBUFFER_TEXTURES_SLOT SKYBOX_TEXTURES_SLOT + 1// we have 1 skybox 3D texture
   #define D_LIGHT_SHADOW_TEXTURES_SLOT GBUFFER_TEXTURES_SLOT + G_BUFFER_SIZE
   // for the CSM now using 1 sampler array layer --> only one texture unit needed
   #define P_LIGHT_SHADOW_TEXTURES_SLOT D_LIGHT_SHADOW_TEXTURES_SLOT + 1
   #define NOISE_128D_TEXTURES_SLOT P_LIGHT_SHADOW_TEXTURES_SLOT + MAX_POINT_LIGHTS
   #define NOISE_32D_TEXTURES_SLOT NOISE_128D_TEXTURES_SLOT + 1
   #define NOISE_CELL_POSITIONS_SLOT NOISE_32D_TEXTURES_SLOT + 1
   #define RANDOM_NUMBERS_SLOT NOISE_CELL_POSITIONS_SLOT + NUM_CELL_POSITIONS
   
   // all image slots
   #define NOISE_128D_IMAGE_SLOT 0
   #define NOISE_32D_IMAGE_SLOT 1
   
   // storage buffer bindings
   #define STORAGE_BUFFER_MATERIAL_ID_BINDING 0
   #define UNIFORM_LIGHT_MATRICES_BINDING 1
