Archives 2011

Raytracing

Накидал по-быстрому трассировщик пути : )

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

Не суперское качество, конечно, но ждать ещё несколько минут/часов стало влом – остановил : )

0
0

Небольшой BugFix

Нашёл различные баги в рендеринге. Большинство из них из за копипаста! О_О Копипаст – ЗЛО!! Ррр, надо отучиваться.

Теперь ни каких варнингов от DX-а нет, ФПС значительно поднялся, а волосы у меня стали ещё более “мягкие и шелковистые”(с)

За модельку интерьера спасибо Аврелию, любезно выложившему её на форуме gamedev.ru

0
0

Апдейт шрифтов

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

Вот апдейтю предыдущий скрин только с правильным рендерингом шрифта!

0
0

GUI – начало

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

Вот скрин с 3 из них – “надпись”, “текстовое поле”, “кнопка”. Всё кликабельно, настраиваемо. На всё что можно/нужно привязаны события. Есть поддержка скинов.

0
0

Небольшой апдейт по прогрессу

Давно не отписывался – надо бы сообщить ВСЕМУ МИРУ о моём [говно] движке! (ведь весь мир же ждал этого, правда? *_*)

Итак, начнём перечисление скромных апдейтов:

1. Пофиксил прозрачность. Есть и альфа тест и альфа бленд. Работают вроде годно : ) Ну, если честно не совсем пофиксил )) Альфа бленд всё ещё криво освещается. Дело в том, что у меня же Light PrePass рендеринг, который не дружит с прозрачностью. В следствие чего все объекты с полупрозрачностью надо рисовать форвард-рендерингом, что влечёт за собой написание ещё одного рендера. Жесть. Не, ну я конечно могу костылей понаставить и за пол часа сделать рендеринг стекляшек, но мы ж, поработители мира – такие, ага, суровые ) Надо сразу делать “качественно”. Лол!

2. Пофиксил компилятор ресурсов. Теперь всё компилится удобно! : )

3. Полностью переписал экспортёр моделей. Теперь для модели в 16 к треугольников экспорт идёт не 30 секунд а 1-2 секунды. жЪр!

4. Экспортнул анимацию.. загрузил – чотко рендерится ) но в самом конце трека анимации небольшой рывок есть. Кажется я знаю в чём дело и пофиксю на неделе.

5. Начал писать GUI! Посмотрел я wxWidgets, MYGUI, CEGUI – да нуу. Это “не то”. Лучше я свой напишу!
Кстати по случаю GUI собрался и сделал нормально события/делегаты (как в шарпе почти). Ну, вот например создание кнопки и аттач к ней метода.

//add button
GUIButton* button = new GUIButton(gui);
button->SetPosition(Vec2i(50,50));
button->SetWidth(200);
button->SetHeight(100);
button->SetBackColor(Vec4f(1.0f,0.0f,0.0f,0.7f));
mainMenu->AddChild(button);

button->Event_MouseLeave+=NewDelegate(this, &CrysisGame::BT1Leaved);
button->Event_MouseClick+=NewDelegate(this, &CrysisGame::BT1Click);
Ну и остальные бла-бла-бла методы.. выпонели же, да?

и сами методы:

void BT1Click(GUIWindow* sender, int b)
{
static_cast(sender)->SetCaption(STR(“Click”));
}
void BT1Leaved(GUIWindow* sender, int b)
{
static_cast(sender)->SetCaption(STR(“Leaved”));
}

7. Добавил рендеринг в текстуру параметров поверхности! И заметил значительный спад FPS : ( Зато теперь могу делать материалы с разными BRDF!!!! ^______^

Кстати купил Crysis 2! : Сначала жутко демотивировал меня а теперь обратный эффект – мотивирует делать более качественную графику )

Ох, пойду я спать… вчера отмечал 2 днюхи… fuckin’ headache!

0
0

WIP News

А вот и я с небольшим набором апдейтов )

В последнее время разработка идёт не очень быстро… тут много факторов, но основной, наверно, отсутствие нормальной работы (в моём городке сложно найти адекватную, а за 10 тысяч в месяц админом работать.. не очень хочется : ) Правда зовут в Питер.. но чота, блин, страхово. Страхово не от переезда, а скорее всего от того, что “не пройду собеседование”. Вот откуда эта неуверенность? Пздц.

Итак, хватит лирики, переходим к делу:

1. Добавлен класс ActionMap в игровой движок! Теперь все действия игрока мапятся именно в нём. Происходит это примерно так:

actionMap.BindAction(ACTION_FORWARD, KEY_Q);
actionMap.BindAction(ACTION_BACKWARD, KEY_E);
actionMap.BindAction(ACTION_JUMP, KEY_SPACE);
actionMap.BindAction(ACTION_ACCELERATION, KEY_LSHIFT);
actionMap.BindAction(ACTION_FIRE, KEY_MOUSE_LEFT);
actionMap.BindAction(ACTION_USE, KEY_F);
actionMap.BindAction(ACTION_TURNLR, KEY_AXIS_X);
actionMap.BindAction(ACTION_TURNUD, KEY_AXIS_Y);

Неудобно!? Бред! Очень удобно! Удобно как программно прописывать биндинги, так и загружать их и менять в рантайме!

2. Но одними биндингами сыт не будешь : ) Для управления персонажем используется новый класс ActionBuffer (название само за себя говорит). движок чекает инпут и по инпуту, подглядывая в ActionMap добавляет новые действия в ActionBuffer который позже отправляется игроку на выполнение. Всё очень просто : )

вот код ActionBuffer (есть у кого предложения оптимизации КОДА?)

#ifndef ActionBuffer_h__
#define ActionBuffer_h__

#include “Action.h”
#define NUM_SLICES 4

class ActionBuffer
{

private:
int buffer[NUM_SLICES];
public:
void AddAction(int action)
{
action–;
int slice = action >> 5;
action -= (slice << 5);
buffer[slice] |= (1 << action);
}
void RemoveAction(int action)
{
action–;
int slice = action >> 5;
action -= (slice << 5);
buffer[slice] &= ~action;
}
void Reset()
{
memset(buffer, 0, sizeof(GameAction) * NUM_SLICES);
}
bool CheckAction(int action)
{
action–;
int slice = action >> 5;
action -= (slice << 5);
return (buffer[slice] & (1 << action)) !=0;
}
};
#endif // ActionBuffer_h__

какбы конец кода.

Ну, ещё я пофиксил многие баги физики, научил капсулу игрока не падать, правильно коллайдиться. Также сделал управление камерой персонажа (можно переключать first person/third person виды). Собсно теперь могу спокойно персом бегать по уровню : ) Осталось решить одну маленькую назойливую проблему – прохождение камеры сквозь стены : ( Оно заметно когда включен режим обзора “от третьего лица”.

Как решать? – думаю надо сделать для камеры физический объект – сферу! Путь коллайдится с миром, а я буду в соответствии со сферой поправлять позицию камеры.

Пока вот так.

0
0

ЫЫЫ

Пофиксил баг с тенями! Теперь PCF корректней работает + собсно бага нет. Он слишком глупый. чтобы я его называл : )

Uploaded with ImageShack.us

Ну какбы вот : )

На ебанутые яркие блики не обращаемс внимания ^___^ это я ещё BRDF для материалов не прикрутил к отложенному освещению

0
0