Jump to content

Recommended Posts

DDamian724    18

Очень хороший учебник. Спасибо)

У меня вопрос, как я могу применить отражения только к воде?

  • Полезно 1

Share this post


Link to post
Share on other sites
Expropriator    1,899

@Anonim, это для R2 ТЧ. А в R3 ЧН я впух. Там код шейдеров другой.


andreyholkin.gif

rod_cccp.gif

 

Share this post


Link to post
Share on other sites
Romann    488
Posted (edited)
В 04.10.2019 в 00:52, Expropriator сказал:

Там код шейдеров другой

Та же беда и под ЗП r3-r4, пытался переписать - не взлетает, говорит не порядок с вектором в SSLR, там как минимум "tex2D" не используется, переписывал на примерах из шейдеров, но ему не нравится..(

Да и с r2 на ЗП тоже непорядок, сделал из репо - лужа есть, при чём она постоянна, не зависит от дождя, отражение вроде есть, но при разных углах взгляда артефактит дико. Да ещё - лужа есть, идёт дождь или нет, но афальт всегда стоит сухой, так же с дождём или без. Или я может в репо что-то упустил?

**************************************************************************************************************

В общем, что сделал: движок "OXR_CoC", из вышеуказанного репозитория всё по SSLR перетянул сначала для r2, потом сделал тоже самое для r3-r4, с небольшими изменениями под эти рендеры(оказалось больше файлов где надо добавить дополнительные аргументы, чем у r2), движок скомпилил. По шейдерам для r2 сделал всё так же, как в репозитории, различий много не увидел, для r3-r4 пытался переписать - не вышло, не взлетает. 

На r2.5 вот такие получились "Типа лужи".

Edited by Romann

Машина: проц. Intel® Core™ i5-2430M CPU 2.40GHz ,ОЗУ 6,00Гб ,видео 2 Гб,Win7х64

 

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить?

                                                                                                                                                                          © Болотный Доктор

Share this post


Link to post
Share on other sites
Zagolski    74

Нормалек. Качество не ахти, но для сталка пойдет. Правда, обозначенный выше алгоритм трассировки активно пропускает мелкие объекты, такие как провода, листва и пр. Да и не только мелкие. Хотя и достаточно быстр. Но все равно 6 итераций - мало, лучше хотя бы с десяток.

Марш луча лучше делать в скринспейсе, т.е. по пикселям, а не в мировых или видовых координатах.

Нормаль для воды можно не переводить в пространство касательных и не делать лишних умножений матриц, потому как вода всегда расположена горизонтально.

Edited by Zagolski
  • Like 2
  • Согласен 1

Share this post


Link to post
Share on other sites
_ХоЗаР_    25
6 часов назад, Zagolski сказал:

как вода всегда расположена горизонтально

Ну для воды тогда как минимум придется вектора резать получаемые из-за того что вода не пишется в буфер глубины (В ЗП покрай мере.)

Edited by _ХоЗаР_
Ну или добавить воду в буфер глубины :-)

Вы это, не пишите "Спасибо" на форуме, для этого есть кнопка справа снизу wink.gif

Share this post


Link to post
Share on other sites
Romann    488

Кто нибудь пробовал реализовать эти отражения на ЗП?

@Anonim, получилось сделать(ЗП - r2), но вот незадача - когда вертишь головой, по краям камеры возникают такие полосы/искажения:

Скрытый текст

92010da7a2f40391ddc88780059d2aaf1f0d9135dca7b1daaf1b1ffe2a7c23ee933cec071f0d9135492491c99f55e97c6db48e9f6e2a9b071f0d91351797e95672c4ccf455f92e242bd72d9b1f0d9135fda079f3c10d8a3bf6991a17750a966e1f0d9135505570dc4d90c26e6b78fb54290cd95d1f0d9135

Что с этим можно сделать?

Если использовать в шейдере такой код:

Скрытый текст

Вот тот, что закомментирован:
 


	float4 get_6x6_image(float2 tc)
	{
		half 	depth 	= tex2D(s_position, tc).z;
		half    depth_s = depth * (1 - step(0.001, abs(depth - 10000)));

		float4 sample;

		sample.xyz = tex2D(s_image, tc).xyz;

		float red_normal = tex2D(s_image, tc).x;

/*		float red_low1, red_high1, red_low2,  red_high2,  red_low3,  red_high3,  red_low4,  red_high4, 
			  red_low5, red_high5, red_low6,  red_high6,  red_low7,  red_high7,  red_low8,  red_high8, 
			  red_low9, red_high9, red_low10, red_high10, red_low11, red_high11, red_low12, red_high12;

			  red_low1 	= tex2D(s_image, float2(tc.x,tc.y-screen_res.w*1)).x;	red_high1 	= tex2D(s_image, float2(tc.x,tc.y+screen_res.w*1)).x;
			  red_low2 	= tex2D(s_image, float2(tc.x,tc.y-screen_res.w*4)).x;	red_high2 	= tex2D(s_image, float2(tc.x,tc.y+screen_res.w*4)).x;

			  red_low3 	= tex2D(s_image, float2(tc.x-screen_res.w*4,tc.y)).x;	red_high3 	= tex2D(s_image, float2(tc.x+screen_res.w*4,tc.y)).x;
			  red_low4 	= tex2D(s_image, float2(tc.x-screen_res.w*8,tc.y)).x;	red_high4 	= tex2D(s_image, float2(tc.x+screen_res.w*8,tc.y)).x;

			  red_low5 	= tex2D(s_image, float2(tc.x,tc.y-screen_res.w*8)).x;	red_high5 	= tex2D(s_image, float2(tc.x,tc.y+screen_res.w*8)).x;
			  red_low6 	= tex2D(s_image, float2(tc.x,tc.y-screen_res.w*12)).x;	red_high6 	= tex2D(s_image, float2(tc.x,tc.y+screen_res.w*12)).x;

			  red_low7 	= tex2D(s_image, float2(tc.x-screen_res.w*12,tc.y)).x;	red_high7 	= tex2D(s_image, float2(tc.x+screen_res.w*12,tc.y)).x;
			  red_low8 	= tex2D(s_image, float2(tc.x-screen_res.w*16,tc.y)).x;	red_high8 	= tex2D(s_image, float2(tc.x+screen_res.w*16,tc.y)).x;

			  red_low9 	= tex2D(s_image, float2(tc.x,tc.y-screen_res.w*16)).x;	red_high9 	= tex2D(s_image, float2(tc.x,tc.y+screen_res.w*16)).x;
			  red_low10 = tex2D(s_image, float2(tc.x,tc.y-screen_res.w*20)).x;	red_high10  = tex2D(s_image, float2(tc.x,tc.y+screen_res.w*20)).x;

			  red_low11 = tex2D(s_image, float2(tc.x-screen_res.w*1,tc.y)).x;	red_high11  = tex2D(s_image, float2(tc.x+screen_res.w*1,tc.y)).x;
			  red_low12 = tex2D(s_image, float2(tc.x-screen_res.w*20,tc.y)).x;	red_high12  = tex2D(s_image, float2(tc.x+screen_res.w*20,tc.y)).x;

		if(depth == depth_s)
		{sample.w = 0.012345;}

		if
		(
		    	(red_normal != red_low1)  && (red_normal != red_high1)
			&& 	(red_normal != red_low2)  && (red_normal != red_high2)

			&&	(red_normal != red_low3)  && (red_normal != red_high3)
			&& 	(red_normal != red_low4)  && (red_normal != red_high4)

			&&	(red_normal != red_low5)  && (red_normal != red_high5)
			&& 	(red_normal != red_low6)  && (red_normal != red_high6)

			&&	(red_normal != red_low7)  && (red_normal != red_high7)
			&& 	(red_normal != red_low8)  && (red_normal != red_high8)

			&&	(red_normal != red_low9)  && (red_normal != red_high9)
			&& 	(red_normal != red_low10) && (red_normal != red_high10)

			&&	(red_normal != red_low11) && (red_normal != red_high11)
			&& 	(red_normal != red_low12) && (red_normal != red_high12)
		)
		{ 
			sample.w 	= 1; 
		}
		else
		{
			sample.w 	= 0; 
		}
*/
			sample.w 	= 1;
		return sample;
	}

 

То этих полос нету, но тогда если на модель/геометрию не попадает свет - отражение бьётся, иногда в отражении просто дырки - а иногда всё побито...

10067dbc0f7877aa93ee5063ec46c6811f0d9135 -> 7c63856a605c851d03d9e2523af1cff61f0d9135

Edited by Romann

Машина: проц. Intel® Core™ i5-2430M CPU 2.40GHz ,ОЗУ 6,00Гб ,видео 2 Гб,Win7х64

 

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить?

                                                                                                                                                                          © Болотный Доктор

Share this post


Link to post
Share on other sites
Romann    488

Ну на r2 получилось сделать нормально на движке OXR_CoC, есть там конечно несколько проблемных моментов, но они прям в глаза не бросаются.


Машина: проц. Intel® Core™ i5-2430M CPU 2.40GHz ,ОЗУ 6,00Гб ,видео 2 Гб,Win7х64

 

Химера конечно сильный хищник, а все держится дома. Чего же ты пришел к ней домой и пытаешься её убить?

                                                                                                                                                                          © Болотный Доктор

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

AMK-Team.ru

×
×
  • Create New...