Яндекс.Метрика

Цвет в шейдере

07.10.09.     проект      исполняемый файл

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

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


Пламя на Билбордах

05.10.09.     проект      исполняемый файл

Пламя на билбордах (во множественном числе - потому что их много) и пиксельном шейдере. Пример почти такой же как и "Пламя на поинт спрайтах", но там "дёшево и сердито", а здесь не так дёшево, но седтитей некуда.

Фаербол     проект      исполняемый файл

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


BILLBOARD на шейдерах

04.10.09.     проект      исполняемый файл

Этот пример, моя маленькая победа. Я подсмотрел код шейдера в GameDev.net - форуме. Он работал, но не реагировал на изменение размеров и поворот. Путём титанических усилий и метода "интеллектуального" тыка, я добился чтобы он заработал правильно. Причём, заработал только тогда, когда интеллект в тыке стал преобладать. Я подозреваю (ну и личный опыт подсказывает) себя не похвалишь, никто не похвалит, так вот я молодец, нет - Я Молодец!


Костёр

04.10.09.     проект      исполняемый файл

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

Добавил паузу на space. Прикольно останавливать время. Ещё прикольней посмотреть на него со всех сторон.


Примеры из книги Михаила Фленова "DirectX и C++ искусство программирования"

Привожу только те примеры, которые основаны на шейдерах. Это удача - найти эту книгу. Примеры просты и легко адаптировались под мой проект.

30.09.09.

1)      проект      исполняемый файл     пиксельный шейдер

2)      проект      исполняемый файл     блик

3)      проект      исполняемый файл     сердечный приступ

4)      проект      исполняемый файл     пламя

5)      проект      исполняемый файл     ядро

6)      проект      исполняемый файл     огненная лава

7)      проект      исполняемый файл     молния

8)      проект      исполняемый файл     морфинг

9)      проект      исполняемый файл     невесомая капля


Простейший текстурный шейдер HLSL

09.06.09.      проект      исполняемый файл


Компиляция Пиксельного Шейдера

04.06.09.     проект      исполняемый файл

Пример из документации DirectX SDK. Компиляция пиксельного шейдера написанного на ассемблере.


Простейший вершинный шейдер

09.06.09.     проект     исполняемый файл

Если есть простой пиксельный шейдер, то должен быть и простой вершинный шейдер... Есть и отличие, это деклорация вершины.


Простейший пиксельный шейдер

30.05.09.     проект      исполняемый файл

Ничего кроме сетки вы здесь не увидите. Единственное, что делает шейдер, это возвращает цвет вершины. Если им окрасить меш, то выйдет лишь плоское одноцветное изображение. До чего всё же сложная штука 3D...


Объёмные линии и Z - буфер

30.05.09.     проект      исполняемый файл

Нашёл место в тексте эффекта отключения зет-буфера, линии заработали. Одна беда, для совмещения с мешами, меши должны окрашиваться через шейдеры.


Пламя на поинт спрайтах

19.05.09.     проект     исполняемый файл

Простенький эффект пламени, на пяти поинт спрайтах, дёшево и сердито.


Объемная текстура 2

16.05.09.      проект      исполняемый файл

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

Ещё одно разочарование, что делать с объёмными линиями? Как их присобачить к мешам, ведь шейдеры не работают с Z - буфером?


Объемные линии

15.05.09.      проект      исполняемый файл

Сногсшибательный пример, раскрывающий секрет объемных спецэффектов. Понажимайте SPACE, - / +.


Объемная текстура

15.05.09.      проект      исполняемый файл

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

Ещё в примере больше возможностей у камеры. Больше возможностей, больше проблем...


Камера для стратегий

14.05.09.      проект      исполняемый файл

Эта камера не "на все руки мастер", но мне её достаточно.

Как вам серебристый самолётик? Это всё вершинный шейдер, только вот на движущемся объекте он не работает.


Камера на кватернионах

12.05.09.     проект      исполняемый файл

К сожалению я не смог организовать адекватный поворот вокруг точки взгляда, и найти стрейф на кватернионах, иначе бы я на ней и остановился, но как говорится: "не судьба". А жаль, так как по всей видимости, кватернионы - это самый лучший способ для создания камеры, вектора часто грешат, и иногда делают всё шиворот на выворот.


Точечные спрайты

07.05.09.    проект      исполняемый файл

Перетащил кусок кода отвечающего за точечные спрайты из примера DirectX SDK. Ни в чём не разбирался, мне пока довольно того, что пример работает. Особенно мне нравится как горят частицы.


Загрузка эффектов .fx в мой проект

01.05.09.    проект    исполняемый файл

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

Но главное - эффект работает. Он чего-то там по Фонгу, металические части рендерит. И ракета действительно стала металической, крашеной, но металической. Блин, придётся благодарить автора того сайта, обещал ведь. А трудное это дело благодарить...


"Много" линий в 3D, и немного звезд 2D.

30.04.09.    проект      исполняемый файл

Решил нарисовать сетку, и частота кадров упала катастрофически, со временем выяснилось, что нельзя рисовать перекрёстные линии в одном цикле, т.к. именно это влияет на скорость кадров, в чем тут дело не знаю.


Загрузка эффектов .fx

28.04.09.    проект     исполняемый файл

Стырил пример с сайта www.lastworld.net.ru (которого уже не существует - всё течет всё меняеся), счастлив до... , ну не так уж и счастлив, тем более, что толком его и не смотрел, но всё же, найти простой рабочий пример по загрузке эффектов, было очень трудно, почти невозможно. Поэтому считаю своим долгом поделиться находкой. Если получится разобраться как всё это работает, непременно отпишу благодарность автору сайта.


Немного линий в 3D

28.04.09.    проект    исполняемый файл

Прочитал статью на DTF http://www.dtf.ru/articles/read.php?id=30. Решил, что действительно неплохо уметь рисовать обыкновенные линии. Немного подкоректировал код, чтобы он и на D3DX9 работал, но как сказал сам автор статьи, это всего лишь вспомогательные линии, применять их в игре не стоит. Я думаю, от пары штук линий, даже в таком варианте, игра сильно тормозить не будет.


Плоский взрыв в 3D

27.04.09.    проект    исполняемый файл

Хотел попробовать, что такое точечный спрайт, но в примере DirectX SDK такой дремучий лес, что пришлось сделать свою функцию. 3D никак не дает сделать всё просто, видимо слишком много возможностей предоставляет, потому и требует соответственно. Подводных камней немерено, сделал одно - перестало работать другое, может оно и работает, но его не видно.


Ракета в 3D - (продолжение) Игра с материалом

21.04.09.    проект    исполняемый файл

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


Ракета в 3D

21.04.09.    проект    исполняемый файл

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

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

Сложностей хватает - создание мешей в 3DMax, текстурирование вообще запредельно сложная тема. Спрайтовый интерфейс по сравнению с Direct3D - детские шалости.


Загрузка мешей

19.04.09.    проект    исполняемый файл

Мой принцип - начинать надо с простого. Честно говоря это данность, по другому просто не получается. А проще всего взять кусок чужого кода и вставить в свой проект, добится чтобы он работал и уже, когда большая часть кода знакома, начать изучать, что и как, зачем и почему. Даже если не понятно как это работает, можно обойтись умением использовать нужную функцию в своей программе.


Ракетный движок

12.04.09    проект     исполняемый файл

Хотелось сделать ракету...

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


Базовый проект

09.04.09.    проект     исполняемый файл

В каждом проекте присутствует неизменная часть, которая обычно отвечает за инициализацию интерфэйсов DirectX. Имея под рукой базовый проект, будет легко начинать новый, без необходимости чистить от лишнего старый. Конечно же базовый проект несмотря на свою неизменность тоже меняется, или с увеличением опыта и знаний, или просто с переходом на новую платформу Visual C++, в данном случае 2003 года. Она конечно же устарела, но у меня другой нет, да и переконвертирование проектов в среде .Net происходит довольно просто.