package manager import "git.influ.su/artmares/art3de/pkg/render/material" // Manager - Интерфейс менеджера материалов type Manager interface { // CreatePBRMaterial создает PBR материал CreatePBRMaterial(name string, shader uint32, config *PBRConfig) (material.Material, error) // GetMaterial возвращает материал по имени GetMaterial(name string) material.Material // HasMaterial проверяет существование материала HasMaterial(name string) bool // DestroyMaterial уничтожает материал DestroyMaterial(name string) error // LoadTexture загружает текстуру LoadTexture(path string, textureType material.TextureType) (material.Texture, error) // GetTexture возвращает текстуру из кэша GetTexture(path string) material.Texture // PreloadTextures предзагружает текстуры из директории PreloadTextures(dir string) error // Update обновляет все материалы Update(deltaTime float32) // Cleanup освобождает все ресурсы Cleanup() // Stats возвращает статистику Stats() Stats } // PBRConfig - конфигурация PBR материала type PBRConfig struct { Name string Shader uint32 Format material.TextureFormat TextureDir string TexturePrefix string Params *material.PBRParams } // Stats - статистика менеджера type Stats struct { Materials int Textures int TextureMemory int64 Instances int }