Загрузка карт фоновой и зеркальной составляющих
This commit is contained in:
		
							parent
							
								
									9c60da7665
								
							
						
					
					
						commit
						91c9072212
					
				| @ -88,6 +88,8 @@ class Model : public Node | |||||||
|         GLuint verteces_count; // Количество вершин
 |         GLuint verteces_count; // Количество вершин
 | ||||||
|         size_t first_index_byteOffset, indices_count; // Сдвиг в байтах для первого и количество индексов
 |         size_t first_index_byteOffset, indices_count; // Сдвиг в байтах для первого и количество индексов
 | ||||||
|         Texture texture_diffuse; // Диффузная текстура
 |         Texture texture_diffuse; // Диффузная текстура
 | ||||||
|  |         Texture texture_ambient; // Текстура фонового освщения
 | ||||||
|  |         Texture texture_specular; // Текстура зеркального отражения
 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #endif // MODEL_H
 | #endif // MODEL_H
 | ||||||
|  | |||||||
| @ -8,6 +8,8 @@ | |||||||
| 
 | 
 | ||||||
| enum TexType { | enum TexType { | ||||||
|     TEX_DIFFUSE, |     TEX_DIFFUSE, | ||||||
|  |     TEX_AMBIENT, | ||||||
|  |     TEX_SPECULAR, | ||||||
|     TEX_AVAILABLE_COUNT |     TEX_AVAILABLE_COUNT | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -11,6 +11,8 @@ layout(std140, binding = 1) uniform Material | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| uniform sampler2D tex_diffuse; | uniform sampler2D tex_diffuse; | ||||||
|  | uniform sampler2D tex_ambient; | ||||||
|  | uniform sampler2D tex_specular; | ||||||
| 
 | 
 | ||||||
| out vec4 color;  | out vec4 color;  | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -212,7 +212,7 @@ Model::Model(const Model& copy) : Node(copy), | |||||||
| vao(copy.vao),  | vao(copy.vao),  | ||||||
| verteces_count(copy.verteces_count), first_index_byteOffset(copy.first_index_byteOffset), indices_count(copy.indices_count),  | verteces_count(copy.verteces_count), first_index_byteOffset(copy.first_index_byteOffset), indices_count(copy.indices_count),  | ||||||
| vertex_vbo(copy.vertex_vbo), index_vbo(copy.index_vbo), normals_vbo(copy.normals_vbo), texCoords_vbo(copy.texCoords_vbo), | vertex_vbo(copy.vertex_vbo), index_vbo(copy.index_vbo), normals_vbo(copy.normals_vbo), texCoords_vbo(copy.texCoords_vbo), | ||||||
| texture_diffuse(copy.texture_diffuse),  | texture_diffuse(copy.texture_diffuse), texture_ambient(copy.texture_ambient), texture_specular(copy.texture_specular),  | ||||||
| material(copy.material) | material(copy.material) | ||||||
| { | { | ||||||
| 
 | 
 | ||||||
| @ -233,6 +233,8 @@ Model& Model::operator=(const Model& other) | |||||||
|     texCoords_vbo = other.texCoords_vbo; |     texCoords_vbo = other.texCoords_vbo; | ||||||
| 
 | 
 | ||||||
|     texture_diffuse = other.texture_diffuse; |     texture_diffuse = other.texture_diffuse; | ||||||
|  |     texture_ambient = other.texture_ambient; | ||||||
|  |     texture_specular = other.texture_specular; | ||||||
|      |      | ||||||
|     material = other.material; |     material = other.material; | ||||||
| 
 | 
 | ||||||
| @ -252,6 +254,9 @@ void Model::render(const GLuint &model_uniform, UBO &material_buffer) | |||||||
| 
 | 
 | ||||||
|     // Подключаем текстуры
 |     // Подключаем текстуры
 | ||||||
|     texture_diffuse.use(); |     texture_diffuse.use(); | ||||||
|  |     texture_ambient.use(); | ||||||
|  |     texture_specular.use(); | ||||||
|  |      | ||||||
| 
 | 
 | ||||||
|     // Загружаем данные о материале
 |     // Загружаем данные о материале
 | ||||||
|     material_buffer.load(&material, sizeof(material)); |     material_buffer.load(&material, sizeof(material)); | ||||||
| @ -383,5 +388,11 @@ void Model::set_texture(Texture& texture) | |||||||
|         case TEX_DIFFUSE: |         case TEX_DIFFUSE: | ||||||
|             texture_diffuse = texture; |             texture_diffuse = texture; | ||||||
|             break; |             break; | ||||||
|  |         case TEX_AMBIENT: | ||||||
|  |             texture_ambient = texture; | ||||||
|  |             break; | ||||||
|  |         case TEX_SPECULAR: | ||||||
|  |             texture_specular = texture; | ||||||
|  |             break; | ||||||
|     }; |     }; | ||||||
| } | } | ||||||
|  | |||||||
| @ -208,6 +208,10 @@ Scene loadOBJtoScene(const char* filename, const char* mtl_directory, const char | |||||||
|         // Текстуры
 |         // Текстуры
 | ||||||
|         Texture diffuse(TEX_DIFFUSE, texture_directory + materials[materials_ids[i]].diffuse_texname); |         Texture diffuse(TEX_DIFFUSE, texture_directory + materials[materials_ids[i]].diffuse_texname); | ||||||
|         s->set_texture(diffuse); |         s->set_texture(diffuse); | ||||||
|  |         Texture ambient(TEX_AMBIENT, texture_directory + materials[materials_ids[i]].ambient_texname); | ||||||
|  |         s->set_texture(ambient); | ||||||
|  |         Texture specular(TEX_SPECULAR, texture_directory + materials[materials_ids[i]].specular_texname); | ||||||
|  |         s->set_texture(specular); | ||||||
| 
 | 
 | ||||||
|         // Материал
 |         // Материал
 | ||||||
|         s->material.ka = glm::vec3(materials[materials_ids[i]].ambient[0],  materials[materials_ids[i]].ambient[1],  materials[materials_ids[i]].ambient[2]); |         s->material.ka = glm::vec3(materials[materials_ids[i]].ambient[0],  materials[materials_ids[i]].ambient[1],  materials[materials_ids[i]].ambient[2]); | ||||||
|  | |||||||
| @ -90,7 +90,7 @@ int main(void) | |||||||
|     base.load(GL_FRAGMENT_SHADER, "shaders/shader.frag"); |     base.load(GL_FRAGMENT_SHADER, "shaders/shader.frag"); | ||||||
|     base.link(); |     base.link(); | ||||||
|     // Установим значения текстур
 |     // Установим значения текстур
 | ||||||
|     const char* textures_base_shader_names[] = {"tex_diffuse"}; |     const char* textures_base_shader_names[] = {"tex_diffuse", "tex_ambient", "tex_specular"}; | ||||||
|     base.bindTextures(textures_base_shader_names, sizeof(textures_base_shader_names)/sizeof(const char*)); |     base.bindTextures(textures_base_shader_names, sizeof(textures_base_shader_names)/sizeof(const char*)); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user