Перейти к контенту

Рекомендуемые сообщения

В 04.10.2019 в 00:52, Expropriator сказал:

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

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

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

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

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

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

Изменено пользователем Romann
Ссылка на комментарий

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

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

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

Изменено пользователем Zagolski
  • Нравится 2
  • Согласен 1
Ссылка на комментарий
6 часов назад, Zagolski сказал:

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

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

Изменено пользователем _ХоЗаР_
Ну или добавить воду в буфер глубины :-)
Ссылка на комментарий

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

@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

Изменено пользователем Romann
Ссылка на комментарий

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

Ссылка на комментарий
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.

×
×
  • Создать...