70 lines
1.5 KiB
C++
70 lines
1.5 KiB
C++
#ifndef PBRBASETEXTURE_H
|
||
#define PBRBASETEXTURE_H
|
||
|
||
/// todo: 分离为单独的PBR命名空间
|
||
#include "glTFModel_Marco.h"
|
||
|
||
#include "glTFTexture.h"
|
||
|
||
#include <glm/glm.hpp>
|
||
|
||
GLTFLOADER_NAMESPACE_BEGIN
|
||
|
||
/// @brief todo:拆分texture基类摆脱gltf限制
|
||
class PbrBaseTexture
|
||
{
|
||
public:
|
||
PbrBaseTexture();
|
||
~PbrBaseTexture();
|
||
|
||
void setBaseColorTexture(glTFTexture* value);
|
||
glTFTexture* getBaseColorTexture();
|
||
|
||
void setBaseColorFactor(glm::vec4 value);
|
||
glm::vec4 getBaseColorFactor();
|
||
|
||
void setNormalTexture(glTFTexture* value);
|
||
glTFTexture* getNormalTexture();
|
||
|
||
void setMetallicRoughnessTexture(glTFTexture* value);
|
||
glTFTexture* getMetalicRoughnessTexture();
|
||
|
||
void setMetallicFactor(float value);
|
||
float getMetallicFactor();
|
||
|
||
void setRoughnessFactor(float value);
|
||
float getRoughnessFactor();
|
||
|
||
void setEmissiveTexture(glTFTexture* value);
|
||
glTFTexture* getEmissiveTexture();
|
||
|
||
void setEmissiveFactor(glm::vec4 value);
|
||
glm::vec4 getEmissiveFactor();
|
||
|
||
void setOcclusionTexture(glTFTexture* value);
|
||
glTFTexture* getOcclusionTexture();
|
||
|
||
private:
|
||
|
||
glTFTexture* m_baseColorTexture = nullptr;
|
||
glm::vec4 m_baseColorFactor = glm::vec4(1.0f);
|
||
|
||
glTFTexture* m_normalTexture = nullptr;
|
||
|
||
glTFTexture* m_metallicRoughnessTexture = nullptr;
|
||
float m_metallicFactor = 1.0f;
|
||
float m_roughnessFactor = 1.0f;
|
||
|
||
glTFTexture* m_emissiveTexture = nullptr;
|
||
glm::vec4 m_emissiveFactor = glm::vec4(1.0f);
|
||
|
||
glTFTexture* m_occlusionTexture = nullptr;
|
||
|
||
};
|
||
|
||
|
||
|
||
GLTFLOADER_NAMESPACE_END
|
||
|
||
#endif // !PBRBASETEXTURE_H
|