forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты C++ (http://forum.boolean.name/forumdisplay.php?f=56)
-   -   [TrueHorror] - разработка (http://forum.boolean.name/showthread.php?t=17293)

Samodelkin 19.09.2014 00:17

Ответ: [TrueHorror] - разработка
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 286894)
В графонии вылез какой-то трудно уловимый баг.

Кароч суть в том что сильно тормозит

IDirect3DDevice9->Present(0,0,0,0)

я погуглил с чем это может быть связано, но так и не нашел ответа. Причем тормоза Present'a прямо пропорциональны разрешению - чем больше тем больше тормоза. Я вообще не могу вкурить в чем косяк. Есть мысли?

Может видеопамять кончилась?

//=============================================

У меня тоже вопрос по шейдеру:

Допустим если я упаковываю глубину таким образом:
(Здесь input.z - это координата во view space)
Код:

output.depth = float4( ( input.z - nearZPlane ) / ( farZPlane - nearZPlane ), 1.0f, 1.0f, 1.0f );
То восстановить координаты точки во view space можно таким образом:
(texCoord - это текстурные координаты экранного квада)
Код:

const float vz = tex2D( smpDepth, texCoord ).r * ( farZPlane - nearZPlane ) + nearZPlane;
const float vx = ( texCoord.x * 2.0f - 1.0f ) * tan( scrFovX / 2.0f ) * vz;
const float vy = -( texCoord.y * 2.0f - 1.0f ) * tan( scrFovY / 2.0f ) * vz;

То есть таким образом я не использую умножение на матрицу проекции и обратную матрицу проекции при извлечении.
Все верно?

mr.DIMAS 19.09.2014 01:24

Ответ: [TrueHorror] - разработка
 
Ну вроде да. Но два тангенса разве не будут жрать столько же сколько умножение на матрицу?

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

Samodelkin 19.09.2014 01:46

Ответ: [TrueHorror] - разработка
 
Вложений: 1
Цитата:

Сообщение от mr.DIMAS (Сообщение 286898)
Ну вроде да. Но два тангенса разве не будут жрать столько же сколько умножение на матрицу?

Видимо будут. Но всё-равно важно понять, правильно считает или нет. Потому что после изменения SSAO стал немного другим, я вот ищу на что ещё могли повлиять эти изменения.

Из последних изменений:
* Поменял упаковку в G-Buffer с world space на view space, и последующие вычисления во view space'е идут.
* Раньше характер затенения зависел от расстановки Z плоскостей, теперь не зависит, но вот чуть-чуть качество испортилось. С матрицами тогда тоже попробую.

Вот видно что затенения какие то полосатые стали :crazy:

Вложение 20910

radiobutton 19.09.2014 10:48

Ответ: [TrueHorror] - разработка
 
А че по сюжету?)

mr.DIMAS 19.09.2014 17:01

Ответ: [TrueHorror] - разработка
 
А где-то позади был пост про сюжет. Я его и не менял.

Вкратце:

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

Менять сюжет не вижу смысла, ибо под него все и заточено.

tirarex 19.09.2014 18:27

Ответ: [TrueHorror] - разработка
 

Samodelkin 19.09.2014 22:16

Ответ: [TrueHorror] - разработка
 
Цитата:

Сообщение от Samodelkin
С матрицами тогда тоже попробую.

Попробовал - работает.
Исправил полосатость.
Добавил ограничения по дистанции -- теперь вблизи пятно затенения не будет разрастаться, а в далеке затенение будет исчезать.
Немного оптимизировал.

ssao_v01.zip

fx/ssao.fx - сам эффект.
src/* - исходники той штуки на которой тестируется эффект.
bin - там рабочие *.exe debug и release сборки.
bat - батники для сборки (я использовал gcc).
x/rot_texture.jpg - нужная для эффекта текстура, которая рэндомно отклоняет лучи.

В эффекте 4 прохода: G-Buffer, SSAO и два gauss-blur'а по горизонтали и вертикали.

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

mr.DIMAS 19.09.2014 23:17

Ответ: [TrueHorror] - разработка
 
На самом деле я уже пожалел о своем выборе. Но мне ничего не мешает прикрутить сасао через эффект. Сейчас я в основном занимаюсь ̶у̶н̶и̶в̶е̶р̶о̶м̶ моделированием и текстурированием, так что в движок пока не лезу. Второй уровень( шахта ) и третий уровень( заброшенный подземный научный центр ) стали больше на 50%. Второй доделан полностью, третий на 90%. Четвертый ( канализация :-D) сделал геометрию на 50 процентов. Пятый( снова шахта, но больше ) только на бумаге, и последний( лес ) еще даже не зарисовал. Кароч вот как-то так.

Samodelkin 23.09.2014 00:33

Ответ: [TrueHorror] - разработка
 
А что лучше делать DirectInput или XInput?
Чуток почитал MSDN, в целом суть такая что XBox 360 контроллеры и другие новые имеют лучшую совместимость с XInput, но остались еще legacy устройства, которым нужен DirectInput.
Сам я пока пользовался только DirectInput, и в случае клавиатуры и мыши, которые представляются как виртуальные унифицированные устройства, ещё ничего, но вот когда дело доходит до геймпадов и других устройств, с которыми нужно напрямую работать -- в коде какой то ужас начинается: чтобы изменить один параметр, нужно запускать перебор объектов, передавать в функцию перебора каллбек, в каллбек передавать указатели с контектом и параметрами и т.д. и т.п.
В XInput же обещают всё намного удобней и проще.
Вот.

mr.DIMAS 23.09.2014 01:35

Ответ: [TrueHorror] - разработка
 
Я на сосноли\соснольщиков с геймпадами не ориентируюсь поэтому DirectInput'a хватает. хз вообще что взять, надо XInput поковырять и тогда поймешь.

Samodelkin 23.09.2014 02:40

Ответ: [TrueHorror] - разработка
 
Цитата:

Сообщение от mr.DIMAS (Сообщение 287162)
Я на сосноли\соснольщиков с геймпадами не ориентируюсь поэтому DirectInput'a хватает. хз вообще что взять, надо XInput поковырять и тогда поймешь.

У меня геймпад на ПК есть.
На самом деле он удобен не только для игр со сложным управлением, а просто хотя бы чтобы сидеть на диване или в кресле.
Даже та же консоль -- это просто железка: тебе никто не мешает делать для неё такие же игры как для ПК.
Тем более что скоро Стим-Машины и их аналоги появятся.

Samodelkin 23.09.2014 18:48

Ответ: [TrueHorror] - разработка
 
Посмотрел XInput -- он сделан для Xbox 360 контроллеров и прочих совместимых штук. Клавиатуры и мыши там нет. Но работа с контроллером действительно намного удобней. Так же поддерживаются дополнительные возможности, такие как вибрация, управление гарнитурами подключёнными к контроллеру, управление беспроводными контроллерами и т.д. Остаётся выяснить какое количество несовместимых с XInput контроллеров сейчас существует и делать вывод о целесообразности использовать DirectInput рядом с XInput (а так делать можно).

А вот насчёт клавиатуры и мыши (выше в теме уже где-то было) -- DirectInput для них устарел и лучше использовать сообщения Windows (имхо для шутеров-то можно и оставить DirectInput для мыши например).

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

Nuprahtor 24.09.2014 01:03

Ответ: [TrueHorror] - разработка
 
Делай для XInput, для директинпута есть тулзы типа https://code.google.com/p/x360ce/ , которые позволяют назначить кнопки и оси любого джойстика так, чтобы игра думала что это XInput устройство

Samodelkin 24.09.2014 01:25

Ответ: [TrueHorror] - разработка
 
Цитата:

Сообщение от Nuprahtor (Сообщение 287201)
Делай для XInput, для директинпута есть тулзы типа https://code.google.com/p/x360ce/ , которые позволяют назначить кнопки и оси любого джойстика так, чтобы игра думала что это XInput устройство

А как обстоят дела с контроллерами в Linux?

mr.DIMAS 24.09.2014 15:24

Ответ: [TrueHorror] - разработка
 
Вложений: 1
У себя в движке использую свою корявую библу. Тащит мышь, клаву. Есть поддержка KeyUp, KeyDown, KeyHit, MouseDown, MouseUp, MouseHit, позиция мыши относительно начала клиентской области окна. Мне хватает с головой.


Часовой пояс GMT +4, время: 21:20.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot