Войти
ФлеймФорумЖелезо

Блеск и нищета 32/64-битных консолей и ПК (2 стр)

Страницы: 1 2 3 48 Следующая »
#15
8:20, 2 ноя. 2017

lookid
> Ты будешь писать?

Ну да. Я люблю тему старых консолей. Сперва это выражалось в том, что у меня было много эмуляторов и я на них много играл в игры старого поколения.
Здесь на форуме это выразилось в разных обзорах старины.
Как программист, однако, я всегда интересовался и внутренним устройством этих девайсов из любопытства.
Это вылилось в практику программирования под Game Boy Advance, включая создание статьи-урока "Реактивное введение в программирование под GBA", что в свою очередь вылилось в проект Contra Force Advance.
Но хотя бы поверхностное знакомство с архитектурами разных 8/16-биток не останавливалось, поэтому появилась предыдущая тема про 8/16-битные системы.
Сейчас вот дошёл до 32-биток по сути. Всё то же самое - читаю в свободное время доки по программированию - их сейчас полно, даже если не официальное SDK, то ребята создававшие эмуляторы всё-равно по косточкам всё расковыряли давно и опубликовали в виде доков. Так что единственное что меня может остановить - это дикая сложность какой либо архитектуры, что про неё будет совсем уж лениво читать и вникать.
Таковой может оказаться та же Sega Saturn - про неё написано немало где, что она была дико сложной для программирования.


#16
9:46, 2 ноя. 2017

=A=L=X=
> Что на PS4 - уже не знаю, но по моим глубоким подозрениям именно после работы с
> сонькой ATI и начала собственную иницативу Mantle, которая ныне вылилась на
> персоналках в Vulkan API.
На рутрекере есть пс4 сдк. Можешь скачать посмотреть что там.

#17
10:36, 2 ноя. 2017

amd.fx6100
> На рутрекере есть пс4 сдк. Можешь скачать посмотреть что там.

Качнул, глянул краем глаза.
Графическое API на соньке называется Gnm и сделано на классах С++. Судя по всему остальное API сделано так же.
Типичный код выглядит вот так:

// Enable z-writes using a less comparison function.
Gnm::DepthStencilControl dsc;
dsc.init();
dsc.setDepthControl(Gnm::kDepthControlZWriteEnable, Gnm::kCompareFuncLess);
dsc.setDepthEnable(true);
gfxc.setDepthStencilControl(dsc);

// Cull clock-wise backfaces.
Gnm::PrimitiveSetup primSetupReg;
primSetupReg.init();
primSetupReg.setCullFace(Gnm::kPrimitiveSetupCullFaceBack);
primSetupReg.setFrontFace(Gnm::kPrimitiveSetupFrontFaceCcw);
gfxc.setPrimitiveSetup(primSetupReg);

// Set up an additive blending mode.
Gnm::BlendControl blendControl;
blendControl.init();
blendControl.setBlendEnable(true);
blendControl.setColorEquation(Gnm::kBlendMultiplierSrcAlpha,
Gnm::kBlendFuncAdd, Gnm::kBlendMultiplierOneMinusSrcAlpha);
gfxc.setBlendControl(0, blendControl);

// Set up the output color mask.
gfxc.setRenderTargetMask(0xF);

По современному всё очень многословно и пример вывода пары трианглов вовлекает и шейдеры и стопицот строк инициализации всяких буферов и пайплайн стейджев.

#18
11:24, 2 ноя. 2017

=A=L=X=
> Ну и нелишним будет продемонстрировать уровень графония тех лет и этого железа
> картинкой, лучше так сказать один раз увидеть:
Чем они сортируют полигоны? БСП сами пиляли?
И тени на песке - КАК?!

#19
12:26, 2 ноя. 2017

=A=L=X=
какой-то GAPI работает не так же?

#20
13:03, 2 ноя. 2017

1 frag / 2 deaths
> Чем они сортируют полигоны? БСП сами пиляли?

Сами конечно. Кто как. В то время много было подходов к рендеру, скажем так, ущербноватых, но дающих сильные упрощения.
В том же Crash Bandicoot уровнь чаще всего представлял из себя ленту коридора уходящего вдаль, там наверное даже и BSP не было.
Всякие Лары Крофт вообще весь лабиринт вписывали в кубы - там тоже скорее всего BSP таким образом становился излишен.
Ну и конечно почти всегда всё тонуло в густом тумане, чтобы отсекать лабиринт по дальности, этот наираспространённейший трюк даже стал одним из непременных атрибутов вселенной Silent Hill.

> И тени на песке - КАК?!

"Тени" от стенки слева - просто трианглы по Гуро залиты. Команда 0x34 - gradated textured 3 point polygon.
А тень под персом - это тот самый бит прозрачности. Там возможно 4 формулы на выбор - среднее арифметическое, просто сумма, просто разность и сумма полного сюрфейса с половиной рендерящегося пикселя.

#21
16:06, 2 ноя. 2017

смотрел PS4SDK...много думал... отчего не Mantle ?

#22
17:27, 2 ноя. 2017

Хихихи, почитываю же доку по Nintendo 64, эти перцы там в бородатом году коэффициент "clipping frustrum ratio" назвали в макросах как FRUSTRATIO_1,2,3...6.

#23
7:26, 3 ноя. 2017

=A=L=X=
> Gnm::PrimitiveSetup primSetupReg;
> primSetupReg.init();

Чё прям так? Походу сони не умеет крестокодить.

#24
9:13, 3 ноя. 2017

Panzerschrek[CN]
> Чё прям так? Походу сони не умеет крестокодить.

Да, это больше похоже на Си с классами. Бинарная эффективность во главе, крестопаттерны не в фаворе.

#25
11:18, 3 ноя. 2017

https://github.com/search?utf8=%E2%9C%93&q=%22using+namespace… amp;type=Code

#26
11:45, 3 ноя. 2017

=A=L=X=
> Да, это больше похоже на Си с классами. Бинарная эффективность во главе,
> крестопаттерны не в фаворе.

что не устраивает ?

#27
12:07, 3 ноя. 2017

innuendo
Очевидно тут вспомнили про RAII

#28
12:12, 3 ноя. 2017

=A=L=X=
Это когда пишут врапеперы над вертексэреями и нуляют их на каждый чих прям посреди рисования? окай...

#29
12:21, 3 ноя. 2017

=A=L=X=
> Очевидно тут вспомнили про RAII

покажи GAPI с RAII

Страницы: 1 2 3 48 Следующая »
ФлеймФорумЖелезо