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

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

Страницы: 13 4 5 6 7 8
#105
10:36, 1 июля 2019

innuendo
> лол

А что "лол"? Консольное железо в те годы на десяток лет опережало ситуацию на ПК в смысле аппаратного ускорения графики.
Хотя забавно, что в PS2 растеризатор явно корнями уходил в glBegin/glEnd, видимо взяли уже какое то готовое решение от Silicon Graphics или под их влиянием.


#106
11:56, 1 июля 2019

=A=L=X=
> А что "лол"? Консольное железо в те годы на десяток лет опережало ситуацию на
> ПК в смысле аппаратного ускорения графики.

а GL делали прежде все для рабочих станций, а не для PC

#107
(Правка: 12:02) 12:02, 1 июля 2019

innuendo
> а GL делали прежде все для рабочих станций, а не для PC

Да вполне, но делался исходя из посылок которые устарели уже в девяностые годы - консоли очень быстро отошли от render-call==triangle-draw в первых своих представителях на конвеер команд с дисплейными списками и аппаратным ускорением обработки вершин с полностью параллельной работой CPU-Video. И в это время Кармак сидел и писал glBegin/glEnd в кваке, да.

#108
12:09, 1 июля 2019

=A=L=X=
> И в это время Кармак сидел и писал glBegin/glEnd в кваке, да.

там не было glDrawElements ?

#109
12:32, 1 июля 2019

innuendo
> там не было glDrawElements ?

В коде glQuake glDrawElements не ищется, поэтому вряд ли она была реализована в miniGL.
https://github.com/id-Software/Quake/blob/master/WinQuake/gl_draw.c
Всё через glBegin.

#110
12:46, 1 июля 2019

=A=L=X=
> В коде glQuake

а в Q2?

#111
12:59, 1 июля 2019

innuendo
> а в Q2?

В файлах имплементации под разные платформы (там прослойка что все функции пишутся как qglBegin/qglEnd) есть, но в коде самой игры не используется.
https://github.com/id-Software/Quake-2/blob/master/ref_gl/gl_draw.c

#112
(Правка: 10:48) 10:38, 30 сен. 2019

Немного о Манчестерской семье

В 1948 году в Манчестере создаётся прототип компьютера общего назначения - Manchester Baby, который являлся первым компьютером в мире в котором программа хранилась в ОЗУ (!). Прототип просто должен был показать, что концепции работают и с точки зрения системы команд был крайне минималистичен. Ячейки памяти в нём были 32-битные, но под код инструкции отводилось только 3 бита, т.е. инструкций всего могло быть только 8. Но и из них задействовано было только 7:
- безусловный переход
- безусловный переход на смещение взятое из ячейки памяти
- пропуск следующей инструкции если аккумулятор отрицателен
- загрузка в аккумулятор ячейки памяти с измененным знаком
- сохранение аккумулятора в ячейку памяти
- вычитание из аккумулятора ячейки памяти
- останов
Компьютер из вычислений мог только вычитать и менять знак! Сложение чисел надо было реализовывать как -(-a-b). Заметьте, что загрузка аккумулятора из памяти всегда меняла данному знак (в отличие от сохранения), поэтому такие операции были как бы естественно подпёрты таким костыликом.
Архитектура в целом была аккумулятор-память и инструкции содержали адрес ячейки памяти с которой надо было работать. Что ОЗУ (1024 бит или 32 слова) что два регистра (аккумулятор и счётчик инструкций) хранились в электронно-лучевых трубках Уильсона, причём регистры каждый хранились в своей трубке.
Первая программа которая на компьютере достаточно долго проработала искала наибольший делитель числа 2^18 методом полного перебора и при этом деление осуществлялось вычитаниями со счётчиком и весь алгоритм выполнялся 52 минуты при общей производительности порядка 1100 операций в секунду. Едва испытав практически эзотерического по программированию "Baby" британцы строят по настоящему полезный компьютер:

Manchester Mark I

Построенный в 1949 году Mark I базируясь на идеях "Baby" всё-таки сильно отличался.
Ячейки памяти были расширены до 40 бит, но при этом инструкции были 20-битные и в ЭЛТ биты полуслов делились на "левые" и "правые" колонки.
При этом считалось, что 20-битная инструкция как бы состоит из четырёх пятибитных алфавитно-цифровых символа. Как и в телеграфе весь алфавит и цифры в 32 значения не влазил, поэтому два символа были отведены под "изменение таблицы символов".
Но самое странное как выглядела таблица текстовых символов, а выглядела она вот так:

0  00000   /   8    00010   ½   16   00001   T   24   00011   O
1  10000   E   9    10010   D   17   10001   Z   25   10011   B
2  01000   @   10   01010   R   18   01001   L   26   01011   G
3  11000   A   11   11010   J   19   11001   W   27   11011   "
4  00100   :   12   00110   N   20   00101   H   28   00111   M
5  10100   S   13   10110   F   21   10101   Y   29   10111   X
6  01100   I   14   01110   C   22   01101   P   30   01111   V
7  11100   U   15   11110   K   23   11101   Q   31   11111   £ 
Здесь три колонки - номер по порядку, номер в бинарном коде и сам символ. Обратите внимание, что двоичные числа в команде Mark I было принято записывать с младшими разрядами справа!
В 1951 году на базе Manchester Mark I создаётся первый в мире коммерческий компьютер - Ferranti Mark I который в принципе сохраняет ту же архитектуру, но растёт в характеристиках и прибавляется периферийными устройствами.
Сам Алан Тюринг пишет для него руководство по программированию почитать которое можно тут: http://curation.cs.manchester.ac.uk/computer50/www.computer50.org… au/turing.pdf
Так вот программы составлялись тупо этими вот буквенными кодами.
Вот как выглядит первый пример программы из книги Тьюринга:
// /CT/
E/ DSTI
@/ D//H
A/ R//P
:/ /C/S
S/ :CT/
I/ @CTI
U/ :C/S
½/ JS/P
D/ A/
R/ @/
Сразу не пугайтесь - тут всё просто. Первая колонка - это номер строки программы. / - это нулевой символ, E - это первый, @ - второй - посмотрите снова на таблицу. Т.е. в первой колонке просто выписаны по порядку числа от 0 до 10 в кодировке этой монументальной машины.
Сама программа находится во второй колонке - 20-битное число представлено четырьмя подряд идущими 5-битными буквами из которых первые две описывают номер ячейки памяти прошитый в инструкции, а последние две - код инструкции и так называемый код B-tube который позволяет делать индексации. Суровые манчестерские инженеры первые годы вот так вот и программировали - обложившись таблицами с перемешанными буквами.
Каково?
Однако некто Тони Брукер несколько лет спустя разработал один из первых ЯВУ - предшественник Fortran - Autocode (т.к. было несколько языков с названием Autocode, то для уточнения его называют "Mark 1 Autocode")
Программа на Autocode выглядит как то так:
  n1  =  201
  n2  =  301
  v99  =  0
7  v98  =  vn1 x vn2
  v99  =  v99+v98
  n1  =  n1+1
  n2  =  n2+1
  j7  ,  280 >= n1 
В последней строчке j7 - это "перейти на строку 7, если...".
Какое у этого языка забавное свойство - прежде всего он рассматривает память как массив из подряд идущих вещественных переменных от v1 до v5000 (видимо при максимальной ёмкости памяти) к которым по этим заранее определенным именам можно обращаться как к скалярам.
Кроме того в нём есть 18 целочисленных переменных от n1 до n18.
А если мы хотим обращаться к вещественным переменным как к массиву, то надо использовать нотацию vnx, например vn7, что будет значит что надо работать с вещественной переменной чей номер хранится в целочисленной переменной n7. Т.е. выражаясь современным языком vn7 это как бы v[ n7 ].

В т.ч. использованы материалы отсюда: http://curation.cs.manchester.ac.uk/computer50/www.computer50.org… /program.html

#113
(Правка: 6:30) 5:00, 28 фев. 2020

Рассказ Энди Гавина (сооснователя Naughty Dogs) о том как компания взялась делать Crash Bandicoot на Playstation 1 и с чем его разрабатывая сталкивалась.
Перевода к сожалению по крайней мере пока нет, но если на слух или субтитры воспринимаете, то забавные моменты есть.
Например в начале он упоминает что рассматривая консоли на рынке они обдумывали их и Atari Jaguar восприняли как какую то шутку.
Или там сравнивает на тот момент домашние ПК с PS1 (и не в пользу первых).
Или "проблема пустого места" - когда при переходе из 2D в 3D они хотели сделать что-то настолько же быстрое и побуждающее на бескомпромиссный экшон как Ёжик-соник или Donkey Kong, но в 3D вместо того чтобы перепрыгнуть подряд трёх черепашек что тебе судьба выкинула под ноги настучав им пятками марио по шарабану внезапно оказалось что их проще всего просто обежать сбоку. А это сбавляло темп, экшон и вместо ураганного геймплея получался какой то игнор судьбы. Поэтому они выработали решение "ограничивать одно из измерений" и склоняли его десятью разными способами в разных типах уровней в Креше. И так далее. Особых откровений я бы сказал что нет, но забавно.

P.S.
В комментариях на ArsTechnica упомянули, что есть блог от этого же чувака (англ. разумеется) https://all-things-andy-gavin.com/2011/02/02/making-crash-bandicoot-part-1/
где намного больше деталей и в тексте.

#114
(Правка: 12:46) 12:35, 28 фев. 2020

=A=L=X=
> Рассказ Энди Гавина
ох классно! крутой мужик
бложик надо почитать

#115
15:50, 10 июля 2020

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры
#116
(Правка: 19:27) 19:24, 10 июля 2020

amd.fx6100
> На рутрекере есть пс4 сдк. Можешь скачать посмотреть что там.
хм, интересненько.
upd. 2017г, интересно живо ли еще.

Страницы: 13 4 5 6 7 8
ФлеймФорумЖелезо