Scenergy #02
31 декабря 1999

Coding - Texture mapping + Phong shading реализация от Senat/Eternity Industry.

<b>Coding</b> - Texture mapping + Phong shading реализация от Senat/Eternity Industry.
                           Warning!!!
 Убедительно  прошу  редакторов журнала Scenergy оставить статью
без изменений. Вся ответственность за сказанное беру на себя я
                                       (Senat/Eternity Industry)
@-


Texture mapping + Phong shading

(C) Eternity Industry

    В  этой  статье  я  попытаюсь обьяснить как реализовать этот
тормозной  эффект  на  ZX.  Eго вы можете увидеть в нашей демухе
"Napalm"  (та  часть,  где  мотается  полусфера, на ней натянута
текстура  глаза и по поверхности бегает световой блик), на Amiga
этот  эффект давно уже реализован в демо Ramses'a, Mellow Chips,
Floppy,   Еxploder'om,  и  др..  Сразу  предупрежу,  что  данная
статья  предназначена  для  кодера выше среднего уровня, поэтому
всяким там SerzhSoft'am и т.д. читать это просто запрещается !!!
;)  Если  вы  поняли  как  сделать  texture map и environment,то
закодить  ЭТО  не составит особого труда, обьяснять заново T_MAP
просто  лень.  Кстати,  таким  же  способом  можно реализовать и
T_MAP, заливка ускорится примерно процентов на 30.
    Уважаемые  кодеры  !  если  вы  сразу захотите закодить это,
советую  не  спешить,  сделайте  для  начала хотя бы Gouraud или
Т_MAP!

Начну с основного цикла :

         POP  HL     ; Снимаем со стека смещемие по текстуре
                     ; (в H - шаг по Y, в L - шаг по X ).
         ADD  HL,BC  ; Прибавляем его к координатам боковой
                     ; линии полигона (по текстуре), заранее
                     ; вычисленной и вытащенной из таблицы
                     ; в начале рисования сканлинии
         LD   A,(HL) ; Берем цвет из текстуры.
         EXX         ;
         POP  HL     ; Снимаем со стека смещение по текстуре
                     ; (световое пятно)
         ADD  HL,BC  ; Прибавляем его к координатам боковой
                     ; линии полигона (по текстуре светового
                     ; пятна)
         ADD  A,(HL) ; складываем с цветом пятна
         LD   E,A    ; т.к. при сложении возникают цвета больше
                     ; #10, то цвет должен быть максимальным,
                     ; т.е. #0F. Т.к на ZX нет команды, которая
                     ; при сложении делала это, то проходится
                     ; заниматься извращением и делать таблицы
                     ; сложенных цветов.
         LD   A,(DE) ; Берем результирующий цвет.
         EXX         ;
         LD   (DE),A ; пихаем его в буфер для вывода.
         INC  E      ;

Вот и усе!!!
Теперь по расположению текстур в памяти.
Они должны располагаться в одной из страниц (например в #11),
причем в 1-ой странице максимум влезает 4 текстуры (64 x 64)
первые #40 байта - первая текстура, вторые #40 байта - вторая,
третьи #40 байта третья ... и т.д., и через #0100 то же самое.
Например:
                  Общий размер по Х = #0100

|              |              |               |               |
|  Tекстура    |  Текстура    |   Текстура    |  Текстура     |
|  светогого   |  для Tmap    |   для заднего |   для чего-   |
|  пятна       |              |   фона        |   нить еще    |
|              |              |               |               |
|              |              |               |               |


    Буфер  для  вывода  должен  иметь  размеры  38  x 256 т.к. я
считаю,  что  размер  по  Y  = 38 является оптимальным, т.к. при
стандартном C2P экран успевает обновиться за 2 фрейма. Размер по
X  = 256 сделан для того чтобы отпала необходимость клипирования
полигона   по   Х.   Буфер  для  вывода,  естественно  ,  должен
располагаться до #C000 т.е. начиная с #9A00.

    Все precalc'и в начале основного цикла точно такие же, как и
в   обычном  T_MAP'е,  с  той  разницей,  что  вычислений  нужно
выполнять  в  2  раза  больше, чем в Т_MAP'е ( вычисления таблиц
шагов  по  текстуре,  таблиц  шагов по текстуре светового пятна,
интерполяцию вершин полигона по текстуре и по текстуре светового
пятна, и т. д. )
                          Warning !

    Данный   алгоритм   будет  работать  только  с  выключенными
прерываниями  !!!  Подумайте  немного  сами,  как  сделать  так,
чтобы не зависало при IM 2 ;)
    Ну вот вроде и все. Как видите для того, чтобы сделать T_MAP
+ PHONG сначала нужно понять как работает обычный T_MAP.

Если будет заинтересованность редакторов журнала, то Mы ( EI )
можем рассказать об реализации на ZX таких эффектов как:

3d-камера, Static Phong Shading or Environment Mapping,
Morphing Stretch-tables, Z-buffer, S-buffer, alpha-channel,
Mirroring rotation, Fast Scaling, 3d-Particles, 3D Spheres
3D Tunnels, Lens Flare, любой вид 3D-shading'а и многое другое.

Senat/Eternity Industry.                               18.09.999



Другие статьи номера:

A.O.S.S. - "Сцена больна" переживания Random'a.

A.O.S.S. - Raver рассуждает о сценовой журналистике.

A.O.S.S. - аналитическая статья о музыкальной сцене от Andy Fer.

A.O.S.S. - легко ли быть органайзером группы?

A.O.S.S. - О журналах (мысли вслух).

A.O.S.S. - о канонах демосцены на примере журнала Deja Vu #9.

A.O.S.S. - Сегодня и Завтра отечественной демосцены.

A.O.S.S. - спектрумовская банерная сеть.

Charts - all time favorites.

Charts - current rules (fall edition 1999).

Charts - indexed.

Charts - voting rules.

Coding - 16-битная процедура быстрого возведения в степень.

Coding - Flying представляет макробиблиотеку: Memory Management Library.

Coding - Texture Mapping - реализация от SaiR00S/EI.

Coding - Texture mapping + Phong shading реализация от Senat/Eternity Industry.

Coding - ZXA library: библиотека, предназначенная для создания и проигрывания анимаций.

Coding - Баг в STS?

Coding - Комментарии к исходникам, опубликованным в Scenergy #1

Coding - о библиотеках в программировании на спектруме.

Coding - Принцип упаковки анимаций в демо JAM.

Coding - процедура быстрого умножения.

Coding - разбор интро Daingy от Cryss/Razzlers.

Demo Party - Cafe'2000: Официальное приглашение

Demo Party - CC999.999 information (eng).

Demo Party - D-Man/EI: отчет о Di:Halt:99.

Demo Party - Hartman: отчет о CC'999.

Demo Party - Maxwell и Mr. John: отчет о CC'999.

Demo Party - Merlin/CC: отчет о CC'999.

Demo Party - Paradox'99 - как это было, но лучше б он mUst dIe!!!

Demo Party - PHAT'9: список посетителей.

Demo Party - POL/PHT: отчет о Doxycon '99.

Demo Party - Random/CC: обьемный отчет о CC'999.

Demo Party - SerzhSoft: сказание о CC'999.

Demo Party - Zlincon 2e3 party: минирепортаж.

Demo Party - информация о предстоящем пати PHAT'0.

Demo Party - информация по демопарти CC999.999.

Demo Party - неофициальные результаты Di:Halt'99 с коментариями Diver'a.

Demo Party - обзор демосцены за 1999 год.

Demo Party - отчет организаторов CAFe'99.

Demo Party - пресс релиз Латвийского демопати PHAT'9.

Demo Party - приглашение на латвийское демопати PHAT'9.

Demo Party - рассказ о поездке Antares в Казань на CAFe'99

Demo Party - результаты CC.999.999

Demo Party - результаты CC999.999.

Demo Party - результаты Chaos Construction 999.

Demo Party - результаты Computer Art Festival 1999.

Demo Party - результаты Doxycon'99.

Demo Party - результаты Millenium Party.

Demo Party - результаты Paradox'2k demoparty.

Demo Party - результаты Латвийского демопати PHAT'9.

Demo Party - результаты Ростовского пати Paradox'99.

Demo Party - репортаж Gasman'a с Forever 2e3.

Demo Party - репортаж с Минского демопати Millennium'2000.

Demo Party - финальные результаты Forever 2E3.

Editorial - вступительное слово от Arty.

Editorial - выступительное слово от Random.

Editorial - загоны Raver'а на тему Сцены.

Groups - анкеты действующих групп: Amaltiya Incoropration Software.

Groups - анкеты действующих групп: Antares.

Groups - анкеты действующих групп: Ascendancy Creative Labs.

Groups - анкеты действующих групп: Crushers.

Groups - анкеты действующих групп: E-mage.

Groups - анкеты действующих групп: Eternity Industry.

Groups - анкеты действующих групп: Excess team.

Groups - анкеты действующих групп: Extreme Entertainment.

Groups - анкеты действующих групп: Fatality.

Groups - анкеты действующих групп: Jupiter 77.

Groups - анкеты действующих групп: Proxima Centauri.

Groups - анкеты действующих групп: RaZZLeRs.

Groups - анкеты действующих групп: RUSH.

Groups - анкеты действующих групп: Smash Hackers Band.

Illegal Corner - Razzlers оправдываются за релиз демки First Association.

Illegal Corner - Scenergy Release Charts - конкурс крэков.

Illegal Corner - Welcome to Scenergy Release Charts (SRC).

Illegal Corner - софтография Fatality Group.

Lits - Pussy: история создания знаменитой игры от Fatality.

Lits - Scenergized beyond the belief.

Lits - speed.

Lits - история образования Ростовской ассоциации PartyZans.

Lits - история создания игры "Белый орел - товарищ известен".

Lits - рассказ о том как Fatality выпускает игрушки.

Mail Box - письма: Ellvis и Fatality довольны Scenergy #1, Ulterior поносит Antares и BrainWave, Realtimer разочарован.

News - Doom'a не будет!

News - Виртуальное пати Millennium, X-Raizor вернулся на сцену, Andrew Fer организовал новую группу, провал Германского пати Spectrology, новости от 3SC, Zero Team, Extreme.

News - мнение Megus'a о dentro compo СС'2000.

News - новости от OHG, Delta Hackers Group, Die Crupps, Волгодонских спектрумисто и от группы SpeedWay.

Scenergy - адреса для связи с редакцией.

Scenergy - благодарности соавторам журнала.

Scenergy - новое в облочке журнала.

Scenergy - обещанного видео в статьях не будет...

V.I.P. - Random берет интервью у Unbel!ever/Sage/XTM.

V.I.P. - The most noble tale of the scene.

V.I.P. - интервью с Arny и Mythos, создателями клона Elite игры Awaken.

V.I.P. - Интервью с Fatality, широко известными крэкерами и гейм-мэйкерами

V.I.P. - интервью с одним из авторов игры Elite.

V.I.P. - интервью с одним из самых прогрессивных художников на спектруме Diver/4D.

V.I.P. - Интервью, взятое у Random'а каким-то PC-журналом

Warez Pack - описание Inertia Player.

Warez Pack - описание демо 1140.

Warez Pack - описание импортной демки 'no work'.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Сетевые новости - На данный момент в Кирове полным ходом работает две BBS'ки и насчитывается 13 поинтов.
Хобби - Gendalf рассказывает как он стал Оружейником (об увлечении хоббитизмом).
Top Secret - SAILOR AND JAMESSOFT выпустили описание к игре UFO-2 v 2.10.
Intro - Editоriаl 2.
Игры - Демо-версия игры Wolfenstein 3D.

В этот день...   21 ноября