Страницы (2): « 1 [2] Показать все 223 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- OpenGL (https://hlfx.ru/forum/forumdisplay.php?forumid=7)
-- Нубские вопросы (https://hlfx.ru/forum/showthread.php?threadid=2218)
если сделал эффекты opengl, ьудут ли они работать в других режимах(софтварь, directx)?
erfty
конечно будут, но только если ты из них переключишься обратно в opengl, посмотришь эффект, а потом обратно в софтварь/directx вернёшься.
__________________
erfty
Нет универсального решения, надо делать отдельно под каждый рендеринг.
Особенно проблематичен софтвар, т.к. там довольно жёсткие лимиты по производительности.
__________________
а там хоть какие то сходства есть? Иль нужно с нуля переучиваттся с opengl на софтварь/directX?
__________________
-Brain is dead-
__________________
XaeroX к слову, насколько сейчас критично использование кэша шейдеров вместо компиляции налету? Просто, насколько я помню, в той же Паранойе убер-шейдеры собирались прямо во время загрузки уровня. А допустим, кто-то захочет прикрутить в TriAPI шейдеры, логичнее для этого использовать какой-то универсальный язык, по типу того, что был в системе материалов в третьей кваке, а затем уже компилировать в зависимости от выбранного рендера. И вот тогда вопрос, когда лучше проводить эту компиляцию
__________________
-Brain is dead-
KiQ
Мне кажется, сейчас главное - сделать быстро (в плане скорости разработки) и правильно (без багов). А оптимизировать такие моменты, как кеширование бинарников, можно и потом, если удастся убедить менеджмент в том, что это вообще нужно, с цифрами статистики...
__________________
XaeroX но по идее оптимизация должна закладываться уже на уровне прототипа? Или не должна?
__________________
-Brain is dead-
__________________
PrimeXT
GoldSrc Monitor
SMD Splitter
mdl-flip (gFlip analog)
Xash3D Modding Discord
__________________
SNMetamorph я не совсем о том гвоорил. Я имел в виду, что самому разработать упрощённый шейдерный язык с конечным значением основных комманд и два транслятора, в GLSL и что там в директе используется
__________________
-Brain is dead-
KiQ
Так я не понял, чем вас Cg не устраивает?
В Volatile шейдеры при сборке компилируются сразу в большое число профилей, часть из которых D3D, а часть GL. Соответственно, простые эффекты будут работать на условной GeForceFX, ну а сложные используют всё преимущество полноценного ветвления, неразвёртываемых циклов и других радостей модели 3+.
1 | enum { |
2 | PROG_PROFILE_UNKNOWN, |
3 | PROG_PROFILE_VS_2_0, |
4 | PROG_PROFILE_VS_2_X, |
5 | PROG_PROFILE_VS_3_0, |
6 | PROG_PROFILE_VS_4_0, |
7 | PROG_PROFILE_VS_5_0, |
8 | PROG_PROFILE_ARBVP1, |
9 | PROG_PROFILE_GP4VP, |
10 | PROG_PROFILE_GP5VP, |
11 | PROG_PROFILE_GLSLV, |
12 | PROG_PROFILE_GLSLV3, |
13 | PROG_PROFILE_PS_2_0, |
14 | PROG_PROFILE_PS_2_X, |
15 | PROG_PROFILE_PS_3_0, |
16 | PROG_PROFILE_PS_4_0, |
17 | PROG_PROFILE_PS_5_0, |
18 | PROG_PROFILE_ARBFP1, |
19 | PROG_PROFILE_GP4FP, |
20 | PROG_PROFILE_GP5FP, |
21 | PROG_PROFILE_GLSLF, |
22 | PROG_PROFILE_GLSLF3, |
23 | PROG_NUM_PROFILES |
24 | }; |
__________________
XaeroX помню ещё пытался с Cg водичкой для халфы разобраться, и как-то сразу мне оно не зашло именно тем, что это C for graphics. Отсюда и издержки синтаксиса и в целом некая перегруженность. Я же имел в виду некий высокоуровневый универсальный язык, который может транслироваться в API-зависимые конструкции. В общем, скриптинг для шейдеров. Старый GLSL был к этому приближен, потом в него тоже ввели кучу нагромождений типа чтобы отвязать от фиксированного пайплайна. В итоге да, контроль есть, а удобства уже такого нет. Все эти раскладки переменных и т.д, которые нужно делать вручную. Это мне напомнило переход от LWJGL2 к LWJGL3. Да, дали значительно больше контроля, но теперь вместо условного Display.create() нужно прописывать по сути те же обёртки над GL, так и спрашивается, на кой чёрт такой фреймворк, который заставляет делать пользователя то же самое, только переименованными методами?
__________________
-Brain is dead-
Старый GLSL по прежнему можно использовать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Вопрос к XaeroX - гуглил "oblique frustum with inversed depth" и ничего толком не нашел, кроме, походу, твоей работы по линеаризации глубины в шейдере при юзании oblique frustum с инвертированной глубиной (потому что сам по себе oblique frustum там портит глубину и потому Unigine от него отказались)
К чему это я - не подскажешь как подправить оригинальный код Эрика для модификации матрицы проекции если эта самая матрица уже с инвертированной глубиной ?
У меня в рендере юзается инвертированный депс, и я пытаюсь запилить зеркало, если оно попадает во фрустум - отражаю камеру и рисую в рендертаргет, потом шлепаю на это зеркало.
Хочу клипать все по этому зеркалу чтоб не рисовалось то что за ним, и потому подумаю использовать oblique frustum, но кривизна рук и бедность мозга не позволяет получить результат.
__________________
code:
// See: Oblique frustum: Eric Lengyel static void ClipProjectionMatrix(const Matrix& matView, Matrix& matProj, const Plane& inClipPlane) { Plane transformedPlane = matView.TransformPlane(inClipPlane); Vector clipPlane(transformedPlane.Normal()); clipPlane.SetScalar(3, -transformedPlane.Distance()); // Calculate the clip-space corner point opposite the clipping plane // as (Sgn(clipPlane.x), Sgn(clipPlane.y), 1, 1) and // transform it into camera space by multiplying it // by the inverse of the projection matrix float m0 = matProj.GetScalar(0, 0); float m5 = matProj.GetScalar(1, 1); float m8 = matProj.GetScalar(2, 0); float m9 = matProj.GetScalar(2, 1); float m10 = matProj.GetScalar(2, 2); float m14 = matProj.GetScalar(3, 2); Vector q ( (Sgn(clipPlane.GetScalar(0)) + m8) / m0, (Sgn(clipPlane.GetScalar(1)) + m9) / m5, 1.0f, (1.0f - m10) / m14 ); // Calculate the scaled plane vector Vector c = clipPlane * (1.0f / clipPlane.Dot4(q)); // Replace the third row of the projection matrix matProj.SetScalar(0, 2, -c.GetScalar(0)); matProj.SetScalar(1, 2, -c.GetScalar(1)); matProj.SetScalar(2, 2, -c.GetScalar(2)); matProj.SetScalar(3, 2, c.GetScalar(3)); }
0r@ngE
Для начала рекомендую вернуть обычную (не инвертированную) матрицу проекции и убедиться, что oblique clipping в принципе работает. А уж потом можно будет доработать для инверсии.
__________________
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
XaeroX
Открутил inversed depth (он тут у меня везде прибит гвоздями), вернул оригинальную функцию и теперь все клипается как положено.
Отличия моего кода от оригинального от Эрика только в том, что у него там OpenGL, и потому clip space depth в [-1;1] а у меня Vulkan и [0;1]
code:
// See: Oblique frustum: Eric Lengyel static void ClipProjectionMatrix(const Matrix& matView, Matrix& matProj, const Plane& inClipPlane) { Plane transformedPlane = matView.TransformPlane(inClipPlane); Vector clipPlane(transformedPlane.Normal()); clipPlane.SetScalar(3, -transformedPlane.Distance()); // Calculate the clip-space corner point opposite the clipping plane // as (Sgn(clipPlane.x), Sgn(clipPlane.y), 1, 1) and // transform it into camera space by multiplying it // by the inverse of the projection matrix float m0 = matProj.GetScalar(0, 0); float m5 = matProj.GetScalar(1, 1); float m8 = matProj.GetScalar(2, 0); float m9 = matProj.GetScalar(2, 1); float m10 = matProj.GetScalar(2, 2); float m14 = matProj.GetScalar(3, 2); Vector q ( (Sgn(clipPlane.GetScalar(0)) + m8) / m0, (Sgn(clipPlane.GetScalar(1)) + m9) / m5, -1.0f, (1.0f + m10) / m14 ); // Calculate the scaled plane vector Vector c = clipPlane * (1.0f / clipPlane.Dot4(q)); // Replace the third row of the projection matrix matProj.SetScalar(0, 2, c.GetScalar(0)); matProj.SetScalar(1, 2, c.GetScalar(1)); matProj.SetScalar(2, 2, c.GetScalar(2)); matProj.SetScalar(3, 2, c.GetScalar(3)); }
Вопрос отпадает всем спасибо, ночь выдалась продуктивной порешал.
0r@ngE
Поделись тогда уж формулами с народом, вдруг кому пригодится.
__________________
Что выбрать для 3д рендеринга, SDL иль Opengl? По критериям поддерживаемых устройств и производительности.
Такой вопрос, есть уровень 2д из тайлов, например размером 100х100 тайлов, что будет лучше, склеить их в одну картинку при загрузке или отрисовать все 10000 прямоугольников отдельно с текстурой тайлов? При том учитывая что текстура одного тайла может быть например 256x256 пикселей, и я так посчитал что клеить их в одну текстуру что то уж дофига большое разрешение получается. Отрисовка DirectX 9.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Исходя из информации (слухах) о принципах работы современных видеокарт, тебе надо надо все склеивать в атласы максимально возможного размера.
Добавлено 28-03-2023 в 16:06:
И не при загрузке, а при вгрузке надо склеить. Кстати, 10000 уникальных тайлов это крутовато, у тебя пример просто теоретический?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Для десяти тысяч квадов, как ни извращайся, но разницу ты не почувствуешь. Ни на десктопах ни на телефонах. Может на RivaTNT была бы разница.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
FiEctro квады ты можешь отсекать по вьюпорту. Или тебе нужно отобразить их на одном экране? Тогда проще прекалькуляцию в файл произвести, как оверлеи для карт в CS
__________________
-Brain is dead-
Так такие разрешения картинок слоёв это норма?
Добавлено 28-03-2023 в 16:19:
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Ну вот смотри у тебя картинки вполне кошерного размера и кратные двойке. На кой ляд ты собрался их сшивать?
Лайтмапы сшивают, потому что там куча мелкого дерьма размеров 1х1, 2х7, 5х3 и прочего.
Добавлено 28-03-2023 в 16:34:
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Как из моноширинного сделать обычный? Моноширинные гарнитуры были придуманы для пишущих машинок, чтобы текст нормально смотрелся, потому что там нельзя никак применить кернинг. В наборных шрифтах обычно таблица кернинга хранится в самом файле шрифта, если это, конечно, не корявый рип.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
А в пробеле сколько пикселей?
ZGreen
Ну логично если в чарактере нет вообще пикселей то это пробел, и его обрезать не надо
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Теперь я потерял нить рассуждения. Можешь описать свою задачу? А то моноширинный шрифт переделать в обычный и т д. Может мы в терминах расходимся? Я некоторое время имел отношение к издательской деятельности и с шрифтами у меня определенные ассоциации. Что имеешь в виду ты?
ZGreen
Чтобы ширина каждого чарактера была своя. Например символы "I" и "W" имеют разную ширину.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Очевидно это в откерненых шрифтах интервалы плавают, а в мониширинных нет, на то они и моноширинные. Я так полагаю, что ты берешь какую-то гарнитуру и пишешь как будто шрифт моноширинный и получается убого? Так ты выводи каждый символ с оффсетом, а не пиксели отпиливай. Ну или возьми настоящий моноширинный шрифт и пиши им, будет смотреться нормально
Добавлено 28-03-2023 в 23:57:
code:
I W
ZGreen
Скорее просто расстояние между буквами очень большое. А если их сделать уже, то уже сильнее заметно как это расстояние плавает, ибо в самом шрифте буквы нарисованы разной ширины.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
У тебя шрифт какой используется, что такие проблемы?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Если шрифт с кернингом, можешь в фотошопе сетку покрупнее сделать, набрать символы и в параметрах текста выбрать тип кернинга, оптический или по метрике в шрифте (если есть) ну и там по пикселям посмотреть-посчитать. Так мне было бы проще всего. У меня контейнер шрифтовой разбирать ума не хватат, хотя описания формата в сети, конечно, есть.
У кого нибудь есть ASCII таблица символов в кодировке UTF-16? Русская раскладка там за 1000 переваливает. Интересно какие там граничащие символы.
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Есть какая нить утилита которая бы могла генерить битмапу и записывать все эти данные в отдельный файл?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша
Можно ссылку?
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Временная зона GMT. Текущее время 03:06. | Страницы (2): « 1 [2] Показать все 223 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024