7 #include <ThirdParty/Vulkan/Include/vulkan/vulkan.h> 14 #include <ThirdParty/EASTL-master/include/EASTL/vector.h> 20 class VulkanMaterial :
public Material
29 static VkDescriptorSetLayout CreateMaterialDescriptorSetLayout(VulkanLogicalDevice* device);
31 VulkanMaterial(
const aiScene* scene, uint32_t materialIndex, eastl::string modelName);
41 VkDescriptorSet CreateMaterialDescriptorSet(
size_t threadID,
size_t pipelineID,
size_t set, VkDescriptorSetLayout layout);
50 VkDescriptorSet GetMaterialDescriptorSet(
size_t threadID,
size_t pipelineID,
size_t set);
56 virtual void SetDiffuseTexture(eastl::shared_ptr<Texture> diffuseTexture);
62 virtual void SetBumpMapTexture(eastl::shared_ptr<Texture> bumpMapTexture);
68 virtual void SetSpecularTexture(eastl::shared_ptr<Texture> specularTexture);
71 eastl::unique_ptr<VulkanBuffer> materialDataBuffer_;
73 eastl::vector<eastl::vector<eastl::vector<VkDescriptorSet>>> materialDescriptorSets_;
75 virtual void UpdateMaterialData();
77 friend VulkanRenderer;
79 static VulkanRenderer* renderer_;
80 static VulkanLogicalDevice* device_;
81 static VkCommandPool commandPool_;
82 static VmaAllocator allocator_;
83 static VulkanDescriptorPool* descriptorPool_;
85 static void InitMaterialData(VulkanRenderer* renderer, VulkanLogicalDevice* device, VulkanDescriptorPool* descriptorPool, VmaAllocator allocator);
89 #endif // USING_VULKAN