Sidebar

Как сделать Generic Shadowing шейдер

truepak

New member
07.06.10
8
0
0
Как сделать Generic Shadowing шейдер

Вот такой вопрос: в анриале есть такая вешь, как генерик шадоуинг, т.е. такой шейдер, который кагбе затеняет шов между двумя объектами. На скриншоте видно. Так вот, собственно, как сделать такой шейдер в хл2 орбокс?
 

Вкладення

truepak

New member
07.06.10
8
0
0
2 Strider:
представь себе, сколько будет весить такой уровень? Он будет по весу как нехилая сцена из полностью нестандартной текстуры в 3д махе. Или ты предлагаешь затенить просто текстурам снизу край? А если мне надо посреди стены вывести трубу, или шкаф? делать под него текстуру? или контуры оверлеями наклеивать везде? Этож 3,14здец скока работы. Это без учета того, что ведь стена может соприкасаться с дисплейсментом.

2 Z-O-M-B-I-E:
Вроде как нет, сделано за счет освещения и групп сглаживания (насчет последних не уверен), и просто текстуры снизу затемнены. В анриале, эта тень остается даже если свет падает напрямую, она просто от этого становится уже. и вообще, скрин в студию, если можно, так)))

Я вообще-то думал, что моделлеры юзают похожий шейдер в 3д макс или Майя, потому что на сценах вижу такой эффект, только чуть более продвинутый.
 

truepak

New member
07.06.10
8
0
0
2 kogemyaka:
мне нужен именно код шейдера, обе из вышеперечисленных ссылки я уже пробовал задолго до написания поста) первое - это просто описание языка программирования с примером, а вторая - библиотеки шейдеров в формате .dll, причем когда я их юзал, можно было бы исп. их ЛИБО на брашах, ЛИБО на моделях, что не есть гут.

Нашел на вид такие же в кризисе. Если кто его вскрывал уже, знает, или имеет на руках исходники из СДК (~500-700мб), просьба вложить кусог кода/файла, потому как сдк дого вытягивать. Игровые файлики пошерстю сам, но вдруг уже есть люди)
 

truepak

New member
07.06.10
8
0
0
http://www.gamedev.net/community/forums/topic.asp?topic_id=497899

Код:
float TestAO(float3 vOrigin, float3 vOffset, float cmpDist)
{
	float4 vPos = float4(vOrigin + vOffset, 1);
	vPos = mul(vPos, m_projection);
	vPos.y = -vPos.y;

	float2 ScreenPos = (0.5 * vPos.xy / vPos.w) + float2( 0.5, 0.5 );	

	float tDepth = tex2D(gb_depth, ScreenPos).r * f_zMax;

        float zd = 50.0*max( length(vOrigin+vOffset)-tDepth, 0.0 );
        // also tried this:
        // float zd = 50.0*max( cmpDist - tDepth, 0.0 );
        
        return (1.0/(1.0+zd*zd));              // occlusion = 1/( 1 + 2500*max{dist,0)^2 )
}



//RELEVANT PART OF THE CODE

	 // testOffset[16] is a an array of random vectors (varying lengths less than 1).
	 // rad is the sphere radius to test around
         // oDepth is the current test depth from the depth texture.

	float rad = 0.5f;
	float AO=0.0f;
	for (int t=0;t<16;t++)
	{
		AO += TestAO(viewPos, testOffset[t] * rad , oDepth);
	}

		
	AO = AO / 16.0f;
	Output.col = float4(AO, AO, AO,0);

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

Strider

-<=Модмейкер=>-
25.10.09
8
Насчёт предметов - настраивай лайтмапы, в сорсе есть свои тени, если ты забыл.
А такого рода тени можно делать оверлеями. Например так сделана подстветка стен в портале.
 

FiEctro

Супер Модератор
Команда форуму
Супер Модератор
28.07.06
17 167
33
  • Золотая медаль 213
  • Neh
2 truepak:
Похоже на SSAO. Попробуй у стыков ставить блоклайты, чтобы туда света меньше попадало.
 

truepak

New member
07.06.10
8
0
0
http://ja.pastebin.ca/953523

вот, собственно он же, но из кризиса. Я явно переоценил свои возможности) Конечно, еще немного помучаюсь, но без чужой помощи не обойтись. Есть вообще кто-нибудь, кто уже шейдера прикручивал к халфу? На википедии вальвовской есть урок, но что-то я не догоню, что они хотят от меня в инглиш варианте. Хочется (очень) такой же, но на русском.
 

Game Server

Доноры Красавчики

Користувачі онлайн

Немає користувачів онлайн.