#pragma once #include #include #include "SimpleShader.h" #include "Transform.h" #include "Camera.h" #include "Lights.h" class Material { public: Material( DirectX::XMFLOAT3 _tint, float _roughness, std::shared_ptr _vertexShader, std::shared_ptr _pixelShader); ~Material(); void Activate( Transform* _transform, std::shared_ptr _camera, DirectX::XMFLOAT3 _ambient, std::vector _lights); DirectX::XMFLOAT3 GetTint(); float GetRoughness(); std::shared_ptr GetVertexShader(); std::shared_ptr GetPixelShader(); void SetTint(DirectX::XMFLOAT3 _tint); void SetRoughness(float _roughness); void SetVertexShader(std::shared_ptr _vertexShader); void SetPixelShader(std::shared_ptr _pixelShader); void PushSampler(std::string _name, Microsoft::WRL::ComPtr _sampler); void PushTexture(std::string _name, Microsoft::WRL::ComPtr _texture); private: DirectX::XMFLOAT3 tint; float roughness; std::shared_ptr vertexShader; std::shared_ptr pixelShader; std::unordered_map> samplers; std::unordered_map> textures; };