Начал сегодня копать в направлении рисования спрайтов на брашах посредством триапи. Пока удалось только закрасить весь мир additive-спрайтом. Но уже прогресс. Как-то странно работает на некоторых картах: если вертеть взгляд, то спрайты могут исчезать с некоторых поверхностей, причём в больших зонах. Виз виноват? Исчезают либо при взгляде под определённым углом, либо при изменении координат игрока.
Отправлено Ku2zoff 27-07-2016 в 14:19:
Нарисовал спрайт поверх только тайлящихся текстур. Как только действительно будет чего показать, создам новую тему.
Добавлено 27-07-2016 в 21:19:
Привет анимированные декали?
Отправлено Crystallize 27-07-2016 в 14:29:
Ku2zoff Доступ к видео ограничен.
Я пропадание чего-либо видел только в Спиритах дядьмишиных, там имр пропадает за пределами фрустума (модельки) игрока.
Отправлено FiEctro 27-07-2016 в 14:31:
Ku2zoff
Таким макаром можно круги на воде рисовать
Crystallize
Аранжмод не совсем спирит, возможно Сисоп его допилил в более приемлимый вид.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Ku2zoff 27-07-2016 в 15:24:
Цитата:
Crystallize писал: Доступ к видео ограничен.
Доступ открытый... Может это потому, что я его открыл через несколько минут после заливки?
Цитата:
FiEctro писал: Таким макаром можно круги на воде рисовать
Круги на воде нужно рисовать с помощью EfxAPI. А вот эффект "шейдеров", как в первом анриле, можно таким макаром сделать. И детальную текстуру. И стекающую воду. И длинную анимацию более 10 кадров (в спрайте 256). Единственный минус - спрайт растягивается до размера полигона. Может быть можно как-то решить.
Админы, отрежьте плиз посты, начиная с 157218 в отдельную тему в Half-Life SDK. С названием, например, "Рисование спрайтов поверх полигонов с помощью TriAPI". Заранее спасибо.
Отправлено Crystallize 27-07-2016 в 15:42:
Ku2zoff А ты рисуешь обычным мультитекстурингом? А то в func_shine они похоже просто подвешивают спрайт в паре юнитов над поверхностью, у них там куча отступов указана, видно против z-файтинга.
Отправлено Ku2zoff 27-07-2016 в 15:59:
Цитата:
Crystallize писал: А ты рисуешь обычным мультитекстурингом? А то в func_shine они похоже просто подвешивают спрайт в паре юнитов над поверхностью, у них там куча отступов указана, видно против z-файтинга.
Не знаю, как правильно сформулировать. Если бы использовал OpenGL, то термин мультитекстуринг подошёл бы. Здесь немного другое, но смысл тот же. TriAPI по сути - обёртка для некоторых gl-вызовов из клиентки. Даже TGA можно загрузить и отрисовать при желании, если конечно gEngfuncs.LoadMapSprite может грузить что-то по запросу, а не только овервьюшки.
Отправлено ~ X ~ 28-07-2016 в 07:31:
Цитата:
Ku2zoff писал: отрежьте плиз посты
done.
Цитата:
Ku2zoff писал: Круги на воде нужно рисовать с помощью EfxAPI.
С помощью этого АПИ лучше вообещ ничего не рисовать. Только лучи и glow. Остальное лучше самому. Тормознее тэмпэнтить только нормалные энтити.
Ku2zoff писал: gEngfuncs.LoadMapSprite может грузить что-то по запросу
Это крайне любопытная функция. Она режет любую тга-шку на фрагменты 256х256 и создаёт struct model_s для каждого. Всё-таки основное её предназначение - загрузка больших текстур для овервью, которые рисуются фрагментами.
XaeroX писал: Она режет любую тга-шку на фрагменты 256х256 и создаёт struct model_s для каждого.
Вот оно что. Так этой функцией можно без проблем грузить динамически заменяемые скайбоксы! Чтобы менять небо на лету. Только нужно будет 6 отдельных тгашек собрать в одну. Есть статейка на thewavelength.net, которая описывает принципы рендеринга таких скайбоксов. Если не будет лениво, может и это реализую. Хотя ХЗ.
Отправлено XaeroX 29-07-2016 в 05:20:
Ku2zoff
А чем не устраивает менять скайбоксы обычным способом, через OpenGL-хак? Так их можно ещё и хайресными делать.
Ну это надо opengl32.lib подключать, а я хочу обойтись встроенными механизмами движка. Хотелось бы тени тоже встроенные, но тут уже никак по-другому.
Добавлено 29-07-2016 в 13:02:
Цитата:
XaeroX писал: RTFXSC
Что за аббревиатура такая? Гугл по ней выдаёт всякие биржевые индексы, потому что Real Time ForeX.
Отправлено XaeroX 29-07-2016 в 06:31:
Ku2zoff
Ну ты RTFM знаешь, что такое?
Тут то же самое, только XSC - это Xash Source Code.
Цитата:
Ku2zoff писал: а я хочу обойтись встроенными механизмами движка
Да ты пойми, движок уже не просто устарел, он... ну я не знаю. Вальва уже давным-давно отрезала D3D-рендер, а под линуксом - и софтварный. По сути в халфе только OpenGL-рендер и остался.
XaeroX писал: Тут то же самое, только XSC - это Xash Source Code.
Новый локальный мем родился? Это как в старые времена. Только раньше было "Юзай спирит". А сейчас "Учи матан сорцы ксаша".
Добавлено 29-07-2016 в 14:06:
Цитата:
XaeroX писал: Да ты пойми, движок уже не просто устарел, он... ну я не знаю.
Конечно устарел. Но я даже на сорс не могу нормально перейти, потому что инструментарий у него пипец просто. Чтобы текстурку сделать, надо её мало того, что конвертировать, а ещё и какой-то файл с описанием написать. И физику для модели сделать. И эмоции в фейспозере сделать для персонажа. И шейдеры написать. Ужос! Половину из этих операций инструменты должны автоматически делать. А дальше уже тюнинг ручками.
Так что я лучше буду юзать устаревший движок. Я ж не ради денег и славы. А ради собственного удовольствия моддингом занимаюсь.
Отправлено ILZM 29-07-2016 в 16:47:
Цитата:
Ku2zoff писал: Но я даже на сорс не могу нормально перейти, потому что инструментарий у него пипец просто.
1. конвертировать в 2 клика. Текст написать надо, чтобы выбрать шейдер и его опции, там все легко
2. физику наверное можно сгенирировать
3. эмоции всегда создавались вручную, потому-что у каждой модели они разные. Есть один сервис mixamo fuse, но там все персонажи сгенирированные. Если хочешь создать качественного персонажа и вдохнуть в него жизнь, то все руками.
4. шейдеров вроде бы пока писать не надо. Там везде один на все материалы.
Я сам недавно шарахался от этого, но теперь пони-маю, что все эти тулзы и движения есть обязательное требование для такого уровня движка
Отправлено Дядя Миша 29-07-2016 в 20:17:
Цитата:
Ku2zoff писал: Рисование спрайтов поверх полигонов с помощью TriAPI
А зачем рисовать спрайты поверх полигонов с помощью TriAPI
Дядя Миша писал: сделай каустики штоле. А мы посмотрим.
Я и хочу их сделать. Проблема в том, что спрайт масштабируется под масштаб текстуры. То есть, если покрывать все подводные поверхности каустиками, надо будет на всех брашах использовать одинаковый скейл текстур. А это будет некрасиво, если помимо мира покрывать каустиками ещё и энтити, где скейл может отличаться.
Отправлено Дядя Миша 30-07-2016 в 17:30:
А ты делай проективные каустики, как фонарик в параное
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 30-07-2016 в 19:56:
Цитата:
Дядя Миша писал: А ты делай проективные каустики, как фонарик в параное
А средствами TriAPI это возможно? Знаю, что можно рисовать квадраты и треугольники определённого размера. А вот насчёт полигонов не уверен. Хотя ХЗ, наверное можно масштабировать.
Это что, вот это можно сделать с помощью этих функций? Ну не прям это, но выделение объекта на экране.
Отправлено Crystallize 30-07-2016 в 20:28:
Цитата:
Ku2zoff писал: Это что, вот это можно сделать с помощью этих функций? Ну не прям это, но выделение объекта на экране.
Оно-то тут при чём? К тому же тебе нужен не объект, а его полигоны, а то и вообще полигоны мира если каустики, так?
Я всё же надеюсь, что ты после каустиков вернёшься к шайну.
Отправлено PLut 30-07-2016 в 20:53:
Ku2zoff WorldToScreen превращает мировые координаты в х, у на экране. Цифры урона в бдефе так нарисованы.
Ku2zoff писал: Знаю, что можно рисовать квадраты и треугольники определённого размера. А вот насчёт полигонов не уверен.
Ну во первых при помощи треугольников можно вывести многогранник любой сложности, а во вторых есть TRI_POLYGON.
Цитата:
Ku2zoff писал: Это что, вот это можно сделать с помощью этих функций? Ну не прям это, но выделение объекта на экране.
То что на картинке - это пост-процесс с использованием буффера глубины и эдж-детекта. WorldToScreen, можно использовать, ну например для вторичной аттаки редемира, когда желаемые цели подсвечиваются спрайтами с красным прицелом. Сами цели (монстры, игроки) имеют трехмерные координаты, а после этой функции уже имеют двухмерные, в рамках экрана. И можно выводить ортогональные спрайты. Обратная функция может пригодится, ну например для выделения вышенькой брашей в 3д виде. Ну примерно как в демках физики можно подцеплять всякие коробки-бочки и бросать их.
Добавлено 30-07-2016 в 23:59:
Цитата:
PLut писал: Цифры урона в бдефе так нарисованы
строго говоря разница между парралельным и ортогональным спрайтом только в перспективной проекции, которую можно эмулировать, регулируя скейл спрайта в зависимости от дистанции до камеры. Ну вообщем когда разберетесь, вам всё это покажется очень просто и прейатно.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 31-07-2016 в 03:18:
Цитата:
Дядя Миша писал: Ну во первых при помощи треугольников можно вывести многогранник любой сложности, а во вторых есть TRI_POLYGON.
Я и заюзал в том видео TRI_POLYGON. Минимум операций для рисования, но несколько спрайтов на один полигон не наложить.
Цитата:
Дядя Миша писал: Неа. Там даже TexCoord4f нет.
Пичалька. Ну да ладно, всё равно рано или поздно придётся цеплять OpenGL для теней от студиомоделек.
Цитата:
Дядя Миша писал: WorldToScreen, можно использовать, ну например для вторичной аттаки редемира, когда желаемые цели подсвечиваются спрайтами с красным прицелом.
Теперь понятно, что и зачем. Так можно иконки юза делать (фпранойе коряво сделано, через ВГУИ, иконка всегда в ондом месте на экране). А используя эту функцию, можно высвечивать иконки поверх объектов. Кстати, идея для иконок тиммейтов в мультиплеере. Только нужна поправка на высоту, чтобы иконка рисовалась над головой.
Добавлено 31-07-2016 в 10:18:
Цитата:
Дядя Миша писал: Ну вообщем когда разберетесь, вам всё это покажется очень просто и прейатно.
Оно всё оказывается очень просто, когда начинаешь вникать, а не бездумно копипастить Отправлено Дядя Миша 31-07-2016 в 05:57:
Цитата:
Ku2zoff писал: когда начинаешь вникать, а не бездумно копипастить
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Ku2zoff 31-07-2016 в 07:51:
Цитата:
Дядя Миша писал: рендер второй паранои был написан за три недели.
То-то он рисовал зелёные сопли на стенах вместо текстур и бампа у некоторых товарищей Нужно ещё и тестирование. Без этого никак.
Отправлено Crystallize 31-07-2016 в 08:13:
Ku2zoff дм же говорил что там дрова радеона вели себя так как он никогда бы не подумал, если б не увидел.
Отправлено Ku2zoff 31-07-2016 в 08:15:
Цитата:
Crystallize писал: что там дрова радеона
Я же пишу, что тестировать надо обязательно. А уж тем более если радеон. Проще выкинуть радеон. Хотя нет. Вот если интел, то лучше выкинуть. С радеоном ещё можно совладать.
Отправлено PLut 31-07-2016 в 08:16:
Дядя Миша То не спрайты, то pfnDrawString. Рендерер, так и не заценил
Хм...
C++ Source Code:
1
/*
2
=============
3
pfnDrawString
4
5
TODO: implement
6
=============
7
*/
8
int pfnDrawString( int x, int y, constchar *str, int r, int g, int b )
9
{
10
return 0;
11
}
Ku2zoff Ну иконка на одном месте - хороший вариант. Если бы оно рисовалось на месте энтити при наведении, то было бы хуже ИМХО. Хотя, в играх без прицела, может и нормуль. Что еще грустно - скорость обновления VGUI в хл, если будешь что-то двигать, то оно двигается рывками, но зато в Xash3D всё окей с этим.
Интел так просто не выкинешь, интел в сердце процессоре.
Ku2zoff писал: То-то он рисовал зелёные сопли на стенах вместо текстур и бампа у некоторых товарищей Нужно ещё и тестирование. Без этого никак.
Да ты что, правда что ли?
Я ж объяснял, что до релиза не мог раздавать параною кому ни попадя без согласия Элбера, т.е. тестирование лежало целиком на нём. А он тестил только на нвидии и один раз упомянул, что у кого-то не завелось, но отнесся к этому наплевательски.
Там просто есть несколько спорных расширений, которые не у всех поддерживаются. Или поддерживаются, но криво. Я думал увеличить версию до GL 3.0, но тогда бы еще какая-то часть людей отвалилась со старыми видиокартами.
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено KiQ 31-07-2016 в 14:55:
Цитата:
Дядя Миша писал: Обратная функция может пригодится, ну например для выделения вышенькой брашей в 3д виде. Ну примерно как в демках физики можно подцеплять всякие коробки-бочки и бросать их.
Это лучше, чем использовать трейсы? Хотя, полагаю, что быстрее намного, тут же просто умножение на матрицу проекции. Хотя с другой стороны, как узнать, что там именно нужный браш или энтитя? Это уже трейсить надо.
Добавлено 31-07-2016 в 17:55:
Дядя Миша так это, там, будет билд-та?
__________________
-Brain is dead-
Отправлено Дядя Миша 31-07-2016 в 17:35:
Цитата:
KiQ писал: Это лучше, чем использовать трейсы?
Вопрос из разряда, что лучше использовать двигатель внутреннего сгорания или коробку передач. И то и другое надо. Тебе координаты мышки надо перевести в 3д представление и пустить трейс по направлению взгляда.