Fixed uniform buffer AO problem

This commit is contained in:
Antoine Pilote
2021-07-02 15:50:13 -04:00
parent 68d276c4b6
commit ca46e4e012
3 changed files with 49 additions and 26 deletions

View File

@@ -57,10 +57,10 @@ Material::Material(const glm::vec3 albedoColor)
{
glGenBuffers(1, &UBO);
glBindBuffer(GL_UNIFORM_BUFFER, UBO);
glBufferData(GL_UNIFORM_BUFFER, sizeof(UBOStructure), NULL, GL_STATIC_DRAW);
glBufferData(GL_UNIFORM_BUFFER, 128, NULL, GL_STATIC_DRAW);
glBindBuffer(GL_UNIFORM_BUFFER, 0);
data.m_AlbedoColor = myVec3{ albedoColor.r, albedoColor.g, albedoColor.b};
data.m_AlbedoColor = Vector3{ albedoColor.r, albedoColor.g, albedoColor.b};
m_Name = "New material";
@@ -90,7 +90,21 @@ void Material::Bind()
MaterialManager::Get()->CurrentlyBoundedMaterial = m_Name;
glBindBuffer(GL_UNIFORM_BUFFER, UBO);
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(UBOStructure), &data);
//glBufferSubData(GL_UNIFORM_BUFFER, 0, 4, &data.u_HasAlbedo);
//
//glBufferSubData(GL_UNIFORM_BUFFER, 16, 12, &data.m_AlbedoColor);
//
//glBufferSubData(GL_UNIFORM_BUFFER, 28, 4, &data.u_HasMetalness);
//glBufferSubData(GL_UNIFORM_BUFFER, 32, 4, &data.u_MetalnessValue);
//glBufferSubData(GL_UNIFORM_BUFFER, 36, 4, &data.u_HasRoughness);
//glBufferSubData(GL_UNIFORM_BUFFER, 40, 4, &data.u_RoughnessValue);
//
//glBufferSubData(GL_UNIFORM_BUFFER, 44, 4, &data.u_HasAO);
//glBufferSubData(GL_UNIFORM_BUFFER, 48, 4, &data.u_AOValue);
//glBufferSubData(GL_UNIFORM_BUFFER, 52, 4, &data.u_HasNormal);
//glBufferSubData(GL_UNIFORM_BUFFER, 56, 4, &data.u_HasDisplacement);
glBindBuffer(GL_UNIFORM_BUFFER, 0);
glBindBufferBase(GL_UNIFORM_BUFFER, 32, UBO);

View File

@@ -10,20 +10,22 @@ struct myVec3 {
float r;
float g;
float b;
float a;
};
struct UBOStructure {
int u_HasAlbedo;
myVec3 m_AlbedoColor;
uint32_t u_HasMetalness;
float padding;
float padding2;
float padding3;
glm::vec3 m_AlbedoColor;
int u_HasMetalness;
float u_MetalnessValue;
uint32_t u_HasRoughness;
int u_HasRoughness;
float u_RoughnessValue;
uint32_t u_HasAO;
int u_HasAO;
float u_AOValue;
uint32_t u_HasNormal;
uint32_t u_HasDisplacement;
int u_HasNormal;
int u_HasDisplacement;
};
class Material
@@ -39,10 +41,12 @@ public:
Ref<Texture> m_Normal;
Ref<Texture> m_Displacement;
UBOStructure data{
0, // has labedo
myVec3{0.f, 0.f, 0.f, 1.0f}, // m_AlbedoColor
0, // padding
0, // padding
0, // padding
glm::vec3{0.f, 0.f, 0.f}, // m_AlbedoColor
0, // u_HasMetalness
0.5f, // u_MetalnessValue
0, // u_HasRoughness