2026-02-11 18:56:49 +03:00

46 lines
1.6 KiB
Go

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
}