HLFX.Ru Forum Страницы (9): [1] 2 3 4 5 » ... Последняя »
Показать все 131 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Диалоги о лайтмапах. (https://hlfx.ru/forum/showthread.php?threadid=2525)


Отправлено FiEctro 04-01-2011 в 20:30:

Диалоги о лайтмапах.

Данная тема натолкнула меня на некоторое небольшое иследование. Прошу прощения что создал новую, но не хочется вести дискуссию на английском, и вообще мешаться автору.
Всё дело в том, как я возможно полагаю в сорсе используется немного иное "смешивание" лайтмап с текстурой.
Внизу приведен пример на GoldSrc и Source без HDR, почти одна и таже карта с одинаковыми текстурами (кроме потолка) и размерами лайтмапы. На них присутствует по одному источнику света light. Как видно по скриншоту в Source лайтмапа может засветить текстуру так, что её не будет видно, в то время как GoldSrc никогда нам не даст этого сделать, текстура всегда будет хорошо разборчиво видна (эти места обведены красным кругом), что даёт не очень хороший эффект при больших значениях.
К сожалению мне не удалось сделать на обеих картах одинакового значения освещенности. Всё что вы видете под скрином в Source под хл1 выглядило как norad даже при 1/2 значения освещенности по сравнению с хл2 (-gamma тоже не помог).

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

Так что прошу наших уважаемых знатоков объяснить мне, в чем же там всё таки дело, и почему ГолдСорсовские лайтмапы никогда нельзя засветить так, чтоб не было видно самой текстуры.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Government-Man 04-01-2011 в 21:06:

В голдсрц используется простое умножение текстуры на лайтмапу, что в силу математических причин не может дать эффекта "засвечивания" - пиксель никак не может стать ярче чем был. Это стандартная операция для fixed pipeline. А в хл2 используется хитрый шейдер "lightmappedgeneric" с самопальным алгоритмом смешивания.


Отправлено thambs 04-01-2011 в 21:10:

FiEctro

в хл2 логарифмический масштаб для уровней освещения, если память не отшибло.


Отправлено Дядя Миша 04-01-2011 в 21:20:

Цитата:
Government-Man писал:
что в силу математических причин не может дать эффекта "засвечивания" - пиксель никак не может стать ярче чем был

та может =)

__________________
My Projects: download page

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

Цитата:

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


Отправлено FiEctro 04-01-2011 в 21:36:

thambs
Можно подробнее?
Government-Man
Самопальным? А можно конкретнее? Как он работает?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено XaeroX 04-01-2011 в 21:37:

glTexEnvf( GL_COMBINE_ARB, GL_RGB_SCALE_ARB, 2.0f );

__________________

xaerox on Vivino


Отправлено FiEctro 04-01-2011 в 21:41:

XaeroX
Спасибо, это уже что то .

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Government-Man 04-01-2011 в 21:49:

Цитата:
FiEctro писал:
Самопальным? А можно конкретнее? Как он работает?


Кури сорцы бетки


Отправлено FiEctro 04-01-2011 в 21:50:

Government-Man
Курил, моё познание Директа равно нулю. Можешь описать в 2х словах?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Government-Man 04-01-2011 в 22:15:

code:
tex t0 tex t1 mul r0, t0, v0 ; base times vertex color (with alpha) mul r0.rgb, t1, r0 ; fold in lightmap (color only) mul_x2 r0.rgb, c0, r0 ; * 2 * (overbrightFactor/2)


Отправлено PoD-Stas 04-01-2011 в 22:23:

Government-Man тоже, что скинул Ксерокс, только в другой интерпретации))


Отправлено FiEctro 05-01-2011 в 13:58:

PoD-Stas
1 в 1? Я думал там еще гама крутится.

Government-Man
А можно подробнее про overbrightFactor/2 ?

З.Ы. с помощью Попошопа удалось получить схожий с сорсом результат, умножив яркость и контраст на 2, как в принципе написал ксерокс (правда там похоже только яркость). Так же спасибо CrazyRussianу за конкретное объяснение и реализацию на практике, XaeroX и Government-Man за примеры.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Government-Man 05-01-2011 в 14:22:

Цитата:
FiEctro писал:
А можно подробнее про overbrightFactor/2 ?


overbrightFactor - шейдерная константа (устанавливаемая движком). Чему она равна и откуда берется незнаю, разбираться лень...

Подбери ее методом тыка если надо.


Отправлено FiEctro 05-01-2011 в 14:31:

Government-Man
Это?
materialsystem\colorspace.cpp(140)

C++ Source Code:
1
float f, overbrightFactor;
2
 
3
// Can't do overbright without texcombine
4
// UNDONE: Add GAMMA ramp to rectify this
5
 
6
if ( (!HardwareConfig()) || !HardwareConfig()->HasTextureEnvCombine() )
7
{
8
  overbright = 1.0f;
9
}
10
 
11
if ( overbright == 2.0 )
12
{
13
  overbrightFactor = 0.5;
14
}
15
else if ( overbright == 4.0 )
16
{
17
  overbrightFactor = 0.25;
18
}
19
else
20
{
21
  overbrightFactor = 1.0;
22
}
23
 
24
g_config.overbright = overbright;
25
g_ooOverbright = overbrightFactor;
26
 
27
for (i=0 ; i<4096 ; i++)
28
{
29
  // convert from linear 0..4 (x1024) to screen corrected vertex space (0..1?)
30
  f = ( float )pow ( i/1024.0f, 1.0f / screenGamma );
31
 
32
  g_LinearToVertex[i] = f * overbrightFactor;
33
  if (g_LinearToVertex[i] > 1)
34
    g_LinearToVertex[i] = 1;
35
 
36
  linearToLightmap[i] = ( int )( f * 255 * overbrightFactor );
37
  if (linearToLightmap[i] > 255)
38
    linearToLightmap[i] = 255;
39
}
40
}

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 05-01-2011 в 14:49:

овербрайт был еще в третьей кваке.

__________________
My Projects: download page

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

Цитата:

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


Временная зона GMT. Текущее время 21:57. Страницы (9): [1] 2 3 4 5 » ... Последняя »
Показать все 131 сообщений этой темы на одной странице

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