46 lines
1.6 KiB
Go
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
|
|
}
|