#pragma once #include "BsCorePrerequisites.h" namespace BansheeEngine { /** * @brief Describes a single GPU program data (e.g. int, float, Vector2) parameter. */ struct GpuParamDataDesc { String name; UINT32 elementSize; /**< In multiples of 4 bytes. */ UINT32 arraySize; UINT32 arrayElementStride; /**< In multiples of 4 bytes. */ GpuParamDataType type; UINT32 paramBlockSlot; UINT32 gpuMemOffset; /**< In multiples of 4 bytes, or index for parameters not in a buffer. */ UINT32 cpuMemOffset; /**< In multiples of 4 bytes. */ }; /** * @brief Describes a single GPU program object (e.g. texture, sampler state) parameter. */ struct GpuParamObjectDesc { String name; GpuParamObjectType type; UINT32 slot; }; /** * @brief Describes a GPU program parameter block (collection of GPU program data parameters). */ struct GpuParamBlockDesc { String name; UINT32 slot; UINT32 blockSize; /**< In multiples of 4 bytes. */ bool isShareable; }; /** * @brief Contains all parameter information for a GPU program, including data and object parameters, * plus parameter blocks. */ struct GpuParamDesc { Map paramBlocks; Map params; Map samplers; Map textures; Map buffers; }; }