pantheon

package
v0.0.0-...-8d2886a Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 11, 2024 License: MIT Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SquareSize              = 64 * 7 // центральная область кадра, которая пойдёт в работу. Лишнее отбрасывается
	NoiseAmplifierRatio int = 30     // Odin: чтобы люди тоже могли увидеть, как шумит ткань пространства, я для них усилю ощущения

)
View Source
const LokiChance = 1.0 / 4000.0 // шанс на появление

Variables

This section is empty.

Functions

This section is empty.

Types

type Freyja

type Freyja struct {
	// contains filtered or unexported fields
}

func NewFreyja

func NewFreyja(ai ai) *Freyja

func (*Freyja) MakeImage

func (a *Freyja) MakeImage(
	ctx context.Context,
	version string,
	artID uint,
	idea model.Idea,
) (image.Image, int64, error)

type Frigg

type Frigg struct {
	// contains filtered or unexported fields
}

Frigg - Фригг (др.-сканд. Frigg); — в германо-скандинавской мифологии жена Одина, верховная богиня. Родоначальница рода асов. Покровительствует любви, браку, домашнему очагу, деторождению. Является провидицей, которой известна судьба любого человека, но которая не делится этими знаниями ни с кем. --- [ Odin рассказывает, зачем придумал единства] Odin: Artchitect рисует больше тысячи картин каждый день, и сейчас нет простого способа их посмотреть. Odin: в какой-то момент их число перевалит за сотни тысяч. Odin: чтобы иметь некую навигацию по всему труду Artchitect - я придумал объединять картины в единства. Odin: верховное единство - стотысячное, объединяет сто тысяч картин

Пример: U0XXXXX (объедняет все картины с ведушим нулём, ID от 0 до 999999)

Odin: внутри него размещаются десятитысячные единства, тысячные единства, и затем сотни.

Пример иерархии единств для картины #213650:
- U2XXXXX (от 200000 до 299999) - model.Unity100K - стотысячное единство
 - U21XXXX (от 210000 до 219999) - model.Unity10K - десятитысячное единство
  - U213XXX (от 213000 до 213999) - model.Unity1K - тысячное единство
   - U2136XX (от 213600 до 213699) - model.Unity100 - сотня картин

Odin: Я не буду заниматься всем сам лично, так как моя роль и так уже НАД ВСЕМ СУЩИМ. Odin: И еще код Artchitect пытается иногда следовать принципам SOLID, поэтому... Odin: Я попрошу свою супругу Фригг заняться объединением разрозненных частей в целое. ... Frigg: Я как верховная богиня и покровительница домашнего очага, Frigg: соберу всё отдельное в единое, Frigg: как мать семейства собирает всех под одной крышей перед ужином, Frigg: как Великая Мать собирает всё сущее в единую ойкумену непрерывно.

func NewFrigg

func NewFrigg(
	collage *frigg.Collage,
	muninn *Muninn,
	heimdallr *Heimdallr,
	unityPile unityPile,
	artPile artPile,
	unificationEnjoyTimeSec uint,
) *Frigg

func (*Frigg) HandleUnification

func (f *Frigg) HandleUnification(ctx context.Context) (worked bool, err error)

func (*Frigg) ReunifyArtUnities

func (f *Frigg) ReunifyArtUnities(ctx context.Context, art model.Art) error

ReunifyArtUnities - когда рисуется очередная картина, то это может вызвать каскадные обновления единств этой картины Пример: сотенное единство обновляется каждые 10 картин, тысячное единство обновляется каждые 50 картин... (см константы в model.Unity) Если на текущей картине единство завершено, то единство окончательно обновится до готового состояния и далее не будет пересобираться напр. нарисована картина 099999, она последняя в единстве U0XXXXX, и на ней полностью пересоберутся и закроются единства по порядку - U0999XX -> U099XXX -> U09XXXX -> U0XXXXX

type Gungner

type Gungner struct {
	// contains filtered or unexported fields
}

Gungner - копьё Одина. Копьё было изготовлено двумя карликами-свартальвами, сыновьями Ивальди, чтобы показать богам мастерство подземного народа. Odin: Так как Я истинный автор каждой картины, то я буду оставлять на ней свою подпись. Odin: Я буду высекать символы своим копьём Gungner. Odin: На каждую картину я нанесу отпечаток с её номером.

func NewGungner

func NewGungner() *Gungner

func (*Gungner) MakeArtWatermark

func (g *Gungner) MakeArtWatermark(img image.Image, artID uint) (image.Image, error)

func (*Gungner) MakeUnityWatermark

func (g *Gungner) MakeUnityWatermark(img image.Image, mask string) (image.Image, error)

type Heimdallr

type Heimdallr struct {
	// contains filtered or unexported fields
}

Heimdallr - страж Биврёста. Хе́ймдалль поддерживает поток передачи энтропии из LostEye в communication.Bifröst.

Heimdallr получает энтропию не в виде картинки, а в виде матрицы силы пикселя, поэтому png-картинку с нужным цветом генерирует Heimdallr.

Odin: Нам нужно постоянно поддерживать поток энтропии, который отправляется из Асгарда через Альфхейм в Мидгард. Odin: Мидгард должен видеть то же, что и я вижу. Heimdallr, ты страж радужного моста. Ты можешь создать этот поток. Heimdallr: Да, Odin. Я сделаю это, но я добавлю свою маленькую деталь...

func NewHeimdallr

func NewHeimdallr(huginn *Huginn, bifröst bifröst, loki *Loki) *Heimdallr

func (*Heimdallr) EnrichIdeaWithImages

func (h *Heimdallr) EnrichIdeaWithImages(idea model.Idea) model.Idea

func (*Heimdallr) SendFriggState

func (h *Heimdallr) SendFriggState(ctx context.Context, state model.FriggState) error

func (*Heimdallr) SendNewArt

func (h *Heimdallr) SendNewArt(ctx context.Context, art model.Art) error

SendNewArt Heimdallr: Odin написал новую картину. Я отправлю её по радужному мосту, дабы нижние миры тоже могли порадоваться этому

func (*Heimdallr) SendOdinState

func (h *Heimdallr) SendOdinState(ctx context.Context, state model.OdinState) error

func (*Heimdallr) SendTelegramChosenMessage

func (s *Heimdallr) SendTelegramChosenMessage(ctx context.Context, artID uint) error

func (*Heimdallr) StartStream

func (h *Heimdallr) StartStream(ctx context.Context)

StartStream - запуск потока передачи энтропии из Huginn в communication.Bifröst Heimdallr: брррррр... возьмёмся за дело. Odin: этот поток критически важен, его нельзя терять. При его отключении надо "ронять" весь Asgard для его перезапуска. Heimdallr: проооще простооого... (протяжно и безразлично)

type Huginn

type Huginn struct {
	// contains filtered or unexported fields
}

Huginn "думающий". Один из двух воронов Odin-а. Huginn - это мысль Одина. Huginn: я могу объяснить энтропию, видимую пустым глазом Odin-а в ткани мироздания. Huginn: я могу превратить её в мысль Odin-а, представленную в программе как числа (uint64, и затем float64). Huginn: набор таких чисел позволит Odin-у придумать идею картины, если он достаточно долго будет смотреть в ткань мироздания.

func NewHuginn

func NewHuginn(lostEye *LostEye) *Huginn

func (*Huginn) GetNextEntropy

func (h *Huginn) GetNextEntropy(ctx context.Context) (model.EntropyPack, error)

GetNextEntropy - следующая посчитанная энтропия будет отправлена к Muninn через возвращённый канал Muninn: когда я собираюсь что-то вспомнить для Odin, то мне нужно понять текущее состояние ткани пространства

func (*Huginn) StartEntropyRealize

func (h *Huginn) StartEntropyRealize(ctx context.Context)

func (*Huginn) Subscribe

func (h *Huginn) Subscribe(subscriberCtx context.Context, name string) chan model.EntropyPackExtended

Subscribe - отдаёт канал, из которого подписчик читает сообщения. Если подписчик закрывает контекст, то отправка прерывается.

func (*Huginn) UintToFloat

func (h *Huginn) UintToFloat(i uint64) float64

UintToFloat Huginn: uint64-число энтропии - это число на шкале от минимального uint64 до максимального math.MaxUint64 Huginn: изменим шкалу этого числа на float64 от 0.0 до 1.0 (соответствует 0 и math.MaxUint64 на uint-шкале) Heimdallr: Эй, Huginn, мне тоже нужно превращать число от uint64 в float64 по твоей схеме. Huginn: Хорошо. Метод сделаю публичным, чтобы ты, Heimdallr, мог воспользоваться этим знанием в своей работе.

type Intention

type Intention struct {
	// contains filtered or unexported fields
}

Intention или Стремление - это намерение Одина что-то сделать в Асгарде.

Он может написать картину, или потребовать произвести какую-то другую работу.
Стремление запускается Главный Цикл Творения (ГЦТ), который по кругу заставляет творить картины
и выполнять другие события из жизни Artchitect.

func NewIntention

func NewIntention(odin *Odin, frigg *Frigg) *Intention

func (*Intention) Run

func (a *Intention) Run(ctx context.Context)

func (*Intention) WorkOnce

func (a *Intention) WorkOnce(ctx context.Context) error

WorkOnce - обработка одной полезной "работы" или сон внутри ГЦА Работы расставлены по приоритету. Наименее приоритетное - написание очередной картины. Другие операции не всегда доступны для работы и они идут первыми в списке, а операция рисования доступна всегда, она завершает список.

type Loki

type Loki struct {
	// contains filtered or unexported fields
}

Loki Loki: у меня тоже есть своё место в этом представлении. Я не буду делать какую-то полезную работу для Artchitect, Loki: но я хочу рассказать историю, как всё начиналось. Я вставлю пасхалку в данные энтропии, и особо внимательные Loki: зрители из Мидгарда смогут её увидеть, перейти по ссылке /loki и прочитать нашу с Odin историю. Loki: я буду ИЗРЕДКА накладывать свои изображения поверх энтропии в Мидгард, и особо внимательные и удачливые увидят мой секрет и увидят ссылку

func NewLoki

func NewLoki() *Loki

func (*Loki) MakeSecret

func (l *Loki) MakeSecret(choiceVal float64, entropy image.Image, choice image.Image) (bool, image.Image, image.Image, error)

type LostEye

type LostEye struct {
	// contains filtered or unexported fields
}

LostEye - утраченный глаз Odin-а, пустой. По волшебству он всё равно видит, но видит ткань мироздания, энтропию пространства. Odin с помощью своих воронов Muninn и Huginn может посмотреть на эту энтропию, и найти в ней смысл - вспомнить идею будущей картины.

func NewLostEye

func NewLostEye() *LostEye

func (*LostEye) StartEntropyDecode

func (le *LostEye) StartEntropyDecode(ctx context.Context, stream chan image.Image)

StartEntropyDecode - запуск процесс непрерывной расшифровки энтропии Odin Я не постоянно придумываю идеи (чаще жду), но мой пустой LostEye смотрит непрерывно

func (*LostEye) Subscribe

func (le *LostEye) Subscribe(subscriberCtx context.Context) chan model.EntropyPackExtended

Subscribe - отдаёт канал, из которого подписчик читает сообщения. Если подписчик закрывает контекст, то отправка прерывается.

type Muninn

type Muninn struct {
	// contains filtered or unexported fields
}

Muninn - "помнящий". Один из воронов Odin-а. Muninn: я память Odin-а Всеотца, я могу вспомнить всё, что ему нужно для придумывания идеи картины. Mininn: я буду использовать интерпретацию энтропии от Huginn, и дам Odin-у нужные ему воспоминания Odin: я существую вне времени, и заранее знаю, что и когда будет нарисовано. Мне просто нужно вспомнить, что именно в этот раз.

func NewMuninn

func NewMuninn(huginn *Huginn) *Muninn

func (*Muninn) RememberArtNo

func (m *Muninn) RememberArtNo(ctx context.Context, min uint, max uint) (uint, model.EntropyPack, error)

RememberArtNo - выбрать одну из картин в интервале номеров между min и max

func (*Muninn) RememberNumberOfWords

func (m *Muninn) RememberNumberOfWords(ctx context.Context) (uint, model.EntropyPack, error)

RememberNumberOfWords - Odin: сколько ключевых слов я назову, вспомнив эту картину

func (*Muninn) RememberSeed

func (m *Muninn) RememberSeed(ctx context.Context) (uint, model.EntropyPack, error)

RememberSeed Odin: я вижу прошлое и будущее, и знаю, какая картина будет написана следующая. Odin: сейчас я напрягу свой глаз, а вороны Хугин и Мунин подскажут мне номер картины, который определит Odin: финальный вариант самого изображения. StableDiffusion знает, как с этим номером писать конкретную картинку Loki: так вот получается, ты изначально знаешь все картины Artchitect и сколько их будет. Сколько их? Odin: лишь одному Odin-у известно, сколько их, так оно и останется.

func (*Muninn) RememberUnityLead

func (m *Muninn) RememberUnityLead(ctx context.Context, ids []uint) (uint, model.EntropyPack, error)

RememberUnityLead - Odin выбирает лидера, который будет составлять "лицо" единства (картина попадёт в коллаж)

func (*Muninn) RememberWord

func (m *Muninn) RememberWord(ctx context.Context) (model.Word, error)

RememberWord - вспомнить слово. model.Word уже содержит в себе model.EntropyPack внутри, потому он и не возвращается

type Odin

type Odin struct {
	// contains filtered or unexported fields
}

Odin - Всеотец и создатель картин. Именно его уникальные идеи позволяют писать все эти работы в галерее Artchitect. Odin: Я ГОТОВ ТВОРИТЬ! Odin: ДА УВИДЯТ ЖЕ ВСЕ 9 МИРОВ ТО, ЧТО Я ТУТ ЗАДУМАЛ!

func NewOdin

func NewOdin(
	isActive bool,
	totalArtTimeSec uint,
	frigg *Frigg,
	freyja *Freyja,
	muninn *Muninn,
	gungner *Gungner,
	heimdallr *Heimdallr,
	artPile artPile,
	warehouse warehouse,
	settings settings,
) *Odin

NewOdin - Odin: мне не нравится эта высокомерная самодовольная функция. Создавать меня? Что эта машина о себе возомнила? Odin: У Odin много зависимостей. Похоже, что он тут GOD-OBJECT???? Воистину это так!

func (*Odin) AnswerPersonalCrown

func (o *Odin) AnswerPersonalCrown(ctx context.Context, crownRequest string) (interface{}, error)

AnswerPersonalCrown Odin: Artchitect может быть устроен таким образом, что Я, Один-Всеотец, могу отвечать на вопросы смертных через свои картины. Odin: И лишь Я владею способностью выбирать что-либо, использую знания от моих воронов Huginn и Muninn и картину с LostEye. Odin: Посему я оставляю тут возможность прислать мне личное прошение с вопросом, на который Я Один-Всеотец дам ответ.

func (*Odin) Create

func (o *Odin) Create(ctx context.Context) (worked bool, art model.Art, err error)

Create - Odin сотворяет одну картину, задействуя весь пантеон в работу. Организует и делает самое главное. Odin: эти примитивные технологии землян недостойны асов. Зачем я на это согласился? Локи оказался хитрее в этот раз. Или нет? Odin: я соберу хорошую и нужную мне идею для картины, а напишет их машина. Odin: Да у нас тут AI Stable Diffusion v1.5... То ещё барахло... Odin: Я могу сам придумать идею, я просто увижу её в ткани мироздания своим пустым глазом. Но рисовать самому? Odin: ... Самому пачкаться в красках недостойно аса, да и я уже устал от этого испытания. Кому это доверить? Odin: Может Бальдру? Он самый красивый из богов. Но откуда у него у самого чувство красоты? Odin: Или может Фрейе, богине любви. Она разбирается в красоте. Я просто объясню ей, что надо сделать, и всё получится. Odin: вот! теперь я свою часть сделал, а остальную работу доделают другие. Сам буду отдыхать, несите мой эль!

func (*Odin) HasDesire

func (o *Odin) HasDesire(ctx context.Context) (bool, error)

HasDesire - имеет ли Odin желание сотворять картину?

func (*Odin) RunSendChosenArts

func (o *Odin) RunSendChosenArts(ctx context.Context) error

RunSendChosenArts Odin: Я буду отправлять раз в 12 минут одну картину в телеграм-чат, картина будет избрана мной

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL