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

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

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

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

  • Полезно 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

andreyholkin.gif

rod_cccp.gif

 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
В 04.10.2019 в 00:52, Expropriator сказал:

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

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

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

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

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

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

Изменено пользователем Romann
 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

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

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

Изменено пользователем Zagolski
  • Нравится 2
  • Согласен 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
6 часов назад, Zagolski сказал:

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

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

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

6 ГБ ОЗУ DDR3 1066 мГц (Разносорт)

Процессор Intel Xeon E5420 4/4 2.4 ГГц

Видеокарта Gigabyte GeForce GT 240 512 МБ GDDR5 (Samsung) DirectX v10.1

 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

@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
 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

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

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Мать: ASRock X470 Master SLI. Процессор: AMD Ryzen 9 3900X 12-Core(4200 MHz).
Память: Patriot Memory 3200 C16 Series. DDR4-3200(1600МГц), 16Гбх2(32Гб).
Видео: GeForce GTX 1060 6GB. Блок питания: CoolerMaster 750 Вт. Корпус: Zalman i3 Edge.

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

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • Недавно просматривали   0 пользователей

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


AMK-Team.ru

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