30 сентября 2011

Silver Web: Angedonia Beta 1.2 is out NOW



***

После продолжительной паузы поспел выход релиза Silver Web : Angedonia...
Проект обрёл собственное направление и дополнительные цели для разработки.
Проект не расчитан на конечного пользователя и рекомендуется пользователям пакета Blender 3D а также как шаблон работы с BGE (Blender Game Engine).
Разработчики вели основную работу над полировкой основных уровней и корректива предыдущих версий.
Создана GIT ветка (unstable).

***

Основные изменения...

- Добавлен базовый пак шейдеров и 2D фильтров.
- Дополнительная работа с Nodes.
- Дополнительная оптимизация текстур и материала.
- Доработки звукового сопровождение.
- Дополнительные немаловажные доработки в геймплее.
- Доработки общего FX.
- Тестирование на ATI (перечёркнуто / проект только для NVIDIA GPU).
- Доработки и дополнение общих Python скриптов.
- Работа над дополнительным видео роликом игры.
- Тесты x_64 версии.
- Оптимизация нормалей и материалов моделей.
- Общие тестирование kernel 2.6.32.
- Переход на драйвера с длительной поддержкой NVIDIA 275.28.
- Созданы скрипты апдейта документов и версии игры.
- Доработан сайт / Beta-3.
- Создан и доработан новый мануал.
- Создана дополнительная документация.

***

ToDo...

- Продолжение основной работы над готовой версией.
- Новые уровни готовы как шаблоны (скорая реализация не предвидится см. GIT версию).
- Работа над созданием шейдеров / 2D фильтров.
- Переход на API BGE Blender3D 2.59 не планируется.

***

http://sourceforge.net/projects/silverweb/files/ScreenShots/

http://silverweb.sourceforge.net/

git://silverweb.git.sourceforge.net/gitroot/silverweb/silverweb

http://youtu.be/XNGmECxhs7w

28 сентября 2011

SWA / Manual.pdf

Выпущена новая версия мануала игрока с синхронизацией предстоящего релиза SWA_Beta-1.2.

***

- Смена и упрощение фона.
- Корректив текста-описания.
- Доработки по нововведениям.
- Упрощение отображения.



***

http://sourceforge.net/projects/silverweb/files/Armory/Manual.pdf/download

27 сентября 2011

SWA / BGE / makeScreenshot.py

Для основных уровней добавлена возможность создания группы Шотов...

- Скрипт взят у Mike Pan который использовал его для сняти Шота с
каждого кадра.
- В скрипте должна быть переменная counter для создания уникального
имени файла.
- Расширение создаётся в имени скрипта операясь на установку Scene (F10).

***

Пример скрипта...

#(c) Mike Pan [mpan3.homeip.net]
#(Set Mod) Armanenshaft Team - 2011


import Rasterizer
cont = GameLogic.getCurrentController()
obj = cont.getOwner()
sep = ""
num = str(obj.counter)
filename = sep.join([num,".png"])
Rasterizer.makeScreenshot(filename)
obj.counter += 1

26 сентября 2011

Synfig Studio Update

Карлос Лопес выпустил новую версию редактора векторной 2D-анимации
Synfig Studio, в которую включена работа команды за последние месяцы.
О главном новшестве этой версии — улучшениях в слое Advanced Outline —
мы уже рассказывали примерно месяц назад, но повторить не грех: добавлен
регулятор однородности фиксаторов, улучшена интерполяция, добавлена
возможность использовать произвольные маркеры. Кроме того, замкнутые
геометрические примитивы можно создавать как слои Advanced Outline.

***

В дополнение к этому улучшена функция "Link to BLine", где теперь также
есть функция "Homogenous", суть которой состоит в следующем. Обычно при
вычислении скорости объекта, движущегося по кривой, программа опирается
на количество точек кривой. Соответственно, при прохождениии участка
кривой с большим количеством узлов объект замедляется. Новая функция
позволяет рассчитывать скорость, исходя из длины кривой, а не из
количества её точек, благодаря чему объект сохраняет постоянную скорость.

***

Некоторые изменения внесены и в работу с направляющими линиями. Теперь
расстояние прилипания к ним считается относительно текущего масштаба
просмотра холста, а редактирование направляющих учитывается в списке
изменений проекта и может быть отменено.

http://www.synfig.org/cms/en/download/stable

25 сентября 2011

Add Art / Soul

Проходная работа / Тема с SWA.

***

- Debian 6.0.2 squeeze
- Blender3D 2.49b
- GIMP 2.6.11 (GMIC)

***

- Основная сцена снята с 3D фона игрового уровня.
- Основные доработки в GMIC.

***

Полный формат...

http://armanenshaft.narod.ru/download/blender/Soul.png

24 сентября 2011

Logo Paladi / Make FX (Flame)



***

http://youtu.be/Hw-Dubz-W_Q

***

Видео материал по созданию эффекта для BGE.

- Обзор создания логотипа Палади.
- Основной концепт.
- Примеры IPO.

Спс Zone of the Enders.

23 сентября 2011

Reинжиниринг ГеймПлея / Меха+RPG

Для разбора полёта хочется обратить внимание на пару классики PS2...

- Разборка и изучения стиля Мехов (экшен 3tb).
- Разборка и изучения стиля JRPG+RPG в реальном времени.

***

Arc the Lad: Twilight of the Spirits

Если помните, одним из последних крупных релизов для PS one в США стал
Arc the Lad Collection, сборник, в котором компания Working Designs
собрала все предыдущие части ролевушки. Arc the Lad: Twilight of the
Spirits имеет к тому проекту весьма косвенное отношение – события игры
разворачиваются спустя сотни лет после Arc the Lad 3, не встретите вы и
знакомых героев. Мир поделен на две части – населенную обычными людьми,
продвигающимися по пути свободы и демократии, и место обитания
монстров-деймосов (deimos), не слишком-то дружелюбно относящихся к
соседям по планете. Вдобавок, и люди, и деймосы отнюдь не едины. Жизнь
наполнена предчувствием надвигающейся войны, беспочвенная ненависть
порождает лишь большую ненависть. Получится ли в таких условиях двум
братьям, обитающим по разные стороны границы, понять друг друга? Во что
выльется любовный треугольник? Начинаясь как очередная
"не-слишком-серьезная" ролевушка в духе 32-битных или даже 16-битных
JRPG, Arc the Lad: Twilight of the Spirits оказывается отличным примером
того, как можно перенести актуальные проблемы реального мира начала XXI
века в сказочную вселенную, замаскировать типичными для жанра шутками и
сентиментальными историями, изложить мысли разработчиков ненавязчиво, но
убедительно. Оправдывает ожидания фанатов, одним словом. Возможно, Arc
the Lad – не слишком хорошо знакомый вам сериал, чтобы делать какие-то
выводы, поэтому дам еще одну подсказку. Гипотетический Lunar 3 скорее
всего будет похож именно на Arc the Lad: Twilight of the Spirits.

Основы геймплея – ровно такие же, как в любой другой классической JRPG.
Города, магазины, NPC, инвентарь, партия героев, локации с монстрами, -
все это хорошо знакомо поклонникам жанра, да и у новичков проблем не
вызовет. Другое дело – система боя в духе тактических RPG, схожая с тем,
что мы уже видели в свежей Breath of Fire. Герои могут свободно
перемещаться по полю, заходить в тыл к врагам, использовать особенности
рельефа. Уничтоженные монстры оставляют после себя золото и предметы,
которые можно подбирать прямо во время боя. Разумеется, присутствует и
очередной вариант системы прокачки героев, получения новых способностей
и апгрейда оружия, но, к счастью, не страдающий от излишней
навороченности. Однако, хоть Arc the Lad и может похвастаться
разнообразием и оригинальностью фич, сложность прохождения слишком низка
для того, чтобы геймеру приходилось использовать весь их потенциал.
Секретных же локаций и необязательных квестов почти нет, разве что можно
попробовать добавить себе в команду двух дополнительных героев.

Говоря о внешнем виде игры, хочется отметить то, что ожидали геймеры
худшего, а получили нечто… неоднозначное. Локации, как правило,
выполнены на современном уровне, а вот модели героев смахивают на то,
что мы видели в убогих ролевушках первого поколения для PS2. Впрочем, в
бою и сюжетных сценах все недостатки скрывает хорошая работа с камерой и
вполне приличная анимация. Странная для JRPG музыка походит на
эксперимент в духе "мы пойдем другим путем", мягкие классические мелодии
слишком уж часто сменяются завыванием волынок и действующими на нервы
ритмами электрогитары. Великолепно озвученные диалоги резко
контрастируют с убогими выкриками героев во время боя. В список
достоинств звукового сопровождения можно записать поддержку Dolby Pro
Logic II.

Возможно, не самый интересный летний релиз, однако принципиальным
противникам экспериментов вроде Breath of Fire V, Unlimited SaGa и
сериала .hack, уже давным-давно изучившим вдоль и поперек Xenosaga,
придется по вкусу. Эту игру хочется проходить до конца.


***

События происходят спустя пять лет после Arc The Lad: Twilight of the
Spirits
. Молодой человек по имени Эдда живет скучной обыденностью островной
жизни. Но все меняется, когда он встречает загадочную Кирику - охотника
по призванию.Сам Эдда-начинающий экзорцист,однако столкновение с
вопиющими реалиями жизни застсвляет его сменить амплуа на того же
охотника и отправиться в путешествие,обещающее стать долгим
увлекательным и опасным предприятием по спасению Мира.

Arc The Lad: End of Darkness — первая игра популярной серии японских
РПГ, в которой реализована реал-таймовая боевая система. В игре
действует онлайн-режим на восемь игроков для боев четыре на четыре, а
также режим кооперативного прохождения, где команды из четырех геймеров
исследуют уровни, добывают редкие предметы и воюют с монстрами. Несмотря
на усиливающееся влияние экшнсоставляющей, Arc The Lad: End of Darkness
остается ролевой игрой с множеством характеристик и параметров и
захватывающим сюжетом!


***

Zone of the Enders: The 2nd Runner Special Edition

В процессе разработки этого великолепного меха-боевика принимал участие
сам Хидео Кодзима - создатель знаменитой серии игр Metal Gear,
выступивший в этот раз в роли продюссера, а также Йодзи Синкава -
дизайнер техники, известный всем по той же серии. В Zone of the Enders:
The 2nd Runner вы управляете молниеносным роботом и сражаетесь с врагами
с помощью новых видов оружия, маневров и тактики. Сражения проходят в
реальном времени как в городе, так и во вражеских крепостях, и даже в
глубинах космоса!

- Мощный экшен с потрясающими видеороликами;
- Уничтожайте сотни врагов за раз;
- Новые виды оружия расширяют стратегические возможности игрока во время
сражений;
- Захватывающий сюжет.

Специальная редакция игры была значительно переработана и дополнена. Из
наиболее заметных отличий следует отметить: новые режимы VR Training,
дополнительные сценарии, больше уровней сложности, видеоклип на ремикс
композиции "Beyond the Bounds", улучшенное сглаживание и графические
оптимизации, новые 3D-модели, новые Орбитальные Фреймы для Versus-режима."

***

Дополнительно можно сказать что существуют OVA и TV анимешки по играм.
Если нет Плойки на http://www.youtube.com/ можно лицезреть.

Довольно простой гаймплей игр а также динамика + эффекты даёт хорошую
пищу для размышлений и создания своих концептов.

22 сентября 2011

SWA / Game Update / update.py / 1.00

Ввиду поднятия Git версии написан простой скрит оперативного обновления
версии игры...

- Загрузка Git версии.
- Загрузка Новой версии (пока только основной Мануал).
- Загрузка стабильной версии (переход в подкаталог сайта).

***

Пример листинга скрипта...

#! /usr/bin/python
# -*- coding: utf-8 -*-
import subprocess, sys, os
import webbrowser


# Version of the SWA Build Wizard
# Version = "1.01"

# Add Log
sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
tee = subprocess.Popen(["tee", "update.log"], stdin=subprocess.PIPE)
os.dup2(tee.stdin.fileno(), sys.stdout.fileno())
os.dup2(tee.stdin.fileno(), sys.stderr.fileno())

# Print Text
print "-------------------------------------------"
print " "
print "*******************************"
print "Welcome! SWA-update v.1.00"
print "*******************************"
print " "
subprocess.call('whoami', shell=True)
print " "
print "- Check for new versions of the gemes ..."
print " "
print "- 1 - Download Git version (unstable)"
print "- 2 - Download New version (only Manual.pdf)"
print "- 3 - Download Release version (stable)"
print " "
print "-------------------------------------------"


# Add Input
update_options = str.lower(raw_input("Please choose an option: "))

# Download Git version (unstable)

if update_options in ('1'):


subprocess.call('git clone
git://silverweb.git.sourceforge.net/gitroot/silverweb/silverweb',
shell=True)

# Download New version (only Manual.pdf)

elif update_options in ('2'):

subprocess.call('wget -c -N
http://sourceforge.net/projects/silverweb/files/Armory/Manual.pdf',
shell=True)

# Download Release version (stable)

elif update_options in ('3'):

webbrowser.open('http://sourceforge.net/projects/silverweb/files/')


# End

print "Good bye"

Silver Web:Angedonia / Add GIT Version

Добавлен доступ к свежей Git версии проекта...

- Добавления в Git будут происходить при глобальных доработках или исправление критических ошибок.

- Git версия имеет статус пред релизной и является не стабильной.

- Содержит основные файлы проекта (нет док / видео и тд.)

- В основных файлах текстуры и звуки запакованы.

- Общий вес составляет 200+ мб. (качаем по выбору).


***

$ git clone git://silverweb.git.sourceforge.net/gitroot/silverweb/silverweb

***

http://silverweb.git.sourceforge.net/
http://silverweb.sourceforge.net/


SWA / Doc / Art / update.py / 1.00

Написан простой скрипт для апдейта документации...

- Доки по Армори.
- Доки по Истории.
- Общий каталог Арта.

***

- Каждая папка (/Doc/Armory/ или /Doc/Story) содержит скрипт апдейта и
список файлов.
- Ограничения только на закачку тех файлов которые указаны в файле
links.inf.
Для подавления общего трафика.

- В скрипте указано сравнение с текущей версией файла в каталоге.
- Докачка при дисконекте.

***

Пример листинга...

#! /usr/bin/python
# -*- coding: utf-8 -*-
import subprocess, sys, os
import thread, time
import webbrowser


# Version of the SWA Build Wizard
# Version = "1.01"

sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
tee = subprocess.Popen(["tee", "update.log"], stdin=subprocess.PIPE)
os.dup2(tee.stdin.fileno(), sys.stdout.fileno())
os.dup2(tee.stdin.fileno(), sys.stderr.fileno())

# Print Text
print "-------------------------------------------"
print " "
print "*******************************"
print "Welcome! SWA-update v.1.00"
print "*******************************"
print " "
subprocess.call('whoami', shell=True)
print " "
print "- Check for new versions of the documents ..."
print "- Press: Enter"
print " "
print "-------------------------------------------"

# Key Pause
def myfunction(stop):
while 1:
print '.',
if stop[0]: break
time.sleep(0.3)

stop = [0]
thread.start_new_thread(myfunction,(stop,))
raw_input('')
stop[0]=1

# Update Repository


subprocess.call('wget -c -N -i links.inf', shell=True)

# Print Text

print " "
print "*******************************"
print " "
print " "
print "- Wishes positite game site."
print "- http://silverweb.sourceforge.net/"
print " "
print "-------------------------------------------"
print "Done!"

# Key Pause
def myfunction(stop):
while 1:
print '.',
if stop[0]: break
time.sleep(0.3)

stop = [0]
thread.start_new_thread(myfunction,(stop,))
raw_input('')
stop[0]=1


#webbrowser_swa
#webbrowser.open('http://silverweb.sourceforge.net/')

20 сентября 2011

WiKi Blender3D Update

Обновление сайта Вики...

- Доработан интерфейс.
- Вывод древа каталога.
- Доработан дизайн.

***

http://wiki.blender.org/

19 сентября 2011

Bullet 2.79

После нескольких месяцев работы выпущена новая версия Bullet — свободной
библиотеки для моделирования физики в играх и кино.

Главным новшеством является новый способ декомпозиции в выпуклые
оболочки, позаимствованный из библиотеки HACD, созданной Халедом Маму
(Khaled Mamou). Работа по интеграции кода в Bullet была выполнена
Суджеоном Кимом (Sujeon Kim). Другим новшеством является система сборки
premake, актуальная для пользователей Windows.

***

http://code.google.com/p/bullet/downloads/list

17 сентября 2011

SWA / Story / Blue Monk

Дополнительная редакция в хронологии созвездия...

- Правка текста.
- Правка событий.
- Дополнения.
- Вывод в папку игры / PDF.
- Доработки католога Story для сайта.

***

-Обозначения-

Круин - крупица,единица соц жизни Paladi.

34С0 - между цифрами буква,префиксное увлечение числа лет по норме
Синего Монаха.

+102+4 - новый периферический календарь Paladi. Выход в космоисчесления.

DE57/01 - DE57 последний годовой оборот планеты Rekonar перед
столкновением рас. /01 - первый шаг к глобализации веры.

Фе и Фу - начало имён любого Paladi - ввиду дыхания песком.

-Тёмные Века -


* 0С год - Пламя создало песок (предположение).

* 75-25С0 год - череда экологических катастроф.

* 34С0 год - первые записи о Синем Монахе (звезда).

* 4С16 год - появление Великого Червя (становление осознания бытия).

* С462 год - Синий Монах (звезда) провозглашает новую догму, что только
их мысль являетсяосознания божественной, остальные обзываются
Гритиидимами ("Люди песка").

* 4С90 год - около 50 Круинов переправляются через Великую Пустыню на Южный
Полюс.

* 497С год - большинство Круинов пытаются найти что то кроме
песка,становление Завета Твёрдой Почвы.
.
* 51С3 год - Еретики пропагандируют жизнь без песка - Завет Твёрдой Почвы.


-Еретические Войны -

* С520 год - начало Еретических Войн. Война длилась 3С00 лет.

* 65С2-С700 года - воюющими Круинами предпринимается 3 похода на Южный
Полюс - поиск Твёрдых Земель.

* 69С8 год - ФеРайд ФуГнап предпринимает последний поход на Южный Полюс,
который заканчивается полным провалом.

* 7С10 год - ФеРайд ФуГнап провозглашает о поражении Еретиков.

* 7С17 год - Разрушен город Туйфун - возведение первой столицы Жёлтая
Метель.

-Эпоха Просвещения -

* 81С0 год - Начало Эпохи Просвещения.

* 830С год - Жёлтая Метель перестаёт быть столицей.

* ~С905 год - на Rekonar царит мир.

-Космическая Эра -

* +102+4 год - массовая акция протеста против осеменения песка грешными
Звёздами.
Суицид высших Каст Paladi. +2 года стопора по развитию космологии.

* +1+106 год - обнаружение артефактов - Металлоидов.

* +11+10 год - Добыча,Изучение Металлоидов.

* +111+2 год - обнаружение особых свойств Металлоидов - возможности
создания аномалии полей гравитации.

* +1135+ год - Массовые Медитации-Изучения созвездия Синего Монаха -
составление первых карт.

* +1+155 год - Обще планетное Согласование, объединение усилий всех
Paladi для
выхода в космос.

* +11+59 год - утверждёны планы постройки Космостанций и кораблей.
Подготовка к
строительству.

* ~+118+0 год - начало строительства великого корабля ФеРан.

* +1185+ год - удачные испытания нанотехнологий. ФуКан Нег провёл в
криокапсуле 6 месяцев. После написал книгу стихов.


* ~+121+5 год - окончание строительства ФеРан.

* ~+12+03 год - Разработка проекта Караван . 450 тысяч добровольцев
покидают Rekonar.

* ~+120+5 год - ФуПа Мат отправляется к границе солнечной системы -
первые столкновения с чуждыми культурами.

* +1216+ год - Разработка проекта АнтиЦикличность.Вера ФеКасто Ра
набирает оборот,
начало нового летосчисления.

* DE57/01 год - становление мелких союзов.Продвижение Веры по Галактике.


...

Paladi продвигаются в глубины.
Созерцание и открытие 4х планет в системе Синего Монаха.


* DE57/02 год -открытие Lisukan.

* DE57/07 год -открытие Nibulada.

* DE57/11 год -открытие Darax.

* DE57/27 год -открытие Xinamo.


...

-Эра Angedonia-

* DE57/50 год - Найдены все части Ядра.

* DE57/53 год - Активация Ядра.

* DE57/54 год - Начало разрыва пространства галактики Blue Monk.

* DE57/58 год - Прорыв под вселенной Angedonia.

* DE57/59 год - Закончен цикл нового мироздания (обьеденение общего
пространства вселенных Angedonia / Blue Monk).

* DE57/65 год - Первые контакты с Валадорес.

* DE57/68 год - Попытки установить контакт с Валадорес.

* DE57/70 год - Начало войны с Angedonia.

Продолжение следует...


***

https://sourceforge.net/projects/silverweb/files/Story/

15 сентября 2011

SWA / Armory / MS-1.1

Система генерации ракетного вооружения Палади (MS-1.1

***

Данное вооружение оснащается корветами среднего класса LiSUS A-2.
Ранние подклассы LiSUS A и LiSUS A-1 имели схожую схему.
Были отозваны с производства ввиду ошибок генерации исходного материала.

Данное описание рассматривает основные принципы генерации ракетной системы.

Ракетная система Палади имеет множество классов и технологических
ответвлений.
Базовое вооружение можно разделить на два класса:

1 — Блуждающия звезда.
2 — Штурмовой дождь Круина.

...

Блуждающия звезда — первая разработка ракет класса воздух-воздух.
Имеет ряд недостатков ввиду теплового наведения и бесконтрольного поведения.
Очень часто на полях сражений пилоты использующие ракеты в 45% случаев,
атаковали сами себя тем самым вносив развал боевых звеньев.

Курсовой путь ракеты пролегает до ближайшей вражеской цели,
усложняя тем самым прицельный ракетный огонь.

Как правило, боевая часть подрывается неконтактным взрывателем на
некотором расстоянии от цели. Цель поражается либо осколками оболочки
боевого заряда, либо стержнями, которые способны перерубить летательный
аппарат.

Штурмовой дождь Круина — по суте дополнение к Блуждающей Зведе.
Для усиления ракетной атаки а также прицельного огня ШДК-1 получил ряд
преимуществ.
ШДК-1 имеет кассетный подкласс ракетной системы.
По мимо этого ШДК-1 являются управляемыми ракетами.
Генерация ракет получила ряд усложнений в виду сложной схемы
носитель-кассеты.

На Схеме-1.0 наглядна продемонстрирована общая схема генератора.

1 — Инициирующие ВВ.
2 — Бризантные ВВ.
3 — Метательные смеси.
4 — Усложнённый процесс молекулярного распада.
5 — Выход готового продукта и подача на штоки.

Инициирующие ВВ Палади обладают высокой чувствительностью к внешним
воздействиям.

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

Типичными представителями инициирующих ВВ являются гремучая ртуть, азид
свинца, ТНРС,Аломоид,Перенакс,Оксид Ниагра.

Основная добыча — планета Rekonar.

Бризантные ВВ Палади имеют намного меньшую чувствительность к внешним
воздействиям по сравнению с инициирующими ВВ. Для инициирования взрыва
заряда таких ВВ необходим взрыв небольшого (несколько грамм) заряда
инициирующего ВВ, помещенного внутрь заряда бризантного ВВ.

Бризантные ВВ подразделяются на :

ВВ повышенной мощности (ЭН,октоген, тетрил,нимул);
ВВ нормальной мощности (пескон, пластические ВВ);
ВВ пониженной мощности (протомилин,зинадин,полнтриад).

Основная добыча — планета Nibulada.

Метательные ВВ Палади довольно просты:
Смеси пыли Синего Монаха (пыль звезды) и дегенерата полнтриада.

По общей схеме три генератора мобильно-миниатюрного свойства в режиме
нон-стоп,
постоянно генерируют три основных вещества,отдавая большую часть времени,
на выходной генератор формирования массы.

Генератор формирования массы ранее задумывался как прототип атомного
реактора,
но был снят на ранней стадии производства ввиду своей не безопасности.

ГФМ — довольно сложный механизм имеет ряд критических свойств.
Например при постоянном перемещении,повреждении несущего корабля
происходят сбои в моликулярном дозировании веществ,
что приводит к раним детонациям ракет в пространстве.

ГФМ большую часть времени и ресурсов тратит на создание твёрдых
тел-оболочек.
Уплотнённый корпус ракеты требует время на создание однородной массы.
Вызванные сбои в генераторе могут превести к излишней хрупкости ракеты.


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

Немение интересной функцией ГФМ является создание ШДК-1.
Инженеры Палади в шутку называли их Почки или Нарост.
Базисные свойства ГФМ не имели возможности создания двух копий одновременно.
Поэтому ШДК-1 является своеобразным наростом на корпусе БЗ-1.
В процессе полёта -Почка- дорабатывается и инициализируется (набухает).

Такой хитрый технический манёвр дал дополнительное свойство ШДК-1
как управляемые ракеты в виду своих минимизированых свойств.


Основные характеристики БЗ-1:

стартовая масса, кг — 52
длина, м — 2,6
диаметр, м — 0,2
размах крыльев, м — 0,3
размах рулей, м — 0,5
высота поражаемых целей, км — 0,02-17
перегрузка поражаемых целей, g — до 9

дальность пуска БЗ-1:

максимальная, км — 1.5
минимальная, км — 0,1
система наведения — инерциальная с радиокоррекцией + активное
радиолокационное самонаведение
боевая часть— стержневая + мультикумулятивная
масса боевой части, кг — 22,5
взрывательное устройство — лазерный неконтактный и контактный датчик цели
двигательная установка — однорежимный РДТТ.


Однорежимный РДТТ — довольно низкопробный вариант из вооружения Палади.
В виду низкого качества метательных смесей ракета оставляет дымоподобный
след
характеризуя себя в пространстве для врага,
но тем самым даёт пилоту визуальную часть полёта.

Основные характеристики ШДК-1:

стартовая масса, кг — 16
длина, м — 0,6
диаметр, м — 0,1
размах крыльев, м — 0,1
размах рулей, м — 0,2
высота поражаемых целей, км — 0,02-19
перегрузка поражаемых целей, g — до 9

дальность пуска ШДК-1:

максимальная, км — 1.2
минимальная, км — 0,3
система наведения — инерциальная с радиокоррекцией + активное
радиолокационное самонаведение
боевая часть— мультикумулятивная
масса боевой части, кг — 1,5
взрывательное устройство — лазерный неконтактный и контактный датчик цели
двигательная установка — однорежимный РДТТ.

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

Сам звук в вакууме не слышен но резонирует в основную кабину пилота.

SWA / Armory / About

***


– Космос лучше всего исследован научными фантастами -
Аноним Круин.

Довольно часто в современных играх разного направления можно встретить
описания
Armory. Иными словами арсенал вооружения и предметов которые
используются в игре.
Основным типичным методом являются военные игры и исторического уклона.
Для нас
основной причиной создания арсенала стала мысль о возможности
дополнительного
творчества а также абстрактного полёта мысли.

Создать в движке игры красиво анимированные виджеты с картинками ракет
или кораблей
дело не хитрое. Нашей целью является создание дополнительного описания
для Мануала
игры. Всё что мы описали в Армори эхом отдаётся в игре.

Например произвольная детонация ракет или почему нельзя фиксировать цель
а потом
производить запуск ракет. Всё это отображается в тактико технической
части Армори.
Основной концепт написан с уклоном на научный язык и термины,но это
сделано лишь для
атмосферы научной фантастики. Упор сделан на основную Земную документацию по
разнообразному вооружению,проблем в прочтении возникать не должно.

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

Выдержка:

Подача на нижние штоки стабилизаторов корабля не столь сложна.
Единственным минусом является генерация звука при расширении массы.
Сам звук в вакууме не слышен но резонирует в основную кабину пилота.
Отображение полного Армори в меню игры пока под вопросом,да и нужно ли
оно там?
Поэтому все данные описаны и перенесены в PDF формат. Возможна ссылка в
меню игры.

***

Думаем мысль и цели о Армори ясны.


http://sourceforge.net/projects/silverweb/files/Armory/

Онлайн-семинар по архитектурному моделированию в Blender

18 сентября, с 11:00 до 12:30 пройдет онлайн-семинар, посвященный
архитектурному моделированию в Blender.

Семинар будет вести Игорь Безуглый, директор и главный визуализатор
компании «Слон», занимающейся визуализацией зданий «на местности» при
получении разрешения на строительство в черте города. За пять лет работы
в этой сфере у Игоря набралось достаточно опыта, которым он хочет
поделиться с начинающими и более-менее опытными художниками,
использующими Blender.

Вот что говорит сам ведущий: «Тема семинара называется "Основные моменты
архитектурной визуализации в Blender". В рамках семинара я планирую
уделить основное внимание распространённым ошибкам, допускаемым при
моделировании экстерьеров и интерьеров, и отдельно рассмотреть наиболее
сильно интересующий всех вопрос — как правильно устанавливать камеру для
композинга фото и 3D.»


***

http://bbb.aceler.ru/node/21

3Delight для Blender

Мэтт Эбб только что выпустил новую версию своего экспортировщика из
Blender в движок рендеринга 3Delight, совместимый с Renderman. Главным
новшеством является новый способ освещения, использующий облако точек.

***

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

http://mattebb.com/projects/3Delight_blender/download/render_3delight_0.7.0.zip

14 сентября 2011

Silver Web:Angedonia / Ход разработки / Осень

Логи списка доработок...

***

- logo Редезайн логотипов используемых программ.
- (1) Корректив расстояния фиксатора ракет.
- (1/2/3) Смена инвертирование осей при вращении.
- (2) Оптимизация нормалей и материалов моделей.
- (1/2/3) Корректив визибла движков ботов / дроида игрока.
- (1/2/3) Смена базовой модели Дроидов игрока / модель / звук / текстура
/ логика.
- (1/2/3) Увеличен радиус захвата радара у дроида игрока.
- (3) Скорость дронов врага увлечение.
- (1/2/3) Коррективы логики стрельбы дроидов игрока.
- bin Пере сборкаа бинарников gettext 0.18
- logo Смена формата logo на .ogg / Доработки видео лого.
- logo Редезайн логотипов используемых программ / логотип debian.
- script Написан простой скрипт для проверки сис библиотек /
checkinstall.py.
- lib Почищена папка lib до основных библиотек.
- script Дописан простой скрипт для проверки сис библиотек /
checkinstall.py / вывод лога.
- script Написан скрипт для вывода лога движка игры.
- script Написан скрипт для BP выбор режима видео.
- kernel Хак патчи для ядра 2.6.32 / тесты.
- bin Бинарник x_64 перенесёт в разряд тестируемых.
- kernel Переход на long time ядро 2.6.32 / тесты / разработка.
- (1/2/3) Убрано название сектора после сброса заставки / добавлен
быстрый рестарт уровня с FX.
- about Доработки IPO / смена текстуры текста / корректив материала.
- (1/2/3) Смена FX отката сохранения позиции игрока / FX как и timeport.
- (3) Увлечение жизни врат / базовая версия анти ракетной системы
ботов.
- (2) Уменьшение времени FX аномалий для игрока.
- (2) Базовая версия анти ракетной системы ботов.
- (1/2/3) Удаление сцены порта при Деат игрока.
- logo Правка видео скрипта для лого.
- Fon3D Правка логики скрипта фона 3D.
- Option Приращение описания карты кнопок / смена фона.
- (1) Доработки физики ботов.
- (2) Доработки нормалей МатШипа.
- (2/3) Доработки логики при уничтожении крыла ботов.
- Brif-13 Пропуск заставки / ESC.
- (2) Оптимизация материалов МатШИпа.
- (1/2/3) Доработки логики сцены TimeJump.
- (2) Уменьшена броня Наводки-Матшипа.
- (2) Доработки логики поведения ботов при атаке матшипа.
- (2) Смена режима темпа стрельбы игрока / Матшип-боундс цилиндр
минус спекуляр.
- (1/2/3) Исправлена логика HUD1 подачи ракет / материал / добавлен звук.
- (1/2/3) Добавлен звук старта кассетных ракет.
- (1/2/3) Добавлен 3D звук атаки ботов (фазoр).
- (2) Добавлен звук тревоги при движении матшипа.
- (2) Доработки физ свойств объектов / Щит+радар наводка матшипа.
- (2) Доработки атаки матшипа (near) с интро убрана активная стрельба.
- (2) Корректив расчётов физики матшипа / вызов поддержки игрока
бесконечен через опр. время.
- (3) Корректив физики и логики Vala-Dron / активное приследование
игрока.
- (1) Корректив дампинга физики корабля игрока.

Возобновлена локализация Blender

Судный день наступил безо всякого Скайнета: благодаря одному из проектов
GSoC2011 программа Blender снова локализуема, а файлы PO обновлены.
Отважного переводчика ждут 6273 сообщения, из которых на русский язык в
версии из trunk точно переведены лишь 292, а в чуть устаревшей ветке RU
— немногим менее тысячи.
Работу по обновлению русской локализации в июле начал Николай Фомичев,
которому редакция линуксграфикса от всей души желает выдержки и
терпения. Файлы переводов доступны в репозитории SVN на Google Code.

Только нах*я это нужно не кто так и не понял... Безделие порождает
ересь?:-)))

Напомним, что последний раз русская локализация Blender обновлялась в
2004 году, а переход на новый интерфейс в ветке 2.5х лишь добавил
переводчикам работы.

***

http://code.google.com/p/blender-translation/source/browse/

13 сентября 2011

Add Art / Free Universe

Проходная работа на Linux тематику...

***

- Debian 6.0.2 squeeze
- Blender3D 2.49b
- LuxRender 0.8
- LuxMicrosha x3.5
- GIMP 2.6.11 (GMIC)

***

Две наработки...

- Свободное небо.
- Искры космоса.

Первая выполнена с учётом солнца.
Вторая в RGBA+наложение слоя фона.
Немного поигрались с Glare в люксе.

***

Полный формат...

http://armanenshaft.narod.ru/download/blender/Tux_Un_sky.png
http://armanenshaft.narod.ru/download/blender/Tux_Un_space.png

12 сентября 2011

Томасом Крийненом об IfcOpenShell, Blender и архитектурной визуализации

В последние годы растёт популярность Blender как инструмента
архитекторов. О реальном применении программы для градостроительного
проектирования можно было прочитать уже пять лет назад, а развитие
LuxRender и YafaRay сделало Blender конкурентоспособным инструментом
архитектурной визуализации. Темпы роста интереса к программе, тем не
менее, сдерживаются не только некоторыми ограничениями в самом
приложении, но и проблемами с возможностью открывать в Blender файлы
проприетарного ПО.

Молодой нидерландский архитектор и программист Томас Крайнен (Thomas
Krijnen) начал в этом году проект IfcOpenShell, представляющий собой
библиотеку для чтения и записи файлов IFC — открытого формата, наряду с
gbXML используемого в методологии информационного моделирования зданий
(BIM). Эта методология, интерес к которой в индустрии тоже растёт,
позволяет использовать в рабочих процессах произвольное ПО, что повышает
шансы Blender на занятие более прочной позиции в индустрии.

Томас уже взаимодействует с участниками проектов BIMserver и osBIM, но в
своём собственном проекте он пока что один. Поэтому несколько недель
назад разработчик опубликовал обращение к сообществу, в котором попросил
посильно поучаствовать в проекте. Его интересуют не только патчи, но и
сообщения об ошибках, тестовые файлы и т.д. На linuxgraphics.ru
опубликовано интервью, в котором Томас подробнее рассказывает о проекте
и о своём взгляде на Blender как инструмент архитектора.

***

http://linuxgraphics.ru/articles.php?article_id=122

09 сентября 2011

Blender3D / Python reference 2.59.2

Дополнительный справочный документ по стабилизации API функций 2.59.2.
Советы и хитрости.

***

Недавно я решил собрать воедино некоторые из вещей, которые я узнал во
время работы с питоном,некоторые сценаристы не знали о менее очевидных
особенностях.

***

http://www.blender.org/documentation/blender_python_api_2_59_2/blender_python_reference_2_59_2.pdf

http://www.blender.org/documentation/blender_python_api_2_59_2/info_tips_and_tricks.html

http://www.blender.org/documentation/blender_python_api_2_59_2/info_gotcha.html

08 сентября 2011

Сектор Лирики / Расчет освещения

Известно, что вклад в освещенность точки от одного фотона рассчитывается
как величина энергии этого фотона, поделенная на квадрат расстояния от
него до рассчитываемой точки. Чем дальше фотон от точки, тем меньше его
вклад. Полная освещенность точки будет определяться как сумма вкладов от
всех фотонов, собираемых в пределах круга заданного радиуса вблизи
точки. В расчетах также учитывается BRDF (Bidirectional
Reflectance/Refractions Distribution Function), описывающая конкретные
свойства материала поверхности, которой принадлежит рассчитываемая точка.

Чем больше фотонов участвует в расчете освещенности, тем точнее
результат. Но только в том случае, если сбор осуществляется в пределах
круга малого радиуса. Увеличение радиуса сбора приводит к размыванию
рассчитанной освещенности тем больше, чем больше площадь сбора (радиус).

Таким образом, главным условием точности расчета освещенности методом
фотонных карт является сбор как можно большего числа фотонов с площади
как можно меньшего радиуса. Следует учитывать, что при увеличении числа
собираемых фотонов, увеличивается и время расчета, причем довольно
сильно. Поэтому, более правильно сформулировать предыдущее требование
так: главным условием точности расчетов методом фотонных карт является
определение минимального числа собираемых фотонов, при котором
рассчитываемая освещенность будет достаточно точной, в пределах круга
как можно меньшего радиуса.

На практике это правило сводится к правильному определению размера
фотонной карты, количества собираемых фотонов и радиуса сбора. Для
определения величин этих параметров можно (нужно) использовать правило,
о котором говорилось в первой части обзора:

Правило №1:

(число собираемых фотонов) = (локальная плотность фотонной карты вблизи
рассчитываемой точки) х (площадь сбора фотонов в круге некоторого радиуса).

Далее везде вместо размера фотонной карты будет использоваться ее
плотность, поскольку это удобнее. Под плотностью фотонной карты
понимается количество фотонов на единицу площади. В самом простом случае
плотность определяется как отношение размера фотонной карты к общей
площади всех поверхностей в сцене, которые принимают участие в
формировании фотонных карт. На самом деле, плотность фотонной карты
имеет локальный характер - она будет разной вблизи разных точек
поверхности. В целом, плотность фотонной карты зависит от количества и
настроек источников света (прежде всего - от количества испускаемых
фотонов), геометрии сцены и свойств материалов поверхностей. К счастью,
плотность фотонной карты для конкретной сцены довольно легко измерить
практически.

Используя параметры brazil, правило №1 может быть переписано так:

Правило №2:

Photons in Estimate = (локальная плотность фотонной карты вблизи
рассчитываемой точки) x pi x (Max Search Radius)^2

Параметр Photons in Estimate имеет смысл количества фотонов, собираемых
для расчета освещенности точки, Max Search Radius - это радиус площадки
сбора, (Max Search Radius)^2 - квадрат радиуса сбора, pi = 3.14.

Правило №2 хорошо тем, что позволяет по известным значениям двух
параметров определять третий. Например, если известно значение Photons
in Estimate и Max Search Radius, можно определить плотность фотонной
карты, а, следовательно - ее размер. Если известна плотность фотонной
карты и Photons in Estimate, можно узнать радиус сбора фотонов. Если
известен радиус сбора и плотность фотонной карты, можно определить,
сколько фотонов будет собрано.

А раз так, мы можем планировать параметры фотонной карты, в зависимости
от поставленных перед рендером целей.

Целей таких может быть только две. Первая - получить просто "гладкий"
рендер с равномерными переходами светотени, без видимых пятен. При этом
точность вторичного освещения значения не имеет. Вторая - достичь
точности рассчитываемой освещенности с одновременной гладкостью рендера.
Эти цели позволяют определять дополнительные требования для величин
Photons in Estimate и Max Search Radius, тогда плотность (размер)
фотонной карты может быть спланирована при помощи вышеуказанного правила.

Итак, величина Photons in Estimate, прежде всего, влияет на точность,
гладкость и время расчетов:
чем выше значение Photons in Estimate, тем точнее расчет освещенности,
но только в том случае, если радиус сбора мал (3-10 сантиметров);
чем выше значение Photons in Estimate, тем более гладким будет рендер.
Чем выше плотность фотонной карты, тем большее значение Photons in
Estimate потребуется для достижения гладкости рендера;
чем выше значение Photons in Estimate, тем больше время расчетов.
На практике, конкретное значение Photons in Estimate для достижения
гладкости рендера может быть получено пробным избирательным рендером
"критической" части сцены, например - углов. Для фотонных карт малой
плотности "гладкое" значение Photons in Estimate может лежать в пределах
100-800 фотонов, для средней плотности - 1000-1500 фотонов, для высокой
плотности - 2000-2500 фотонов. На гладкость рендера большое влияние
оказывают также энергии фотонов и количество их отскоков - повышение
значений этих параметров приводит к увеличению значения Photons in
Estimate для достижения гладкости.

Величина Max Search Radius также оказывает влияние на точность и
гладкость расчетов: чем меньше Max Search Radius, тем точнее расчет
(меньше размытость вторичного освещения). Уменьшение радиуса сбора,
помимо повышения точности расчетов, приводит к увеличению "гладкого"
значения Photons in Estimate и как следствие - к увеличению плотности
фотонной карты. Это означает, что точность и, одновременно, гладкость
рендера могут быть получены только на фотонных картах высокой плотности,
когда размер фотонной карты составляет десятки миллионов фотонов.

Радиус сбора, позволяющий получать правильное вторичное освещение, лежит
в диапазоне 3-10 сантиметров, в зависимости от наличия в сцене мелких
объектов.

Размер фотонной карты и ее плотность при заданном количестве испускаемых
источниками света фотонов - уникальная характеристика конкретной сцены,
учитывающая ее геометрию, особенности освещения и свойства материалов.
Отношение размера фотонной карты к количеству испущенных источниками
фотонов есть величина постоянная. Это значит, что, увеличивая в
несколько раз количество испускаемых фотонов, во столько же раз
увеличится размер фотонной карты, если сцена остается неизменной. На
этом свойстве, кстати говоря, основывается прогноз размера фотонной
карты в brazil. И это же свойство позволяет изучить характерные
особенности сцены при помощи фотонной карты малой плотности, чтобы затем
планировать расчет освещенности с картами любой плотности и размера.

Сектор Лирики / Фотон

Фотон - это элементарное возмущение электромагнитного поля

Иногда ошибочно считается, что электромагнитные кванты - это всегда
микрочастицы (фотоны), но это неверно, потому что их длина волны может
быть любой. Например, существуют электромагнитные кванты с длиной волны
21 см, свойства которых можно исследовать с помощью обычных радиоантенн,
т.е. наблюдать у них электрические и магнитные потоки индукции. Таким
образом, экспериментально подтверждено, что кванты электромагнитного
потока излучения, как и все электромагнитные волны, имеют полевую
структуру, т.е. состоят из электрических и магнитных потоков и,
соответственно, на них распространяются все законы электродинамики.

Поэтому, как любые электромагнитные волны, фотоны можно полностью
рассчитывать чисто на основе электродинамики, используя только
электромагнитные постоянные. Чтобы найти электромагнитную энергию
фотона, надо посчитать энергию электрического потока и энергию
магнитного потока, а потом сложить их. Электрические и магнитные потоки
(поля) - это реальные физические объекты, представляющие одну из форм
материи, которые обладают энергией и массой. Электрический поток - это
количество электричества (единица кулон), магнитный поток - это
количество магнетизма (единица вебер).

Экспериментально установлено, что кулон и вебер являются квантованными
физическими величинами, которые могут принимать только дискретный ряд
значений. Соответственно, электромагнитные волны, из-за дискретности
электрических и магнитных потоков, также являются дискретными. Фотон -
это движущееся дискретное поперечное электромагнитное возмущение,
состоящее из кванта электрического потока и кванта магнитного потока,
представляющее возбужденное состояние поля. Надо заметить, что все
частицы, а не только фотоны - это возбужденные состояния полевой среды,
которые при движении представляют волну де Бройля.

02 сентября 2011

Psyco - компилятор обработки Python

Как Psyco работает

Чтобы полностью понять Psyco, вам, вероятно, потребуется хорошо
разбираться и в функции eval_frame() интерпретатора Python, и в
ассемблере i386. К сожалению, сам я не могу претендовать на роль
эксперта, но думаю, что смогу объяснить Psyco в общих чертах, не
допуская слишком серьезных ошибок.

В обычном Python функция eval_frame() - это внутренний цикл
интерпретатора Python. В основном, функция eval_frame() смотрит на
текущий байткод в контексте выполнения и переключает управление в
функцию, подходящую для реализации этого байткода. Специфика того, что
эта функция поддержки будет делать, зависит, в общем, от состояния
различных объектов Python, находящихся в памяти. Поясним - суммирование
объектов Python "2" и "3" приводит к результату, отличному от
суммирования объектов "5" и "6", хотя обе операции обрабатываются одинаково.

Psyco заменяет функцию eval_frame() составным оценочным модулем.
Существует несколько способов, позволяющих Psyco улучшить то, что делает
Python. Во-первых, Psyco транслирует операции в до некоторой степени
оптимизированной машинный код; само по себе это приводит только к
незначительным улучшениям, поскольку то, что машинный код должен
выполнить, - это то же самое, что делают обработанные функции Python.
Более того, то, что является "обработанным" в трансляции Psyco, это
больше, чем выбор байткода Python, Psyco также уточняет значения
переменных, которые известны в контексте выполнения.

Например, в коде, аналогичном приведенному ниже, переменная x
распознаваема на протяжении цикла:

x = 5
l = []
for i in range(1000):
l.append(x*i)


Оптимизированной версии этого кода не нужно умножать каждый i на
"содержимое переменной/объекта x" - менее расточительно просто умножать
каждый i на 5, исключая тем самым поиск/косвенную ссылку.

Помимо создания кода, предназначенного для i386, для небольших операций,
Psyco кеширует этот транслированный машинный код для дальнейшего
использования. Если Psyco способен установить, что отдельная операция
такая же, как выполненная (и "обработанная") ранее, он может положиться
на этот кэшированный код, а не транслировать этот сегмент. Это экономит
еще немного времени.

Реальная экономия в Psyco, однако, является результатом распределения
операций по трем различным уровням. Для Psyco существуют переменные
"времени исполнения ("run-time"), "времени трансляции" ("compile-time")
и "виртуального времени" ("virtual-time"). При необходимости Psyco
перемещает переменные с одного уровня на другой. Переменные времени
исполнения - это просто исходный байткод и структуры объекта, которые
обрабатывает обычный интерпретатор Python. Переменные времени трансляции
отображаются в машинные регистры и ячейки памяти с прямым доступом, как
только Psyco транслирует эти операции в машинный код.

Наиболее интересный уровень - это переменные виртуального времени.
Изнутри переменная Python - это полная структура с множеством членов -
даже если объект представляет всего лишь целое число. Переменные
виртуального времени Psyco представляют объекты Python, которые
потенциально могут быть построены, если возникнет такая необходимость,
но их деталями пренебрегают, пока необходимости нет. Например,
рассмотрим следующее присваивание:

x = 15 * (14 + (13 - (12 / 11)))


Стандартный Python строит и разрушает ряд объектов, чтобы вычислить это
значение. Целый целочисленный (integer) объект создается для того, чтобы
содержать значение (12/11); затем значение извлекается из структуры
этого временного объекта и используется для вычисления нового временного
объекта (13-PyInt). Psyco пропускает эти объекты и просто вычисляет
значения, зная, что "при необходимости" объект может быть создан из
этого значения.

Используя Psyco

Гораздо легче использовать Psyco, чем его объяснять. В основном, все,
что нужно, - это сказать Psyco какую функцию/метод "обрабатывать". Не
надо менять код ни одной из ваших функций Python, ни сами классы.

Существует пара подходов, предназначенных для указания, что Psyco должен
делать. "Бронебойный" подход - это разрешить Psyco везде выполнять
операцию компиляции по месту. Чтобы сделать это, поместите следующие
строки кода в начале вашего модуля:

import psyco ; psyco.jit()
from psyco.classes import *


Первая строка указывает Psyco применить свою магию ко всем глобальным
функциям. Вторая строка (для Python 2.2 и выше) приказывает Psyco
сделать то же самое с методами класса. Чтобы немного точнее направить
поведение Psyco, вы можете воспользоваться командой:

psyco.bind(somefunc) # or method, class
newname = psyco.proxy(func)


Вторая форма оставляет func в качестве стандартной функции Python, но
оптимизирует вызовы, которые задействуют newname. Практически во всех
случаях, кроме тестирования и отладки, форма psyco.bind() - это то, что
вы будете использовать.

Производительность Psyco

Несмотря на магию Psyco, его использование требует некоторого осмысления
и тестирования. Главное, что нужно понять - это то, что Psyco полезен
для обработки многократно выполняющиехся циклов, и то, что он знает, как
оптимизировать операции, в которых задействованы целые и числа с
плавающей запятой. Для нециклических функций и для операций над другими
типами объектов Psyco обычно просто добавляет накладные расходы на свой
анализ и внутреннюю компиляцию. Более того, для приложений с большим
числом функций и классов, включение Psyco для приложения целиком
является дополнительным бременем при трансляции машинного кода и
использование памяти для этого кэширования. Гораздо лучше выборочно
подключить те функции, которые смогут извлечь больше пользы из
оптимизации Psyco.

Я начал с самого простого тестирования. Я просто подумал, какое из
приложений, которые я недавно запускал, неплохо было бы ускорить. Первый
пример, который пришел мне в голову, - это программа манипулирования
текстом, которую я использую для преобразования чернового варианта моей
будущей книги "Текстовая обработка в Python" (Text Processing in Python)
в формат LaTeX. Это приложение использует некоторые строчные методы,
некоторые регулярные выражения и некую программную логику, управляемую
главным образом регулярными выражениями и совпадениями строк. В
действительности это ужасный кандидат для Psyco, но поскольку я его
использую, я начал с него.

При первом заходе, все, что я сделал - это добавил psyco.jit() в начало
моего скрипта. Достаточно безболезненно. К сожалению, результаты были
(как и ожидалось) удручающими. Если первоначально скрипт работал 8.5
секунд, то после "ускорения" с Psyco он выполнялся 12 секунд. Скверно! Я
догадался, что компиляция по месту, вероятно, имеет некоторые накладные
расходы на запуск, которые затягивают время исполнения. Поэтому
следующее, что я сделал, была обработка гораздо более крупного входного
файла (состоящего из множества копий первоначального файла). Это привело
к крайне скромному успеху - время выполнения сократилось со 120 секунд
до 110. Это улучшение оставалось устойчивым при нескольких запусках, но
в любом случае весьма незначительным.

Второй заход с моим кандидатом на обработку текста. Вместо добавления
вызова psyco.jit() без параметров, я добавил только строку
psyco.bind(main), поскольку функция main() имеет несколько циклов (но
минимально использует арифметические операции с целыми числами). В этом
случае результаты номинально были лучше. Этот подход урезал время
выполнения на несколько десятых секунды для первого примера и на
несколько секунд для версии большого входного файла. Но по-прежнему
ничего впечатляющего (хотя и никакого вреда).

Для более достойного тестирования Psyco, я откопал некий код нейронной
сети, о котором я писал в одной из предыдущих статье (см. Ресурсы). Это
приложение "code_recognizer" может быть настроено для опознания
возможных распределений разных значений ASCII в различных языках
программирования. Нечто подобное потенциально могло бы быть полезно при
угадывании типов файла (скажем, потерянных сетевых пакетов); но этот код
в действительности полностью универсален в отношении того, чему он был
обучен - с таким же успехом он мог бы научиться распознавать лица или
звуки, или виды приливов. В любом случае "code_recognizer" базируется на
библиотеке Python bpnn, которая в качестве контрольного примера также
включена (в модифицированной форме) в дистрибутив Psyco 0.4. Что важно
знать о "code_recognizer" в свете этой статьи, так то, что оно вычисляет
много циклов с числами с плавающей запятой, и что его выполнение
занимает много времени. Вот у нас и появился хороший кандидат для Psyco.

Поэкспериментировав немного, я детально установил, как использовать
Psyco. Для этого приложения в случае небольшого количества классов и
функций не имеет особого значения, используете вы направленное
связывание или по месту. Но лучший результат - на несколько процентов -
по-прежнему оказывается за выборочным связыванием классов, которые лучше
всего оптимизируются. Более важно, однако, понять область связывания Psyco.
Скрипт "code_recognizer" содержит строки наподобие:

class NN2(NN):
# customized output methods, math core inherited


Другими словами, интересный момент с точки зрения Psyco находится в
классе bpnn.NN. Добавление psyco.jit() или psyco.bind(NN2) в скрипт
code_recognizer.py мало что дает. Чтобы Psyco выполнял желаемую
оптимизацию, вам потребуется добавить psyco.bind(NN) в
code_recognizer.py, либо psyco.jit() в bpnn.py. В отличие от того, что
вы могли бы предположить, компиляция по месту происходит не при создании
экземпляра или вызове методов, а при описании класса. Вдобавок, при
подключении производных классов их унаследованные методы не обрабатываются.

Как только были выработаны детали подходящего связывания Psyco,
результирующее ускорение оказалось весьма впечатляющим. Используя те же
примеры тестирования и режим обучения сети, который был представлен в
упомянутой статье (500 шаблонов обучения, 1000 итераций обучения), время
обучения нейронной сети было уменьшено с где-то 2000 секунд до
приблизительно 600 секунд - больше, чем в три раза. Сокращение числа
итераций до 10 показало пропорциональное ускорение (но никуда не годное
распознавание нейронной сети) - так же как и промежуточное число итераций.

Я нахожу весьма замечательным ускорение кода, выполнявшегося полчаса, до
10 минут, с помощью двух строк кода. Это ускорение, вероятно, все еще
меньше скорости исполнения аналогичного приложения на С, и определенно
меньше десятикратного ускорения, которое зарегистрировано в некоторых
единичных случаях тестирования Psyco. Но это приложение явно из
"реальной жизни", и эти улучшения достаточны для того, чтобы их отметить
во многих контекстах.

Python / Введение в Pygame

Проба...

Cчитаю лучший путь для понимания новой библиотеки это переход прямо к
примеру. В первые дни Pygame я создал анимацию отскакивающего мяча с 7
строками кода. Давайте рассмотрим дружественную версию что тоже самое.
Это должно быть достаточно просто, чтобы проследить, и полностью
разобрать следующее.


1 import sys, pygame
2 pygame.init()
3
4 size = width, height = 320, 240
5 speed = [2, 2]
6 black = 0, 0, 0
7
8 screen = pygame.display.set_mode(size)
9
10 ball = pygame.image.load("ball.bmp")
11 ballrect = ball.get_rect()
12
13 while 1:
14 for event in pygame.event.get():
15 if event.type == pygame.QUIT: sys.exit()
16
17 ballrect = ballrect.move(speed)
18 if ballrect.left < 0 or ballrect.right > width:
19 speed[0] = -speed[0]
20 if ballrect.top < 0 or ballrect.bottom > height:
21 speed[1] = -speed[1]
22
23 screen.fill(black)
24 screen.blit(ball, ballrect)
25 pygame.display.flip()

Это очень простой способ получить анимацию. В начале вы видите импорт и
инициализацию Pygame, в чем нет ничего удивительного. Выражение «import
pygame» импортирует пакет в котором все доступные модули Pygame. Вызов
«pygame.init()» инициализирует каждый из этих модулей.

На восьмой строке мы открываем графическое окно вызовом
«pygame.display.set_mode()». Pygame и SDL позволяет это легко делать, по
умолчанию, в лучших графических режимах для существующего реального
железа. Вы можете изменить режим и SDL компенсирует все что не может
быть выполнено. Pygame представляет изображение как объект Поверхности.
Функция «display.set_mode()» открывает новый объект Поверхности который
представляет действительно отражаемую графику. Любой ваш рисунок на этой
Поверхности будет видимым на мониторе.

В 10 строке мы загружаем изображение мяча. Pygame поддерживает различные
форматы изображения посредством библиотеки SDL_image и включает в себя
форматы JPG, PNG, TGA, GIF. Функция «pygame.image.load()» возвращает нам
Поверхность с данными мяча. Поверхность будет хранить цветовой ключ и
альфу прозрачности из файла. После загрузки изображения мяча мы
объявляем переменную названную ballrect. Pygame поставляется с удобным
утилитарным типом объекта названным Rect, который представляет
прямоугольную область. Позднее, в анимационной части кода, мы увидим чем
занимается Rect объект.

С этой строки, под номером 13, наша программа инициализирована и готова
к работе. Внутри бесконечного цикла мы проверяем пользовательский ввод,
движение мяча, и его отскок. Если вы в курсе программирования GUI, вы
имеете некоторый опыт по событиям и по циклам. В Pygame нет различий, мы
проверяем произошло ли событие QUIT. Если так мы просто выходим из
программы, можно быть уверенным что Pygame все выключит.

Это время обновления расположения мяча. Строки с 17 по 21 двигают
переменную ballrect с текущей скоростью. Если мяч двигается за границы
экрана, мы обращаем скорость в том направлении. Не точно Ньютоновская
физика, но то что нам нужно.

В строке 23 мы очишаем экран заполняя его черным цветом RGB. Если ты
никогда не работал с анимацией это может показаться странным. Ты может
быть спросишь «Почему мы должны стереть все, почему бы нам не только
перемещать мяч по экрану?» Это не совсем так, как работа компьютерной
анимации. Анимация это не более чем серия одиночных изображений, которая
при отображении в движении дает хороший обман человеческого зрения
показывая в движении. Экран состоит всего из одного изображения который
видит пользователь. Если мы бы не тратили время на удаление мяча с
экрана, мы бы на самом деле увидели «след» мяча т.к. мы постоянно рисуем
мяч в новой позиции.

В строке 24 мы рисуем изображение мяча на экране. Отрисовка изображения
обрабатывается методом «Surface.blit()»". Блитирование в основном
означает копирование цвета пикселей из одного изображения в другое. Мы
передаем метод блитирования для исходной Поверхности для копирования и
возможности привести источник в нужное положение.

Последняя вещь которую нам в действительности нужно сделать это обновить
видимый дисплей. Pygame управляет дисплеем посредством двойного буфера.
Затем, когда мы заканчиваем прорисовку мы вызываем метод
«pygame.display.flip()». Он делает все что мы обрисовывали на
Поверхности экрана видимым. Буферизация гарантирует, что на экране мы
видим только полностью обработанные кадры. Без нее, пользователь мог бы
увидеть на половину наполненные части экрана как если бы они были открыты.

На этом мы заканчиваем краткое введение в Pygame. Pygame так же включает
модули производящие обработку подобную обработке ввода с клавиатуры,
мыши или джойстика. Оно может микшировать аудио и декодировать
музыкальный поток. С Поверхностями мы можем рисовать примеры масштабных,
формообразующих, и пространственных изображений. Даже манипуляцию
пикселями изображения в реальном времени, как Цифровыми массивами
Python. Есть здесь проигрывание MPEG видео и поддержка CD. Pygame также
имеет способность действовать как кросс-платформенное средство для
отображения в PyOpenGL. Большинство модулей Pygame написаны на C, и
только несколько на самом Python.

Сайт проекта Pygame содержит нужную документацию по каждой функции
Pygame и учебные материалы для широкого круга пользователей. Исходные
тексты Pygame поставляются с большим количеством примеров, таких как
обезьяньи игры или ловля НЛО.

PYTHON И ИГРЫ

«Подходит ли Питон для игр?» Ответ таков: «Это зависит от игры.»

Питон, на самом деле, вполне подходит для выполнения игр. Вы даже можете
быть удивлены, как много возможно в пределах 30 миллисекунд. Впрочем, не
так сложно превысить этот порог с усложнением игры. Каждая игра
выполняемая в реальном времени будет загружать компьютер по полной.

В последние несколько лет наблюдается интересная тенденция в игровой
индустрии — движение к использованию высокоуровневых языков. Обычно игра
разбивается на две основных части. Игровой движок, который должен быть
настолько быстр, насколько это возможно, и игровая логика, которая
используя движок создает саму игру. Не так давно движки писали с
использованием ассемблера и небольших вставок на C. Теперь же, C стал
основным языком написания игровых движков, в то время как сами игры
пишутся на более выскокоуровневых скриптовых языках. Игры типа Quake3
или Unreal выполняют эти скрипты как портабельный байткод.

В начале 2001, разработчики Rebel Act Studios завершили свою игру —
Severance: Blade of Darkness. Используя свой 3D движок, они написали всю
остальную игру на Питоне. Игра представляет собой кровожадный файтинг с
перспективой от третьего лица. Вы заставляете своих средневековых воинов
выполнять головоломные атакующие комбинации в процессе исследования
подземелий и замков. Вы можете скачать сторонние дополнения к этой игре,
и обнаружить что они являются всего лишь исходными кодами на Питоне.

В течении последнего времени Питон использовался во множестве игр таких
как Freedom Force или Humungous' Backyard Sports Series.

Pygame и SDL являются превосходными движками на С для двухмерных игр.
Игры будут продолжать тратить большую часть машинного времени выполняя
обработку графики внутри SDL. SDL может использовать преимущества
аппаратного ускорения. Использование этой возможности может ускорить
выполнение игры с 40 кадров в секунду до более чем 200. Когда вы видите
игру на Питоне выполняющуюся со скоростью 200 кадров в секунду, вы
осознаете что использование Питона для игр это реальная возможность.

Это впечатляет, как Питон и SDL могут работать на различных платформах.
Например, в мае 2001 я выпустил мой проект SolarWolf, реализованный
полностью на Pygame. Это был аркадный экшн. Что меня удивило, так это то
что спустя год не было нужды в каких либо патчах, багфиксах или
обновлениях. Игра была разработана полностью под Windows, но выполнялась
на Linux, Mac OSX и многих Unix платформах без какой либо дополнительной
работы с моей стороны.

Тем не менее, есть довольно ясные ограничения. Лучший путь для
управления аппаратным ускорением графики не всегда является самым
быстрым. Аппаратная поддержка доступна не для всех платформ. Когда игра
усложняется, необходимо выбрать один из путей. SDL имеет и другие
ограничения обусловленные дизайном, например полноэкранный скроллинг
может ухудшить скорость вашей игры до неприемлимой. Хотя SDL и не
подходит для всех типов игр, тем не менее вспомните что такие компании
как Loki используя SDL создали множество успешных игр.

Pygame является низкоуровневой библиотекой. Вы довольно быстро
обнаружите что вам нужны собственные оберточные функции для вашего
игрового окружения. Плюсом при этом является то что ничто внутри Pygame
не помешает вам сделать этого, вы полностью контролируете все
происходящее. Обратная сторона этого подхода в том что вам прийдется
переписать кучу код чтобы создать свои продвинутые функции. Поэтому вам
лучше хорошо понимать что вы делаете.

ЗАКЛЮЧЕНИЕ

Разработка игр очень захватывающа — есть что то притягательное в том
чтобы наблюдать и взаимодействовать с тем что вы сами написали. На
текущий Pygame используется почти в 30 проектах. Несколько из них уже
вполне играбельны. Вы можете быть удивлены посетив сайт Pygame и увидев
что можно сделать с помощью Питона.

Одна вещь которая привлекла мое внимание — это то что большинство людей
которые начинают использовать Питон, используют его для разработки игр.
Я понимаю чем игры привлекают начинающих программистов, но это может
быть тяжелым испытанием, т.к. создание игр требует хорошего знания
языка. Я стараюсь поддержать этих программистов приводя много примеров и
руководств по использованию Pygame для новичков.

В конце хотелось бы дать совет — делайте все проще. Я не могу передать
насколько это важно. Если вы планируете создать вашу первую игру, есть
многое чему стоит научиться. Даже простая игра будет состязанием для
ваших умений, а сложные игры не обязательно будут интересными. Когда вы
поймете Питон, вы сможете использовать Pygame для создания простых игр в
течении одной или двух недель. Начиная с этого момента вы будете
удивлены тем, сколько времени нужно для доведения игры до полностью
рабочего состояния.

Обзор модулей Pygame
cdrom — управление устройствами компакт-дисков и воспроизведения звука
cursors — загрузка изображений курсора, включает стандартные курсоры
display — управление окном или экраном
draw — рисование графических примитивов на поверхности (класс Surface)
event — управление событиями и очередью событий
font — создание и отображение шрифтов TrueType
image — сохранение и загрузка изображений
joystick — управление джойстиками
key — управление клавиатурой
mouse — управление мышью
movie — проигрывание mpeg клипов
sndarray — управление звуками с помощью класса Numeric
surfarray — управление изображениями с помощью класса Numeric
time — управление таймерами
transform — изменение размеров, вращение и изменение ориентации изображений

01 сентября 2011

SWA / start_bplayer_x86.py / 1.00

Написан базовый скрипт для запуска игры через bplayer...

- Замена bash скрипта.
- Смена по пунктам четырёх режимов видео.
- Старт FPS теста.
- Старт стерео мода.
- Старт help по bplayer.
- По умолчанию (enter) старт режима 640х480.
- Старт x_64 bplayer.
- Напоминание о возможности замены на свой bplayer.

***

#! /usr/bin/python
# -*- coding: utf-8 -*-

import subprocess, sys, os
import thread, time

# Version of the SWA Build Wizard
# Version = "1.00"


# Print text

print " "
print "*******************************"
print "Welcome! SWA-Start blenderplayer_x86 v.1.00"
print "*******************************"
print " "
subprocess.call('whoami', shell=True)
print " "
print "Set video mod..."
print " "
print " 1- 640x480 (very fast mod)"
print " 2- 800x600 (fast mod)"
print " 3- 1024x768 (normal mod)"
print " h- 1360x768 (slow mod)"
print " t- test FPS (1024x768 mod)"
print " s- stereo (1024x768 mod)"
print " x- start x_64 (1024x768 mod)"
print " b- blenderplayer help"
print " "
print "PS: Can use your blenderplayer (x86_64)"
print " "

update_blenderplayer_x86 = str.lower(raw_input("Please choose an option: "))

# Decide what to do

if update_blenderplayer_x86 in ('1'):

# Start 640x480

subprocess.call('./blenderplayer_x86 -w 640 480
Angedonia/at-logo.blend', shell=True)

# Start 800x600

elif update_blenderplayer_x86 in ('2'):

subprocess.call('./blenderplayer_x86 -w 800 600
Angedonia/at-logo.blend', shell=True)

# Start 1024x768

elif update_blenderplayer_x86 in ('3'):

subprocess.call('./blenderplayer_x86 -w 1024 768
Angedonia/at-logo.blend', shell=True)

# Start 1360x768

elif update_blenderplayer_x86 in ('h'):

subprocess.call('./blenderplayer_x86 -w 1360 768
Angedonia/at-logo.blend', shell=True)

# Test FPS

elif update_blenderplayer_x86 in ('t'):

subprocess.call('./blenderplayer_x86 -g show_framerate = 1
Angedonia/at-logo.blend', shell=True)

# Stereomode

elif update_blenderplayer_x86 in ('s'):

subprocess.call('./blenderplayer_x86 -s vinterlace
Angedonia/at-logo.blend', shell=True)

# help

elif update_blenderplayer_x86 in ('b'):

subprocess.call('./blenderplayer_x86 -h', shell=True)

# x_64

elif update_blenderplayer_x86 in ('x'):

subprocess.call('./blenderplayer_x64 Angedonia/at-logo.blend', shell=True)

# End

print "Good bye"

Сектор Лирики / Шейдерные языки сравнение

Что такое RenderMan?

Это стандарт описания трехмерных данных для их последующей визуализации
(официальное определение: "это стандартный интерфейс между программами
моделирования и рендеринга для создания фотореалистичного качественного
изображения").

Также наиболее часто под этим под словом RenderMan "скрывается" продукт,
осушествляющий рендериг из RI, то есть реализация фирмы Pixar "Pixar's
PhotoRealistic
RenderMan product", сокращенно PRMan.

RenderMan-стандарт используется с 1987 года многими известными
корпорациями,
поэтому о нем и говорят, как о стандарте в современном мире рендеринга.

***

Язык шейдеров RSL

Одной из основополагающих идей RenderMan стала идея необходимости
специального программируемого освещения для достижения возможности
рендеринга
высокофотореалистичных изображений. Результатом разработок в этой
области стало
описание языка RenderMan™ Shading Language, опубликованное в 1990 году
в ACM
Computer Graphics.

RSL — это основанный на C язык, специально созданный для написания
шейдеров.
Из-за того, что он основан на C, он сохранил многие свойства этого
языка. RSL очень
похож на современные языки программирования шейдеров и для него
существуют сотни
готовых шейдеров, которые находятся в свободном доступе в сети интернет.

• Для тех, кому стало интересно…

RSL имеет следующие виды данных:

1) Число с плавающей точкой – что интересно, в RSL нет целых
чисел, они тоже представляются числами с плавающей точкой.

2) Данные о цвете – трехмерный вектор из трех чисел с плавающей
запятой. Каждое из трех чисел представляет собой интенсивность
соответствующей компоненты цвета в цветовом пространстве RGB.

3) Векторы, точки и нормали. Ранее, все три типа объединялись в
один, но в новых версиях появилось разделение, в основном оно
базируется на смысле того, что представляет собой триада чисел с
плавающей запятой.

4) Матрицы преобразования. Матрицы преобразования удобны для
перехода из одной системы координат в другую. Также они
полезны для преобразования систем координат и для построения
проекций.

5) Строки. Чаще всего строки выполняют роль именованных
констант.

6) Массивы. Массивы полезны для передачи шейдеру целого списка
однородных параметров.

Глобальные переменные.

В зависимости от своего типа, каждый шейдер имеет определенный
набор глобальных переменных. Это переменные, которые в
обязательном порядке нужны для работы шейдера, например вектор
направления камеры. Некоторые из них read-only, другие же вы можете
перезаписать своими значениями.

***

Что такое Gelato?

NVIDIA Gelato представляет собой оригинальную гибридную систему рендеринга
изображений и анимации трехмерных сцен и объектов, использующую для
расчетов
центральные процессоры и аппаратные возможности профессиональных
видеокарт серии
Quadro FX.

Основополагающим принципом, которого неукоснительно придерживаются
разработчики, является бескомпромиссное качество финального
изображения, не
ограниченное ничем, в том числе - современными возможностями
видеокарт. Как
производственный инструмент, способный создавать конечный продукт высокого
качества, Gelato предназначен для профессионального использования в
таких областях как
кино, телевидение, промышленный дизайн и архитектурные визуализации.

Gelato является не просто программой с предопределенным набором функций
рендеринга. Это гибкая расширяемая программируемая система, которая
может быть
интегрирована в существующий производственный конвейер.


***

Для программирования шейдеров Gelato обладает собственным
специализированным языком GSL - Gelato Shading Language. Создание кода
шейдеров
полностью описано в документации.

Все материальные шейдеры Gelato условно делятся на три группы - шейдеры
свойств поверхности, displacement-шейдеры и шейдеры объемных эффектов.
Инновационной возможностью является возможность задания многоуровневых
шейдеров
для более точных эффектов…

Сектор Лирики / Разновидности шейдеров

Шейдер (от англ. shader), шейдерная программа – небольшая программа,
выполняемая на стороне видеокарты или другого аппаратного или программного
устройства рендеринга, которая позволяет производить отдельные элементы
цикла
рендеринга объекта особым, отличным от стандартного, образом. Иначе
говоря, шейдер –
программа, выполняющая некоторую часть цикла рендеринга.

***

На данный момент, шейдеры бывают пиксельными и вершинными. Часто их
еще называют пиксельными и вершинными программами. Такое деление
справедливо для
большинства популярных языков программирования шейдеров, специфичные языки
программирования шейдеров могут использовать другую классификацию.

В каждый момент выполнения программы активна лишь одна пара, состоящая из
вершинного и пиксельного шейдера. В случае, если программист не
установил активной
пары шейдеров, работает стандартный шейдер, который обеспечивает всю
стандартную
функциональность графической библиотеки (OpenGL или DirectX). Обычно пару
вершинных и фрагментных шейдеров называют просто шейдером.

Вершинные шейдеры имеют целью и задачей обработку каждой вершины и
нахождение её координат с учетом матрицы моделирования и прочих,
зависящих от
задумки программиста, условий. Для этого вершинный шейдер получает все
параметры
вершины (координаты, цвет, текстурные координаты и т.д.). Также
основная программа
может передать шейдеру любые другие, определяемые программистом,
параметры,
включая совершенно произвольные, имеющие смысл только для выполнения общей
задачи. Так, к примеру, шейдеру может быть передан параметр «сила
ветра», который
совершенно не привязан ни к какому способу представления трехмерных
объектов, ни к
какому графическому API. Это просто параметр, который будет
обрабатываться внутри
шейдера.

Фактически, при обработке каждой вершины запускается вершинный шейдер.

***

Пиксельные шейдеры имеют своей целью расчет цвета каждого пикселя и
значения
глубины (обычно, глубину рассчитывать необязательно) или вынесение
решения о том,
что пиксель выводит не надо. Пиксельный шейдер получает на входе
текстурные
координаты, соответствующие обрабатываемой точке, примешиваемый цвет и,
возможно,
некоторые другие параметры. На основании этих данных он расчитывает
цвет точки и
завершает работу.

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

Сектора Лирики