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)

mr.DIMAS 20.10.2014 00:29

Ответ: [TrueHorror] - разработка
 
Вот я тупанул. Етить. 2 часа втыкал в чем дело. ммм да

mr.DIMAS 20.10.2014 00:40

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



Текстура спота:


И кстати поставил AddressU, V = Border чтоб избежать багов когда по краям текстуры есть яркие пиксели

Mr_F_ 20.10.2014 01:19

Ответ: [TrueHorror] - разработка
 
збс, хотя ощущение что границы очень чёткие, для такого расстояния от источника.
ещё подобие отражённого света не помешало бы в идеале, можешь тупо поинт лайт (а лучше полупоинт, или типа как 180 градусный спот) ставить в центр спроецированного пятна света и красить его в цвет альбедо который под ним на экране.

Samodelkin 20.10.2014 01:48

Ответ: [TrueHorror] - разработка
 
Текстурку я бы сменил на какую-нибудь более асимметричную и с большим количеством деталей (фонарь то старый, на стекле грязь).

Даже в 2150 году фонари не идеальны: http://www.ag.ru/games/doom-3/screenshots/99703
(надо в движении смотреть -- тогда будет лучше видно много разных градаций яркости по всему световому пятну).

impersonalis 20.10.2014 02:01

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

Сообщение от Mr_F_ (Сообщение 288119)
я у себя в игре задолбался с динамически создаваемыми объектами, большинство глюков выходило именно из-за них. в результате по максимуму зарезервировал в сцене важные сложные объекты типа всех приезжающих копов, их машин, чтобы они всегда чётко были одни и те же.

у меня трабла значительная была ещё с тем, что переменных просто миллион, каждый нпс в себе содержит добрую сотню их, а завтра я могу добавить ещё какой-нибудь float timeToStopShoutingAtDogsWhoShitUnderTrees, и мне ещё это добавлять в сейв/лоад?! а у каждого нпс с уникальным поведением/диалогами - ещё свои переменные. так что необходимо было мутить универсальную систему, которой не нужно знать ничего более имени класса, руками перебирать я бы просто обосрался.
и вот в С++ думаю разве что кодогенератором сделал на основе существующих хидеров с переменными.

тред не читал @ сразу отвечал.
А в чём проблема сериализовать объект путём тупо дампа занимаемой им памяти? Проблемы будут только со значением указателей, все же другие типы переменных должны после обратного действа адекватно восстановиться.
Альтернативное решение - намутить свой менеджер параметров. Как-то надо было реализовать класс, в котором (по мере проработки ТЗ) постоянно удаляли/добавляли кучу логически слабо связанных параметров, поэтому "тупо массив" использовать было неудобно. Что-то типа: объявляется пространство имён МоиПараметры, а внутри - безымянный enum
Код:

enum {AI_FLAG,
AI_PAR1,
BOT_VEL,
//insert new val before this line
PARNUM}

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

mr.DIMAS 20.10.2014 22:16

Ответ: [TrueHorror] - разработка
 
Как сделать ореол ( light flare ) вокруг источника света? Ну я про то если отходишь от лампы то появляется такой ореол. Единственная мысль: нарисовать квад повернутый на камеру и без записи с буфер глубины. Но как делают тру пацаны?

Mr_F_ 20.10.2014 22:20

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

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

mr.DIMAS 21.10.2014 02:20

Ответ: [TrueHorror] - разработка
 
А можно ли как-нибудь спроецировать текстуру для поинт лайта, ну допустим лампа грязная и свет от нее тусклый - таким образом будут видны тени от грязи на стекле. тут что-то с кубемапами нужно городить?

Mr_F_ 21.10.2014 03:21

Ответ: [TrueHorror] - разработка
 
ага, можно кубмапой. просто юзаешь вектор света как выборку для неё.

mr.DIMAS 21.10.2014 21:38

Ответ: [TrueHorror] - разработка
 
Сделал. Записал видео - ибо на скрине будет не понятно.

Кубемапу делал с помощью тулзы от AMD. (первое что гугл выдал )
Грани кубемапы одинаковые, пока что.

Mr_F_ 21.10.2014 21:57

Ответ: [TrueHorror] - разработка
 
тебе надо кубмапу сделать, отрендерив из центра лампы чёрным по белому, чтобы она именно тень себя бросала.

mr.DIMAS 21.10.2014 22:02

Ответ: [TrueHorror] - разработка
 
я делаю общий случай с заранее подготовленными текстурами. потом добавлю тени, и отпадет необходимость делать кубмапу рендером. мне нужно получить именно эффект грязного замызганного стекла, не более.

Mr_F_ 21.10.2014 22:14

Ответ: [TrueHorror] - разработка
 
ну вообще у лампы твоей низ и верх закрыт нафиг - так что она должна светить заметно темнее с этих сторон.

mr.DIMAS 21.10.2014 22:29

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

Samodelkin 21.10.2014 22:42

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

Сообщение от mr.DIMAS (Сообщение 288352)
Сделал. Записал видео - ибо на скрине будет не понятно.

Кубемапу делал с помощью тулзы от AMD. (первое что гугл выдал )
Грани кубемапы одинаковые, пока что.

Ну вот всего лишь грязное стекло, а сразу куда живее и атмосфернее освещение стало.

Ещё в составе DX SDK есть тулза создающая DDS в том числе кубические и объёмные.


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

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