HLFX.Ru Forum
Показать все 43 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- [Кодинг] Рисование спрайтов поверх полигонов с помощью TriAPI (https://hlfx.ru/forum/showthread.php?threadid=4822)


Отправлено Ku2zoff 26-07-2016 в 04:33:

Начал сегодня копать в направлении рисования спрайтов на брашах посредством триапи. Пока удалось только закрасить весь мир 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. Остальное лучше самому. Тормознее тэмпэнтить только нормалные энтити.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 28-07-2016 в 08:19:

Цитата:
Ku2zoff писал:
gEngfuncs.LoadMapSprite может грузить что-то по запросу

Это крайне любопытная функция. Она режет любую тга-шку на фрагменты 256х256 и создаёт struct model_s для каждого. Всё-таки основное её предназначение - загрузка больших текстур для овервью, которые рисуются фрагментами.

__________________

xaerox on Vivino


Отправлено ~ X ~ 28-07-2016 в 08:40:

XaeroX а у неё есть лимиты на кол-во вызовов?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено XaeroX 28-07-2016 в 08:58:

~ X ~
Вроде бы нет.

__________________

xaerox on Vivino


Отправлено ~ X ~ 28-07-2016 в 09:05:

XaeroX хотя, наверняка MAX_GLTEXTURES вылетит рано или очень рано.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено Ku2zoff 29-07-2016 в 05:17:

Цитата:
XaeroX писал:
Она режет любую тга-шку на фрагменты 256х256 и создаёт struct model_s для каждого.

Вот оно что. Так этой функцией можно без проблем грузить динамически заменяемые скайбоксы! Чтобы менять небо на лету. Только нужно будет 6 отдельных тгашек собрать в одну. Есть статейка на thewavelength.net, которая описывает принципы рендеринга таких скайбоксов. Если не будет лениво, может и это реализую. Хотя ХЗ.


Отправлено XaeroX 29-07-2016 в 05:20:

Ku2zoff
А чем не устраивает менять скайбоксы обычным способом, через OpenGL-хак? Так их можно ещё и хайресными делать.

__________________

xaerox on Vivino


Отправлено Ku2zoff 29-07-2016 в 05:24:

Вопрос на засыпку: что за функции WorldToScreen и ScreenToWorld в TriAPI? Что они делают? Какие-то операции с координатами?

Добавлено 29-07-2016 в 12:24:

Цитата:
XaeroX писал:
через OpenGL-хак?

Что за хак такой?


Отправлено XaeroX 29-07-2016 в 05:40:

Цитата:
Ku2zoff писал:
Вопрос на засыпку

Чёрт, я засыпался.
Ну RTFXSC, ёлки-палки.
Цитата:
Ku2zoff писал:
Что за хак такой?

glTexImage2D по специальным индексам, то ли 5100-5105, то ли около того. И снова RTFXSC.

__________________

xaerox on Vivino


Отправлено Ku2zoff 29-07-2016 в 06:02:

Цитата:
XaeroX писал:
glTexImage2D

Ну это надо 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 on Vivino


Отправлено Ku2zoff 29-07-2016 в 07:06:

Цитата:
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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-07-2016 в 13:33:

Цитата:
Дядя Миша писал:
А зачем рисовать спрайты поверх полигонов с помощью TriAPI

Ну, например, чтобы сделать какой-нибудь текстурный эффект, не прикручивая OpenGL.


Отправлено Дядя Миша 30-07-2016 в 14:58:

Ku2zoff сделай каустики штоле. А мы посмотрим.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Crystallize 30-07-2016 в 16:48:

Цитата:
Ku2zoff писал:
Вопрос на засыпку: что за функции WorldToScreen и ScreenToWorld в TriAPI? Что они делают? Какие-то операции с координатами?

http://half-life.ru/forum/showthrea...31870#post31870


Отправлено Ku2zoff 30-07-2016 в 17:11:

Цитата:
Дядя Миша писал:
сделай каустики штоле. А мы посмотрим.

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


Отправлено Дядя Миша 30-07-2016 в 17:30:

А ты делай проективные каустики, как фонарик в параное

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено Ku2zoff 30-07-2016 в 19:56:

Цитата:
Дядя Миша писал:
А ты делай проективные каустики, как фонарик в параное

А средствами TriAPI это возможно? Знаю, что можно рисовать квадраты и треугольники определённого размера. А вот насчёт полигонов не уверен. Хотя ХЗ, наверное можно масштабировать.

Добавлено 31-07-2016 в 02:56:

Цитата:
Crystallize писал:
http://half-life.ru/forum/showthread.php?s=&postid=31870#post31870

Это что, вот это можно сделать с помощью этих функций? Ну не прям это, но выделение объекта на экране.


Отправлено Crystallize 30-07-2016 в 20:28:

Цитата:
Ku2zoff писал:
Это что, вот это можно сделать с помощью этих функций? Ну не прям это, но выделение объекта на экране.

Оно-то тут при чём? К тому же тебе нужен не объект, а его полигоны, а то и вообще полигоны мира если каустики, так?
Я всё же надеюсь, что ты после каустиков вернёшься к шайну.


Отправлено PLut 30-07-2016 в 20:53:

Ku2zoff WorldToScreen превращает мировые координаты в х, у на экране. Цифры урона в бдефе так нарисованы.

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 30-07-2016 в 20:59:

Цитата:
Ku2zoff писал:
А средствами TriAPI это возможно?

Неа. Там даже TexCoord4f нет.
Цитата:
Ku2zoff писал:
Знаю, что можно рисовать квадраты и треугольники определённого размера. А вот насчёт полигонов не уверен.

Ну во первых при помощи треугольников можно вывести многогранник любой сложности, а во вторых есть TRI_POLYGON.
Цитата:
Ku2zoff писал:
Это что, вот это можно сделать с помощью этих функций? Ну не прям это, но выделение объекта на экране.

То что на картинке - это пост-процесс с использованием буффера глубины и эдж-детекта. WorldToScreen, можно использовать, ну например для вторичной аттаки редемира, когда желаемые цели подсвечиваются спрайтами с красным прицелом. Сами цели (монстры, игроки) имеют трехмерные координаты, а после этой функции уже имеют двухмерные, в рамках экрана. И можно выводить ортогональные спрайты. Обратная функция может пригодится, ну например для выделения вышенькой брашей в 3д виде. Ну примерно как в демках физики можно подцеплять всякие коробки-бочки и бросать их.

Добавлено 30-07-2016 в 23:59:

Цитата:
PLut писал:
Цифры урона в бдефе так нарисованы

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

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

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 писал:
когда начинаешь вникать, а не бездумно копипастить

рендер второй паранои был написан за три недели.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

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, const char *str, int r, int g, int b )
9
{
10
  return 0;
11
}


Ku2zoff Ну иконка на одном месте - хороший вариант. Если бы оно рисовалось на месте энтити при наведении, то было бы хуже ИМХО. Хотя, в играх без прицела, может и нормуль. Что еще грустно - скорость обновления VGUI в хл, если будешь что-то двигать, то оно двигается рывками, но зато в Xash3D всё окей с этим.
Интел так просто не выкинешь, интел в сердце процессоре.

__________________
Base Defense on Steam, ModDB


Отправлено mittorn 31-07-2016 в 10:22:

PLut у нас это исправлено


Отправлено thambs 31-07-2016 в 11:08:

>Вот если интел, то лучше выкинуть.
Тут ребята говорили, что сыурц на in-hell'ах вполне работает.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 31-07-2016 в 12:41:

Цитата:
Ku2zoff писал:
То-то он рисовал зелёные сопли на стенах вместо текстур и бампа у некоторых товарищей Нужно ещё и тестирование. Без этого никак.

Да ты что, правда что ли?
Я ж объяснял, что до релиза не мог раздавать параною кому ни попадя без согласия Элбера, т.е. тестирование лежало целиком на нём. А он тестил только на нвидии и один раз упомянул, что у кого-то не завелось, но отнесся к этому наплевательски.
Там просто есть несколько спорных расширений, которые не у всех поддерживаются. Или поддерживаются, но криво. Я думал увеличить версию до GL 3.0, но тогда бы еще какая-то часть людей отвалилась со старыми видиокартами.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

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д представление и пустить трейс по направлению взгляда.

Цитата:
KiQ писал:
так это, там, будет билд-та?

Донатов бы

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено ~ X ~ 01-08-2016 в 07:26:

Цитата:
Ku2zoff писал:
Ну это надо opengl32.lib подключать, а я хочу обойтись встроенными механизмами движка.

Разумный подход, а то некоторые так любят нарушать тиеричность проекта, так любят...

Цитата:
Дядя Миша писал:
рендер второй паранои был написан за три недели.

А-а-а-а, вот почему оно не запускается

Цитата:
Ku2zoff писал:
Вот если интел, то лучше выкинуть.

++

Ku2zoff тебе же давали сырцы XDM, где есть готовые примеры работы Screen2World с выделением всего что выделяется.

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]


Отправлено pRoxxx 01-08-2016 в 08:15:

Цитата:
Ku2zoff писал:


Это что, вот это можно сделать с помощью этих функций? Ну не прям это, но выделение объекта на экране.


Нет, это делается в шойдере через Буфер глубины.


Временная зона GMT. Текущее время 09:02.
Показать все 43 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024