diff --git a/kraken/KRMeshManager.cpp b/kraken/KRMeshManager.cpp index 41ed40a..4c78d1c 100755 --- a/kraken/KRMeshManager.cpp +++ b/kraken/KRMeshManager.cpp @@ -338,75 +338,6 @@ void KRMeshManager::bindVBO(VkCommandBuffer& commandBuffer, KRDataBlock &data, K bindVBO(commandBuffer, vbo_data, lodCoverage); } -void KRMeshManager::configureAttribs(__int32_t attributes) -{ - GLsizei data_size = (GLsizei)KRMesh::VertexSizeForAttributes(attributes); - - if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_VERTEX_SHORT)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_VERTEX)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_VERTEX, 3, GL_SHORT, GL_TRUE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_VERTEX_SHORT, attributes)))); - } else if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_VERTEX)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_VERTEX)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_VERTEX, 3, GL_FLOAT, GL_FALSE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_VERTEX, attributes)))); - } else { - GLDEBUG(glDisableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_VERTEX)); - } - - if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_NORMAL_SHORT)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_NORMAL)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_NORMAL, 3, GL_SHORT, GL_TRUE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_NORMAL_SHORT, attributes)))); - } else if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_NORMAL)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_NORMAL)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_NORMAL, 3, GL_FLOAT, GL_FALSE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_NORMAL, attributes)))); - } else { - GLDEBUG(glDisableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_NORMAL)); - } - - if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_TANGENT_SHORT)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_TANGENT)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_TANGENT, 3, GL_SHORT, GL_TRUE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_TANGENT_SHORT, attributes)))); - } else if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_TANGENT)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_TANGENT)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_TANGENT, 3, GL_FLOAT, GL_FALSE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_TANGENT, attributes)))); - } else { - GLDEBUG(glDisableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_TANGENT)); - } - - if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_TEXUVA_SHORT)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_TEXUVA)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_TEXUVA, 2, GL_SHORT, GL_TRUE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_TEXUVA_SHORT, attributes)))); - } else if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_TEXUVA)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_TEXUVA)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_TEXUVA, 2, GL_FLOAT, GL_FALSE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_TEXUVA, attributes)))); - } else { - GLDEBUG(glDisableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_TEXUVA)); - } - - if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_TEXUVB_SHORT)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_TEXUVB)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_TEXUVB, 2, GL_SHORT, GL_TRUE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_TEXUVB_SHORT, attributes)))); - } else if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_TEXUVB)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_TEXUVB)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_TEXUVB, 2, GL_FLOAT, GL_FALSE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_TEXUVB, attributes)))); - } else { - GLDEBUG(glDisableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_TEXUVB)); - } - - if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_BONEINDEXES)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_BONEINDEXES)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_BONEINDEXES, 4, GL_UNSIGNED_BYTE, GL_FALSE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_BONEINDEXES, attributes)))); - } else { - GLDEBUG(glDisableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_BONEINDEXES)); - } - - if(KRMesh::has_vertex_attribute(attributes, KRMesh::KRENGINE_ATTRIB_BONEWEIGHTS)) { - GLDEBUG(glEnableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_BONEWEIGHTS)); - GLDEBUG(glVertexAttribPointer(KRMesh::KRENGINE_ATTRIB_BONEWEIGHTS, 4, GL_FLOAT, GL_FALSE, data_size, BUFFER_OFFSET(KRMesh::AttributeOffset(KRMesh::KRENGINE_ATTRIB_BONEWEIGHTS, attributes)))); - } else { - GLDEBUG(glDisableVertexAttribArray(KRMesh::KRENGINE_ATTRIB_BONEWEIGHTS)); - } -} - long KRMeshManager::getMemUsed() { return m_vboMemUsed; @@ -482,22 +413,22 @@ KRDataBlock &KRMeshManager::getRandomParticles() vertex_data[iVertex].vertex.x = (float)(rand() % 2000) / 1000.0f - 1000.0f; vertex_data[iVertex].vertex.y = (float)(rand() % 2000) / 1000.0f - 1000.0f; vertex_data[iVertex].vertex.z = (float)(rand() % 2000) / 1000.0f - 1000.0f; - vertex_data[iVertex].uva.u = -0.5f; - vertex_data[iVertex].uva.v = -inscribed_circle_radius; + vertex_data[iVertex].uva.x = -0.5f; + vertex_data[iVertex].uva.y = -inscribed_circle_radius; iVertex++; vertex_data[iVertex].vertex.x = vertex_data[iVertex-1].vertex.x; vertex_data[iVertex].vertex.y = vertex_data[iVertex-1].vertex.y; vertex_data[iVertex].vertex.z = vertex_data[iVertex-1].vertex.z; - vertex_data[iVertex].uva.u = 0.5f; - vertex_data[iVertex].uva.v = -inscribed_circle_radius; + vertex_data[iVertex].uva.x = 0.5f; + vertex_data[iVertex].uva.y = -inscribed_circle_radius; iVertex++; vertex_data[iVertex].vertex.x = vertex_data[iVertex-1].vertex.x; vertex_data[iVertex].vertex.y = vertex_data[iVertex-1].vertex.y; vertex_data[iVertex].vertex.z = vertex_data[iVertex-1].vertex.z; - vertex_data[iVertex].uva.u = 0.0f; - vertex_data[iVertex].uva.v = -inscribed_circle_radius + equilateral_triangle_height; + vertex_data[iVertex].uva.x = 0.0f; + vertex_data[iVertex].uva.y = -inscribed_circle_radius + equilateral_triangle_height; iVertex++; } m_randomParticleVertexData.unlock(); @@ -544,9 +475,6 @@ KRMeshManager::KRVBOData::KRVBOData() m_data = NULL; m_index_data = NULL; m_vertex_attrib_flags = 0; - m_vbo_handle = -1; - m_vbo_handle_indexes = -1; - m_vao_handle = -1; m_size = 0; m_last_frame_used = 0; @@ -588,10 +516,6 @@ void KRMeshManager::KRVBOData::init(KRMeshManager *manager, KRDataBlock &data, K m_index_data = &index_data; m_vertex_attrib_flags = vertex_attrib_flags; - m_vbo_handle = -1; - m_vbo_handle_indexes = -1; - m_vao_handle = -1; - m_size = m_data->getSize(); if(m_index_data != NULL) { m_size += m_index_data->getSize(); diff --git a/kraken/KRMeshManager.h b/kraken/KRMeshManager.h index 04531b6..383bece 100755 --- a/kraken/KRMeshManager.h +++ b/kraken/KRMeshManager.h @@ -119,10 +119,7 @@ public: private: KRMeshManager *m_manager; int m_vertex_attrib_flags; - GLuint m_vbo_handle; - GLuint m_vbo_handle_indexes; - GLuint m_vao_handle; - GLsizeiptr m_size; + long m_size; long m_last_frame_used; float m_last_frame_max_lod_coverage; @@ -156,26 +153,13 @@ public: long getMemUsed(); long getMemActive(); - static void configureAttribs(__int32_t attributes); - typedef struct { - GLfloat x; - GLfloat y; - GLfloat z; - } Vector3D; - - typedef struct { - GLfloat u; - GLfloat v; - } TexCoord; - - typedef struct { - Vector3D vertex; - TexCoord uva; + Vector3 vertex; + Vector2 uva; } RandomParticleVertexData; typedef struct { - Vector3D vertex; + Vector3 vertex; } VolumetricLightingVertexData; diff --git a/kraken/KRPointLight.cpp b/kraken/KRPointLight.cpp index 2a31dc5..0f107af 100755 --- a/kraken/KRPointLight.cpp +++ b/kraken/KRPointLight.cpp @@ -130,7 +130,6 @@ void KRPointLight::render(VkCommandBuffer& commandBuffer, KRCamera *pCamera, std #if GL_OES_vertex_array_object GLDEBUG(glBindVertexArrayOES(0)); #endif - m_pContext->getMeshManager()->configureAttribs(1 << KRMesh::KRENGINE_ATTRIB_VERTEX); // Render sphere of light's influence generateMesh();